{"version":3,"sources":["../node_modules/react/index.js","../node_modules/prop-types/index.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/regenerator/index.js","../node_modules/@progress/kendo-react-common/dist/es/classNames.js","../node_modules/@progress/kendo-react-common/dist/es/guid.js","../node_modules/@progress/kendo-react-common/dist/es/keys.js","../node_modules/@progress/kendo-react-common/dist/es/noop.js","../node_modules/@progress/kendo-react-common/dist/es/FloatingLabel.js","../node_modules/@progress/kendo-react-common/dist/es/events/dispatchEvent.js","../node_modules/@progress/kendo-react-common/dist/es/canUseDOM.js","../node_modules/@telerik/kendo-draggable/dist/es/main.js","../node_modules/@progress/kendo-react-common/dist/es/Draggable.js","../node_modules/@progress/kendo-react-common/dist/es/getter.js","../node_modules/@progress/kendo-react-common/dist/es/setter.js","../node_modules/@progress/kendo-react-common/dist/es/getTabIndex.js","../node_modules/@progress/kendo-react-common/dist/es/main.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.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/error-details.js","../node_modules/@telerik/kendo-intl/dist/es/errors.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/cldr/date-format-names.js","../node_modules/@telerik/kendo-intl/dist/es/common/constants.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/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/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/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/Intl/IntlContext.js","../node_modules/@progress/kendo-react-intl/dist/es/Intl/IntlProvider.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/Localization/LocalizationContext.js","../node_modules/@progress/kendo-react-intl/dist/es/Localization/LocalizationProvider.js","../node_modules/@progress/kendo-react-intl/dist/es/intlUtils.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-intl/dist/es/main.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/tslib/tslib.es6.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/utils/batch.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../node_modules/react-redux/es/components/connectAdvanced.js","../node_modules/react-redux/es/utils/shallowEqual.js","../node_modules/react-redux/es/connect/wrapMapToProps.js","../node_modules/react-redux/es/connect/mapDispatchToProps.js","../node_modules/react-redux/es/connect/mapStateToProps.js","../node_modules/react-redux/es/connect/mergeProps.js","../node_modules/react-redux/es/connect/selectorFactory.js","../node_modules/react-redux/es/connect/connect.js","../node_modules/react-redux/es/hooks/useReduxContext.js","../node_modules/react-redux/es/hooks/useStore.js","../node_modules/react-redux/es/hooks/useDispatch.js","../node_modules/react-redux/es/hooks/useSelector.js","../node_modules/react-redux/es/index.js","../node_modules/@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/add-scroll.js","../node_modules/@progress/kendo-popup-common/dist/es/apply-location-offset.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/bounding-offset.js","../node_modules/@progress/kendo-popup-common/dist/es/offset-parent.js","../node_modules/@progress/kendo-popup-common/dist/es/is-body-offset.js","../node_modules/@progress/kendo-popup-common/dist/es/offset.js","../node_modules/@progress/kendo-popup-common/dist/es/parents.js","../node_modules/@progress/kendo-popup-common/dist/es/scroll-position.js","../node_modules/@progress/kendo-popup-common/dist/es/element-scroll-position.js","../node_modules/@progress/kendo-popup-common/dist/es/position.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-with-scroll.js","../node_modules/@progress/kendo-popup-common/dist/es/remove-scroll.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/siblings.js","../node_modules/@progress/kendo-popup-common/dist/es/sibling-container.js","../node_modules/@progress/kendo-popup-common/dist/es/main.js","../node_modules/libphonenumber-js/es6/tools/semver-compare.js","../node_modules/libphonenumber-js/es6/metadata.js","../node_modules/react-dom/index.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-router/esm/react-router.js","../node_modules/rxjs/_esm5/internal/util/noop.js","../node_modules/rxjs/_esm5/internal/util/pipe.js","../node_modules/rxjs/_esm5/internal/Observable.js","../node_modules/rxjs/_esm5/internal/util/toSubscriber.js","../node_modules/rxjs/_esm5/internal/util/canReportError.js","../node_modules/rxjs/_esm5/internal/Subscriber.js","../node_modules/rxjs/_esm5/internal/util/isArray.js","../node_modules/rxjs/_esm5/internal/util/UnsubscriptionError.js","../node_modules/rxjs/_esm5/internal/Subscription.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@progress/kendo-react-animation/node_modules/@progress/kendo-react-common/dist/es/classNames.js","../node_modules/@progress/kendo-react-animation/node_modules/@progress/kendo-react-common/dist/es/noop.js","../node_modules/@progress/kendo-react-animation/node_modules/@progress/kendo-react-common/dist/es/FloatingLabel.js","../node_modules/@progress/kendo-react-animation/node_modules/@progress/kendo-react-common/dist/es/serverRendering.js","../node_modules/@progress/kendo-react-animation/node_modules/@telerik/kendo-draggable/dist/es/main.js","../node_modules/@progress/kendo-react-animation/node_modules/@progress/kendo-react-common/dist/es/Draggable.js","../node_modules/@progress/kendo-react-animation/node_modules/@progress/kendo-react-common/dist/es/getter.js","../node_modules/@progress/kendo-react-animation/node_modules/@progress/kendo-react-common/dist/es/setter.js","../node_modules/@progress/kendo-react-animation/dist/es/util.js","../node_modules/@progress/kendo-react-animation/dist/es/AnimationChild.js","../node_modules/@progress/kendo-react-animation/dist/es/Animation.js","../node_modules/@progress/kendo-react-animation/dist/es/Fade.js","../node_modules/@progress/kendo-react-animation/dist/es/Expand.js","../node_modules/@progress/kendo-react-animation/dist/es/Push.js","../node_modules/@progress/kendo-react-animation/dist/es/Slide.js","../node_modules/@progress/kendo-react-animation/dist/es/Zoom.js","../node_modules/@progress/kendo-react-animation/dist/es/Reveal.js","../node_modules/@progress/kendo-react-popup/node_modules/@progress/kendo-react-common/dist/es/classNames.js","../node_modules/@progress/kendo-react-popup/node_modules/@progress/kendo-react-common/dist/es/FloatingLabel.js","../node_modules/@progress/kendo-react-popup/node_modules/@progress/kendo-react-common/dist/es/serverRendering.js","../node_modules/@progress/kendo-react-popup/node_modules/@telerik/kendo-draggable/dist/es/main.js","../node_modules/@progress/kendo-react-popup/node_modules/@progress/kendo-react-common/dist/es/Draggable.js","../node_modules/@progress/kendo-react-popup/node_modules/@progress/kendo-react-common/dist/es/getter.js","../node_modules/@progress/kendo-react-popup/node_modules/@progress/kendo-react-common/dist/es/setter.js","../node_modules/@progress/kendo-react-popup/dist/es/util.js","../node_modules/@progress/kendo-react-popup/dist/es/services/alignService.js","../node_modules/@progress/kendo-react-popup/dist/es/services/domService.js","../node_modules/@progress/kendo-react-popup/dist/es/services/positionService.js","../node_modules/@progress/kendo-react-popup/dist/es/Popup.js","../node_modules/@progress/kendo-react-popup/dist/es/main.js","../node_modules/rxjs/_esm5/internal/config.js","../node_modules/axios/lib/utils.js","../node_modules/@progress/kendo-react-inputs/node_modules/@progress/kendo-react-common/dist/es/classNames.js","../node_modules/@progress/kendo-react-inputs/node_modules/@progress/kendo-react-common/dist/es/guid.js","../node_modules/@progress/kendo-react-inputs/node_modules/@progress/kendo-react-common/dist/es/keys.js","../node_modules/@progress/kendo-react-inputs/node_modules/@progress/kendo-react-common/dist/es/noop.js","../node_modules/@progress/kendo-react-inputs/node_modules/@progress/kendo-react-common/dist/es/FloatingLabel.js","../node_modules/@progress/kendo-react-inputs/node_modules/@progress/kendo-react-common/dist/es/events/dispatchEvent.js","../node_modules/@progress/kendo-react-inputs/node_modules/@progress/kendo-react-common/dist/es/serverRendering.js","../node_modules/@progress/kendo-react-inputs/node_modules/@telerik/kendo-draggable/dist/es/main.js","../node_modules/@progress/kendo-react-inputs/node_modules/@progress/kendo-react-common/dist/es/Draggable.js","../node_modules/@progress/kendo-react-inputs/node_modules/@progress/kendo-react-common/dist/es/getter.js","../node_modules/@progress/kendo-react-inputs/node_modules/@progress/kendo-react-common/dist/es/setter.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/utils/misc.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/observers-mixin.js","../node_modules/@progress/kendo-drawing/dist/es/common/animation-frame.js","../node_modules/@progress/kendo-drawing/dist/es/common/class.js","../node_modules/@progress/kendo-drawing/dist/es/common/html-encode.js","../node_modules/@progress/kendo-drawing/dist/es/common/observable.js","../node_modules/@progress/kendo-drawing/dist/es/common/support.js","../node_modules/@progress/kendo-drawing/dist/es/common/throttle.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-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/defined.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-base64.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/merge-sort.js","../node_modules/@progress/kendo-drawing/dist/es/util/rad.js","../node_modules/@progress/kendo-drawing/dist/es/util/round.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-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/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-drawing/dist/es/core/options-store.js","../node_modules/@progress/kendo-drawing/dist/es/accessors/define-accessors.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/matrix.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-drawing/dist/es/geometry/transformation.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/transform.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/element.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/ellipse-extreme-angles.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/circle.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/accessors/define-geometry-accessors.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/circle.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/close.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/constants.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/close-or-less.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/accessors/define-point-accessors.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/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/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/multi-path.js","../node_modules/@progress/kendo-drawing/dist/es/parsing/shape-map.js","../node_modules/@progress/kendo-drawing/dist/es/parsing/path-parser.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/path.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/arc.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/text.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/image.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/alignment/translate-to-point.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/shapes/rect.js","../node_modules/@progress/kendo-drawing/dist/es/gradients/stops-array.js","../node_modules/@progress/kendo-drawing/dist/es/accessors/define-options-accessors.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-drawing/dist/es/animations/easing-functions.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-drawing/dist/es/util/limit-value.js","../node_modules/@progress/kendo-drawing/dist/es/core/surface-factory.js","../node_modules/@progress/kendo-drawing/dist/es/common/log-to-console.js","../node_modules/@progress/kendo-drawing/dist/es/core/surface.js","../node_modules/@progress/kendo-drawing/dist/es/util/event-element.js","../node_modules/@progress/kendo-drawing/dist/es/util/element-offset.js","../node_modules/@progress/kendo-drawing/dist/es/util/event-coordinates.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-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/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/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/surface.js","../node_modules/@progress/kendo-drawing/dist/es/svg/group-node.js","../node_modules/@progress/kendo-drawing/dist/es/core/constants.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/rect-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/image-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/text-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/multi-path-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/node-map.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/utils/render-path.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/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/surface.js","../node_modules/@progress/kendo-drawing/dist/es/util/promise-all.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/rect-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/image-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/text-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/multi-path-node.js","../node_modules/@progress/kendo-drawing/dist/es/pdf/utils.js","../node_modules/@progress/kendo-drawing/dist/es/pdf/ttf.js","../node_modules/@progress/kendo-drawing/dist/es/pdf/deflate.js","../node_modules/@progress/kendo-drawing/dist/es/pdf/core.js","../node_modules/@progress/kendo-drawing/dist/es/html/core.js","../node_modules/@progress/kendo-drawing/dist/es/common/template.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/utils/color-parser.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/utils/color-cache.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/HexInput.js","../node_modules/@progress/kendo-react-inputs/dist/es/messages/index.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/ColorInput.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/ColorGradient.js","../node_modules/@progress/kendo-react-inputs/node_modules/@progress/kendo-react-common/dist/es/focus.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/utils/color-palette.service.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/models/palette-presets.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/ColorPalette.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/Picker.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/ColorPicker.js","../node_modules/@progress/kendo-react-inputs/node_modules/@progress/kendo-react-common/dist/es/hooks.js","../node_modules/@progress/kendo-react-inputs/dist/es/input/Input.js","../node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/parsing/result.js","../node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/parsing/stream.js","../node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/parsing/parsers.js","../node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/parsing/combinators.js","../node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/masking.service.js","../node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/utils.js","../node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/MaskedTextBox.js","../node_modules/@progress/kendo-react-inputs/dist/es/numerictextbox/NumericTextBox.js","../node_modules/@progress/kendo-react-inputs/dist/es/slider/SliderLabel.js","../node_modules/@progress/kendo-react-inputs/dist/es/slider/Slider.js","../node_modules/@progress/kendo-react-inputs/dist/es/switch/Switch.js","../node_modules/@progress/kendo-react-inputs/dist/es/main.js","../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../node_modules/@progress/kendo-react-upload/node_modules/axios/lib/utils.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/history/esm/history.js","../node_modules/rxjs/_esm5/internal/symbol/observable.js","../node_modules/invariant/browser.js","../node_modules/rxjs/_esm5/internal/util/hostReportError.js","../node_modules/rxjs/_esm5/internal/util/subscribeToResult.js","../node_modules/rxjs/_esm5/internal/InnerSubscriber.js","../node_modules/rxjs/_esm5/internal/symbol/iterator.js","../node_modules/rxjs/_esm5/internal/OuterSubscriber.js","../node_modules/react-transition-group/index.js","../node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js","../node_modules/react-promise-tracker/lib/index.js","../node_modules/rxjs/_esm5/internal/scheduled/scheduleArray.js","../node_modules/@progress/kendo-react-dropdowns/node_modules/@progress/kendo-react-common/dist/es/classNames.js","../node_modules/@progress/kendo-react-dropdowns/node_modules/@progress/kendo-react-common/dist/es/guid.js","../node_modules/@progress/kendo-react-dropdowns/node_modules/@progress/kendo-react-common/dist/es/keys.js","../node_modules/@progress/kendo-react-dropdowns/node_modules/@progress/kendo-react-common/dist/es/FloatingLabel.js","../node_modules/@progress/kendo-react-dropdowns/node_modules/@progress/kendo-react-common/dist/es/serverRendering.js","../node_modules/@progress/kendo-react-dropdowns/node_modules/@telerik/kendo-draggable/dist/es/main.js","../node_modules/@progress/kendo-react-dropdowns/node_modules/@progress/kendo-react-common/dist/es/Draggable.js","../node_modules/@progress/kendo-react-dropdowns/node_modules/@progress/kendo-react-common/dist/es/getter.js","../node_modules/@progress/kendo-react-dropdowns/node_modules/@progress/kendo-react-common/dist/es/setter.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/messages/index.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/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-dropdowns/dist/es/common/DropDownBase.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/DropDownList/DropDownList.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/ClearButton.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/SearchBar.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/settings.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/ComboBox/ComboBox.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/AutoComplete/AutoComplete.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/MultiSelect/TagList.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/MultiSelect/MultiSelect.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/main.js","../node_modules/libphonenumber-js/metadata.min.json.js","../node_modules/libphonenumber-js/min/metadata.js","../node_modules/redux/es/redux.js","../node_modules/rxjs/_esm5/internal/Observer.js","../node_modules/@progress/kendo-react-form/dist/es/FormContext.js","../node_modules/@progress/kendo-react-form/dist/es/Field.js","../node_modules/@progress/kendo-react-form/node_modules/@progress/kendo-react-common/dist/es/classNames.js","../node_modules/@progress/kendo-react-form/node_modules/@progress/kendo-react-common/dist/es/guid.js","../node_modules/@progress/kendo-react-form/node_modules/@progress/kendo-react-common/dist/es/canUseDOM.js","../node_modules/@progress/kendo-react-form/node_modules/@telerik/kendo-draggable/dist/es/main.js","../node_modules/@progress/kendo-react-form/node_modules/@progress/kendo-react-common/dist/es/Draggable.js","../node_modules/@progress/kendo-react-form/node_modules/@progress/kendo-react-common/dist/es/constants/index.js","../node_modules/@progress/kendo-react-form/node_modules/@progress/kendo-react-common/dist/es/fieldList.js","../node_modules/@progress/kendo-react-form/node_modules/@progress/kendo-react-common/dist/es/getter.js","../node_modules/@progress/kendo-react-form/node_modules/@progress/kendo-react-common/dist/es/setter.js","../node_modules/@progress/kendo-react-form/node_modules/@progress/kendo-react-common/dist/es/clone.js","../node_modules/@progress/kendo-react-form/node_modules/@progress/kendo-react-common/dist/es/getTabIndex.js","../node_modules/@progress/kendo-react-form/node_modules/@progress/kendo-react-common/dist/es/icons/constants.js","../node_modules/@progress/kendo-react-form/node_modules/@progress/kendo-react-common/dist/es/icons/Icon.js","../node_modules/@progress/kendo-react-form/node_modules/@progress/kendo-react-common/dist/es/icons/SvgIcon.js","../node_modules/@progress/kendo-react-form/dist/es/Form.js","../node_modules/@progress/kendo-react-form/dist/es/FormElement.js","../node_modules/@progress/kendo-react-form/dist/es/main.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/rxjs/_esm5/internal/util/isFunction.js","../node_modules/@progress/kendo-react-labels/node_modules/@progress/kendo-react-common/dist/es/classNames.js","../node_modules/@progress/kendo-react-labels/node_modules/@progress/kendo-react-common/dist/es/canUseDOM.js","../node_modules/@progress/kendo-react-labels/node_modules/@telerik/kendo-draggable/dist/es/main.js","../node_modules/@progress/kendo-react-labels/node_modules/@progress/kendo-react-common/dist/es/Draggable.js","../node_modules/@progress/kendo-react-labels/node_modules/@progress/kendo-react-common/dist/es/getter.js","../node_modules/@progress/kendo-react-labels/node_modules/@progress/kendo-react-common/dist/es/getTabIndex.js","../node_modules/@progress/kendo-react-labels/node_modules/@progress/kendo-react-common/dist/es/icons/constants.js","../node_modules/@progress/kendo-react-labels/node_modules/@progress/kendo-react-common/dist/es/icons/Icon.js","../node_modules/@progress/kendo-react-labels/node_modules/@progress/kendo-react-common/dist/es/icons/SvgIcon.js","../node_modules/@progress/kendo-react-labels/dist/es/messages/index.js","../node_modules/@progress/kendo-react-labels/dist/es/Label.js","../node_modules/@progress/kendo-react-labels/dist/es/Error.js","../node_modules/@progress/kendo-react-labels/dist/es/Hint.js","../node_modules/@progress/kendo-react-labels/dist/es/FloatingLabel.js","../node_modules/@progress/kendo-react-labels/dist/es/main.js","../node_modules/classnames/index.js","../node_modules/react-is/index.js","../node_modules/rxjs/_esm5/internal/util/isObject.js","../node_modules/rxjs/_esm5/internal/util/isArrayLike.js","../node_modules/rxjs/_esm5/internal/util/subscribeToArray.js","../node_modules/rxjs/_esm5/internal/util/isPromise.js","../node_modules/rxjs/_esm5/internal/operators/map.js","../node_modules/react-dom/server.browser.js","../node_modules/react-text-mask/dist/reactTextMask.js","../node_modules/@progress/kendo-react-upload/dist/es/interfaces/UploadFileStatus.js","../node_modules/@progress/kendo-react-upload/dist/es/messages/index.js","../node_modules/@progress/kendo-react-upload/dist/es/utils/utils.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadListActionButton.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadListSingleItem.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadListMultiItem.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadListGroup.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadList.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadInput.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadAddButton.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadActionButtons.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadStatus.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadDropZone.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadUI.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadNavigation.js","../node_modules/@progress/kendo-react-upload/dist/es/utils/stateUtils.js","../node_modules/@progress/kendo-react-upload/dist/es/utils/connectionUtils.js","../node_modules/@progress/kendo-react-upload/dist/es/utils/validationUtils.js","../node_modules/@progress/kendo-react-upload/dist/es/Upload.js","../node_modules/@progress/kendo-react-upload/dist/es/main.js","../node_modules/react-toastify/node_modules/react-transition-group/esm/config.js","../node_modules/react-toastify/node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-toastify/node_modules/react-transition-group/esm/Transition.js","../node_modules/react-toastify/node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react-toastify/node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/react-toastify/node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/react-toastify/esm/react-toastify.js","../node_modules/rxjs/_esm5/internal/scheduled/scheduled.js","../node_modules/rxjs/_esm5/internal/util/isInteropObservable.js","../node_modules/rxjs/_esm5/internal/scheduled/scheduleObservable.js","../node_modules/rxjs/_esm5/internal/scheduled/schedulePromise.js","../node_modules/rxjs/_esm5/internal/util/isIterable.js","../node_modules/rxjs/_esm5/internal/scheduled/scheduleIterable.js","../node_modules/rxjs/_esm5/internal/observable/from.js","../node_modules/rxjs/_esm5/internal/util/subscribeTo.js","../node_modules/rxjs/_esm5/internal/util/subscribeToObservable.js","../node_modules/rxjs/_esm5/internal/util/subscribeToPromise.js","../node_modules/rxjs/_esm5/internal/util/subscribeToIterable.js","../node_modules/@progress/kendo-react-upload/node_modules/axios/index.js","../node_modules/moment/moment.js","../node_modules/object-assign/index.js","../node_modules/react-promise-tracker/lib/trackPromise.js","../node_modules/@progress/kendo-react-upload/node_modules/axios/lib/defaults.js","../node_modules/react-router-dom/esm/react-router-dom.js","../node_modules/symbol-observable/es/index.js","../node_modules/mini-create-react-context/dist/esm/index.js","../node_modules/react-router/node_modules/path-to-regexp/index.js","../node_modules/@progress/kendo-react-layout/dist/es/tabstrip/TabStripNavigationItem.js","../node_modules/@progress/kendo-react-layout/dist/es/tabstrip/TabStripNavigation.js","../node_modules/@progress/kendo-react-layout/node_modules/@progress/kendo-react-animation/dist/es/util.js","../node_modules/@progress/kendo-react-layout/node_modules/@progress/kendo-react-animation/dist/es/AnimationChild.js","../node_modules/@progress/kendo-react-layout/node_modules/@progress/kendo-react-animation/dist/es/Animation.js","../node_modules/@progress/kendo-react-layout/node_modules/@progress/kendo-react-animation/dist/es/Fade.js","../node_modules/@progress/kendo-react-layout/node_modules/@progress/kendo-react-animation/dist/es/Expand.js","../node_modules/@progress/kendo-react-layout/node_modules/@progress/kendo-react-animation/dist/es/Push.js","../node_modules/@progress/kendo-react-layout/node_modules/@progress/kendo-react-animation/dist/es/Slide.js","../node_modules/@progress/kendo-react-layout/node_modules/@progress/kendo-react-animation/dist/es/Zoom.js","../node_modules/@progress/kendo-react-layout/node_modules/@progress/kendo-react-animation/dist/es/Reveal.js","../node_modules/@progress/kendo-react-layout/dist/es/tabstrip/TabStripContent.js","../node_modules/@progress/kendo-react-layout/dist/es/tabstrip/TabStrip.js","../node_modules/@progress/kendo-react-layout/dist/es/tabstrip/TabStripTab.js","../node_modules/@progress/kendo-react-layout/dist/es/panelbar/PanelBarItem.js","../node_modules/@progress/kendo-react-layout/dist/es/panelbar/util.js","../node_modules/@progress/kendo-react-layout/dist/es/panelbar/services/navigationService.js","../node_modules/@progress/kendo-react-layout/dist/es/panelbar/services/selectionService.js","../node_modules/@progress/kendo-react-layout/dist/es/panelbar/PanelBar.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/utils/itemsIdsUtils.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/components/MenuItem.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/utils/prepareInputItemsForInternalWork.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/utils/getNewItemIdUponKeyboardNavigation.js","../node_modules/@progress/kendo-react-layout/node_modules/@progress/kendo-react-popup/dist/es/util.js","../node_modules/@progress/kendo-react-layout/node_modules/@progress/kendo-react-popup/dist/es/services/alignService.js","../node_modules/@progress/kendo-react-layout/node_modules/@progress/kendo-react-popup/dist/es/services/domService.js","../node_modules/@progress/kendo-react-layout/node_modules/@progress/kendo-react-popup/dist/es/services/positionService.js","../node_modules/@progress/kendo-react-layout/node_modules/@progress/kendo-react-popup/dist/es/Popup.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/components/MenuItemLink.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/consts.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/utils/misc.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/components/MenuItemArrow.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/components/MenuItemInternal.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/components/MenuItemInternalsList.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/utils/DirectionHolder.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/utils/MouseOverHandler.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/components/Menu.js","../node_modules/@progress/kendo-react-layout/dist/es/splitter/SplitterPane.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/utils/hoverDelay.js","../node_modules/@progress/kendo-react-layout/dist/es/splitter/SplitterBar.js","../node_modules/@progress/kendo-react-layout/dist/es/splitter/Splitter.js","../node_modules/@progress/kendo-react-layout/dist/es/main.js","../node_modules/mini-create-react-context/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/mini-create-react-context/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/webpack/buildin/global.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/is-buffer/index.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/defaults.js","../node_modules/process/browser.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/createError.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/cancel/Cancel.js","../node_modules/react-promise-tracker/lib/constants.js","../node_modules/react-promise-tracker/lib/setupConfig.js","../node_modules/@progress/kendo-react-upload/node_modules/axios/lib/helpers/bind.js","../node_modules/@progress/kendo-react-upload/node_modules/axios/lib/adapters/xhr.js","../node_modules/@progress/kendo-react-upload/node_modules/axios/lib/core/createError.js","../node_modules/@progress/kendo-react-upload/node_modules/axios/lib/cancel/isCancel.js","../node_modules/@progress/kendo-react-upload/node_modules/axios/lib/cancel/Cancel.js","../node_modules/react-transition-group/Transition.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/react-transition-group/utils/PropTypes.js","../node_modules/react-transition-group/TransitionGroup.js","../node_modules/symbol-observable/es/ponyfill.js","../node_modules/axios/index.js","../node_modules/pako/dist/pako_deflate.js","../node_modules/redux-thunk/es/index.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-react-common/dist/es/classNames.js","../node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-react-common/dist/es/guid.js","../node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-react-common/dist/es/keys.js","../node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-react-common/dist/es/noop.js","../node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-react-common/dist/es/FloatingLabel.js","../node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-react-common/dist/es/serverRendering.js","../node_modules/@progress/kendo-react-dateinputs/node_modules/@telerik/kendo-draggable/dist/es/main.js","../node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-react-common/dist/es/Draggable.js","../node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-react-common/dist/es/getter.js","../node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-react-common/dist/es/setter.js","../node_modules/@progress/kendo-date-math/dist/es/clone-date.js","../node_modules/@progress/kendo-date-math/dist/es/direction.enum.js","../node_modules/@progress/kendo-date-math/dist/es/adjust-dst.js","../node_modules/@progress/kendo-date-math/dist/es/add-days.js","../node_modules/@progress/kendo-date-math/dist/es/create-date.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-date-math/dist/es/add-weeks.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/day-of-week.js","../node_modules/@progress/kendo-date-math/dist/es/day.enum.js","../node_modules/@progress/kendo-date-math/dist/es/duration-in-months.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/virtualization/Virtualization.js","../node_modules/@progress/kendo-date-math/dist/es/duration-in-years.js","../node_modules/@progress/kendo-date-math/dist/es/normalize-year.js","../node_modules/@progress/kendo-date-math/dist/es/first-year-of-decade.js","../node_modules/@progress/kendo-date-math/dist/es/duration-in-decades.js","../node_modules/@progress/kendo-date-math/dist/es/first-decade-of-century.js","../node_modules/@progress/kendo-date-math/dist/es/duration-in-centuries.js","../node_modules/@progress/kendo-date-math/dist/es/get-date.js","../node_modules/@progress/kendo-date-math/dist/es/first-day-of-month.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/is-equal.js","../node_modules/@progress/kendo-date-math/dist/es/is-equal-date.js","../node_modules/@progress/kendo-date-math/dist/es/last-month-of-year.js","../node_modules/@progress/kendo-date-math/dist/es/last-year-of-decade.js","../node_modules/@progress/kendo-date-math/dist/es/last-decade-of-century.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/ms-per-day.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-react-dateinputs/dist/es/calendar/models/NavigationAction.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/models/CalendarViewEnum.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/models/SelectionRange.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/CenturyViewService.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-react-dateinputs/dist/es/utils.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/DOMService.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/services/WeekNamesService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/View.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/CalendarHeaderTitle.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/messages/index.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/defaults.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/Header.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/components/Navigation.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/Calendar.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/timepicker/models/TimePart.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/utils.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/dateinput/DateInput.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/datepicker/DatePicker.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/services/DayPeriodService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/services/HoursService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/TimeList.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/services/DOMService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/services/MinutesService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/services/SecondsService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/TimePart.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/TimeSelector.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/TimePicker.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/HorizontalViewList.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/MultiViewCalendar.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/daterangepicker/DateRangePicker.js","../node_modules/@progress/kendo-react-buttons/node_modules/@progress/kendo-react-common/dist/es/classNames.js","../node_modules/@progress/kendo-react-buttons/node_modules/@progress/kendo-react-common/dist/es/guid.js","../node_modules/@progress/kendo-react-buttons/node_modules/@progress/kendo-react-common/dist/es/keys.js","../node_modules/@progress/kendo-react-buttons/node_modules/@progress/kendo-react-common/dist/es/FloatingLabel.js","../node_modules/@progress/kendo-react-buttons/node_modules/@progress/kendo-react-common/dist/es/events/dispatchEvent.js","../node_modules/@progress/kendo-react-buttons/node_modules/@progress/kendo-react-common/dist/es/serverRendering.js","../node_modules/@progress/kendo-react-buttons/node_modules/@telerik/kendo-draggable/dist/es/main.js","../node_modules/@progress/kendo-react-buttons/node_modules/@progress/kendo-react-common/dist/es/Draggable.js","../node_modules/@progress/kendo-react-buttons/node_modules/@progress/kendo-react-common/dist/es/getter.js","../node_modules/@progress/kendo-react-buttons/node_modules/@progress/kendo-react-common/dist/es/setter.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-buttons/dist/es/ButtonGroup.js","../node_modules/@progress/kendo-react-buttons/dist/es/ListButton/ButtonItem.js","../node_modules/@progress/kendo-react-buttons/dist/es/ListButton/SplitButtonItem.js","../node_modules/@progress/kendo-react-buttons/dist/es/ListButton/utils/navigation.js","../node_modules/@progress/kendo-react-buttons/dist/es/ListButton/utils/popup.js","../node_modules/@progress/kendo-react-buttons/dist/es/ListButton/SplitButton.js","../node_modules/@progress/kendo-react-buttons/dist/es/ListButton/DropDownButtonItem.js","../node_modules/@progress/kendo-react-buttons/dist/es/ListButton/DropDownButton.js","../node_modules/@progress/kendo-react-buttons/dist/es/toolbar/tools/ToolbarItem.js","../node_modules/@progress/kendo-react-buttons/dist/es/toolbar/tools/ToolbarButton.js","../node_modules/@progress/kendo-react-buttons/dist/es/toolbar/Toolbar.js","../node_modules/@progress/kendo-react-buttons/dist/es/toolbar/tools/ToolbarSeparator.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/datetimepicker/DateTimeSelector.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/datetimepicker/DateTimePicker.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/main.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/node_modules/@progress/kendo-react-common/dist/es/classNames.js","../node_modules/@progress/kendo-react-dialogs/node_modules/@progress/kendo-react-common/dist/es/keys.js","../node_modules/@progress/kendo-react-dialogs/node_modules/@progress/kendo-react-common/dist/es/events/dispatchEvent.js","../node_modules/@progress/kendo-react-dialogs/node_modules/@progress/kendo-react-common/dist/es/canUseDOM.js","../node_modules/@progress/kendo-react-dialogs/node_modules/@telerik/kendo-draggable/dist/es/main.js","../node_modules/@progress/kendo-react-dialogs/node_modules/@progress/kendo-react-common/dist/es/Draggable.js","../node_modules/@progress/kendo-react-dialogs/node_modules/@progress/kendo-react-common/dist/es/getter.js","../node_modules/@progress/kendo-react-dialogs/node_modules/@progress/kendo-react-common/dist/es/getTabIndex.js","../node_modules/@progress/kendo-react-dialogs/node_modules/@progress/kendo-react-common/dist/es/icons/constants.js","../node_modules/@progress/kendo-react-dialogs/node_modules/@progress/kendo-react-common/dist/es/icons/Icon.js","../node_modules/@progress/kendo-react-dialogs/node_modules/@progress/kendo-react-common/dist/es/icons/SvgIcon.js","../node_modules/@progress/kendo-react-dialogs/dist/es/Dialog.js","../node_modules/@progress/kendo-react-dialogs/dist/es/StageEnum.js","../node_modules/@progress/kendo-react-dialogs/node_modules/@progress/kendo-react-common/dist/es/guid.js","../node_modules/@progress/kendo-react-dialogs/dist/es/WindowTitlebar.js","../node_modules/@progress/kendo-react-dialogs/dist/es/WindowResizeHandlers.js","../node_modules/@progress/kendo-react-dialogs/dist/es/MiddleLayerOptimization.js","../node_modules/@progress/kendo-react-dialogs/dist/es/Window.js","../node_modules/@progress/kendo-react-dialogs/dist/es/main.js","../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/filter-serialization.common.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/mvc/deserialization.js","../node_modules/@progress/kendo-data-query/dist/es/transducers.js","../node_modules/@progress/kendo-data-query/dist/es/filtering/filter.operators.js","../node_modules/@progress/kendo-data-query/dist/es/grouping/aggregate.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/main.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/webpack/buildin/harmony-module.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/core/enhanceError.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/react-promise-tracker/lib/tinyEmmiter.js","../node_modules/react-promise-tracker/lib/trackerHoc.js","../node_modules/react-promise-tracker/lib/trackerHook.js","../node_modules/@progress/kendo-react-upload/node_modules/axios/lib/axios.js","../node_modules/@progress/kendo-react-upload/node_modules/axios/lib/core/Axios.js","../node_modules/@progress/kendo-react-upload/node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/@progress/kendo-react-upload/node_modules/axios/lib/core/settle.js","../node_modules/@progress/kendo-react-upload/node_modules/axios/lib/core/enhanceError.js","../node_modules/@progress/kendo-react-upload/node_modules/axios/lib/helpers/buildURL.js","../node_modules/@progress/kendo-react-upload/node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/@progress/kendo-react-upload/node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/@progress/kendo-react-upload/node_modules/axios/lib/helpers/cookies.js","../node_modules/@progress/kendo-react-upload/node_modules/axios/lib/core/InterceptorManager.js","../node_modules/@progress/kendo-react-upload/node_modules/axios/lib/core/dispatchRequest.js","../node_modules/@progress/kendo-react-upload/node_modules/axios/lib/core/transformData.js","../node_modules/@progress/kendo-react-upload/node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/@progress/kendo-react-upload/node_modules/axios/lib/helpers/combineURLs.js","../node_modules/@progress/kendo-react-upload/node_modules/axios/lib/cancel/CancelToken.js","../node_modules/@progress/kendo-react-upload/node_modules/axios/lib/helpers/spread.js","../node_modules/webpack/buildin/module.js","../node_modules/exif-js/exif.js","../node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","../node_modules/react-transition-group/CSSTransition.js","../node_modules/dom-helpers/class/addClass.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/dom-helpers/class/hasClass.js","../node_modules/dom-helpers/class/removeClass.js","../node_modules/react-transition-group/ReplaceTransition.js","../node_modules/react-transition-group/utils/ChildMapping.js","../node_modules/react-router/node_modules/isarray/index.js","../node_modules/rxjs/_esm5/internal/operators/takeUntil.js","../node_modules/rxjs/_esm5/internal/operators/switchMap.js","../node_modules/rxjs/_esm5/internal/operators/mergeMap.js","../node_modules/rxjs/_esm5/internal/operators/catchError.js","../node_modules/rxjs/_esm5/internal/observable/empty.js","../node_modules/libphonenumber-js/min/exports/getCountryCallingCode.js","../node_modules/rxjs/_esm5/internal/operators/distinctUntilChanged.js","../node_modules/libphonenumber-js/es6/constants.js","../node_modules/libphonenumber-js/es6/ParseError.js","../node_modules/libphonenumber-js/es6/helpers/extension/createExtensionPattern.js","../node_modules/libphonenumber-js/es6/helpers/isViablePhoneNumber.js","../node_modules/libphonenumber-js/es6/helpers/extension/extractExtension.js","../node_modules/libphonenumber-js/es6/helpers/parseDigits.js","../node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.js","../node_modules/libphonenumber-js/es6/helpers/checkNumberLength.js","../node_modules/libphonenumber-js/es6/helpers/mergeArrays.js","../node_modules/libphonenumber-js/es6/isPossibleNumber_.js","../node_modules/libphonenumber-js/es6/helpers/RFC3966.js","../node_modules/libphonenumber-js/es6/helpers/matchesEntirely.js","../node_modules/libphonenumber-js/es6/helpers/getNumberType.js","../node_modules/libphonenumber-js/es6/helpers/formatNationalNumberUsingFormat.js","../node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.js","../node_modules/libphonenumber-js/es6/helpers/getIddPrefix.js","../node_modules/libphonenumber-js/es6/format_.js","../node_modules/libphonenumber-js/es6/PhoneNumber.js","../node_modules/libphonenumber-js/es6/validate_.js","../node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.js","../node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.js","../node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js","../node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.js","../node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js","../node_modules/libphonenumber-js/es6/helpers/getCountryByCallingCode.js","../node_modules/libphonenumber-js/es6/parse_.js","../node_modules/libphonenumber-js/es6/parsePhoneNumber_.js","../node_modules/libphonenumber-js/es6/parsePhoneNumber.js","../node_modules/libphonenumber-js/es6/parsePhoneNumberFromString_.js","../node_modules/libphonenumber-js/es6/parsePhoneNumberFromString.js","../node_modules/libphonenumber-js/min/exports/parsePhoneNumberFromString.js","../node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js","../node_modules/rxjs/_esm5/internal/scheduler/Action.js","../node_modules/rxjs/_esm5/internal/Scheduler.js","../node_modules/rxjs/_esm5/internal/scheduler/async.js","../node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js","../node_modules/rxjs/_esm5/internal/operators/debounceTime.js","../node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js","../node_modules/rxjs/_esm5/internal/SubjectSubscription.js","../node_modules/rxjs/_esm5/internal/Subject.js","../node_modules/rxjs/_esm5/internal/util/isScheduler.js","../node_modules/rxjs/_esm5/internal/observable/fromArray.js","../node_modules/rxjs/_esm5/internal/observable/of.js","../node_modules/libphonenumber-js/es6/getCountries.js","../node_modules/libphonenumber-js/min/exports/getCountries.js"],"names":["module","exports","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread2","target","i","arguments","length","source","forEach","key","getOwnPropertyDescriptors","defineProperties","defineProperty","_classCallCheck","instance","Constructor","TypeError","_defineProperties","props","descriptor","configurable","writable","_createClass","protoProps","staticProps","prototype","classNames","args","_i","arg","map","Array","isArray","idx","el","join","guid","random","id","Math","toString","Keys","backspace","tab","enter","shift","esc","space","pageUp","pageDown","end","home","left","up","right","down","delete","noop","__extends","_extendStatics","d","b","setPrototypeOf","__proto__","p","hasOwnProperty","__","this","constructor","create","_super","FloatingLabel","_this","state","focused","handleFocus","_","setState","handleBlur","render","_a","label","className","value","placeholder","valid","style","childClassNames","undefined","dir","onFocus","onBlur","children","htmlFor","propTypes","dispatchEvent","eventHandler","dispatchedEvent","eventData","eventBaseData","syntheticEvent","nativeEvent","call","assign","canUseDOM","Boolean","window","document","createElement","proxy","a","e","bind","event","callback","addEventListener","unbind","removeEventListener","preventDefault","touchRegExp","normalizeEvent","type","match","pageX","changedTouches","pageY","clientX","clientY","originalEvent","isTouch","offsetX","offsetY","ctrlKey","shiftKey","altKey","ref","this$1","press","drag","release","mouseOnly","_pressHandler","_dragHandler","_releaseHandler","_ignoreMouse","_mouseOnly","_touchstart","touches","_touchmove","_touchend","setTimeout","_restoreMouse","_mousedown","which","_mousemove","_mouseup","_pointerdown","isPrimary","button","_pointermove","_pointerup","supportPointerEvent","PointerEvent","bindTo","element","_element","_unbindFromCurrent","_bindToCurrent","_usePointers","destroy","default","Draggable","draggable","onPress","onDrag","onRelease","assingRef","componentDidMount","componentWillUnmount","only","isRequired","getterCache","setterCache","obj","getTabIndex","tabIndex","disabled","useDefaultTabIndexWhenDisabled","parsedTabIndex","parseInt","NaN","_getPrototypeOf","o","getPrototypeOf","_setPrototypeOf","_inherits","subClass","superClass","_typeof","Symbol","iterator","_possibleConstructorReturn","self","assertThisInitialized","en","name","identity","version","_number","_cldrVersion","language","territory","numbers","decimal","group","list","percentSign","plusSign","minusSign","exponential","superscriptingExponent","perMille","infinity","nan","timeSeparator","patterns","groupSize","scientific","percent","currency","currencies","BGN","displayName","symbol","EUR","USD","localeCurrency","accounting","calendar","gmtFormat","gmtZeroFormat","D","m","M","y","Y","F","g","G","t","T","s","u","dateTimeFormats","full","long","medium","short","availableFormats","Bh","Bhm","Bhms","E","EBhm","EBhms","Ed","Ehm","EHm","Ehms","EHms","Gy","GyMMM","GyMMMd","GyMMMEd","h","H","hm","Hm","hms","Hms","hmsv","Hmsv","hmv","Hmv","Md","MEd","MMM","MMMd","MMMEd","MMMMd","ms","yM","yMd","yMEd","yMMM","yMMMd","yMMMEd","yMMMM","yQQQ","yQQQQ","timeFormats","dateFormats","days","format","abbreviated","narrow","wide","months","quarters","dayPeriods","midnight","am","noon","pm","morning1","afternoon1","evening1","night1","eras","dateFields","era","year","quarter","month","week","day","weekday","dayperiod","hour","minute","second","zone","supplemental","likelySubtags","currencyData","region","US","_from","weekData","firstDay","weekendStart","weekendEnd","isString","formatRegExp","IntlError","message","Error","formatMessage","values","len","flattenValues","flatten","formattedMessage","replace","index","error","arr","reduce","concat","errors","prev","toIntlErrors","cldr","getLocaleInfo","locale","parts","split","suffixes","slice","fullName","localeFullName","info","script","indexOf","availableLocaleInfo","NoLocale","localeTerritory","likelyName","part","variant","splice","toUpperCase","territoryFromName","dateFormatNames","options","nameType","standAlone","lower","formatType","lowerNameType","formatNames","result","toLowerCase","lowerArray","field","lowerObject","parseRangeDate","Date","NoCurrency","NoCurrencyDisplay","NoSupplementalCurrency","NoCurrencyRegion","NoValidCurrency","GLOBAL_CURRENCIES","getCurrencyInfo","throwIfNoValid","currencyDisplayInfo","lengthComparer","territoryCurrencyCode","regionCurrencies","latestValidUntil","latestValidUntilRange","latestStillValid","latestStillValidDate","code","_tender","_to","validFrom","validTo","to","from","stillValidDate","regionCurrency","DAYS_OF_WEEK","NoWeekData","NoFirstDay","isNaN","formatCurrencySymbol","currencyDisplay","currencyInfo","groupInteger","number","start","decimalIndex","groupSizes","integerEnd","integer","substring","integerLength","newGroupSize","reverse","isCurrencyStyle","pad","digits","count","String","padString","round","precision","decimals","Number","toFixed","min","trailingZeroRegex","fractionOptions","currencyFractions","minimumFractionDigits","maximumFractionDigits","isCurrency","fractions","_digits","currencyFractionOptions","max","literalRegExp","trailingZerosRegExp","trailingPointRegExp","commaRegExp","roundNumber","formatOptions","zeroIndex","lastIndexOf","sharpIndex","hasZero","hasSharp","fraction","abs","trailingZeros","lastZero","trimRegex","RegExp","trimTrailingZeros","negative","placeholderIndex","index1","index2","applyCustomFormat","literals","replaceLiterals","ch","charAt","replaceStyleSymbols","lastZeroIndex","hasNegativeFormat","hasGroup","replacement","replacePlaceHolders","customNumberFormat","zeroFormat","isConstantFormat","constant","setValueSpecificFormat","quoteChar","literal","setFormatLiterals","setStyleOptions","setGroupOptions","setPlaceholderIndices","standardFormatRegExp","formatAndPrecision","exec","standardFormatOptions","formatNumber","isFinite","toExponential","minimumIntegerDigits","pattern","formattedValue","useGrouping","currencyUnitPattern","applyPattern","standardNumberFormat","isNumber","exponentRegExp","nonBreakingSpaceRegExp","cleanNegativePattern","cleanCurrencyNumber","displays","sort","currencyDisplays","display","includes","cleanNumber","formatString","LENGHT_DELTA","PENALTIES","VALUE_FORMAT_LENGTH","numeric","TIME_SPECIFIERS_REGEX","DATE_OPTIONS_MAP","specifier","getSpecifier","hour12","STAND_ALONE_SPECIFIERS","Q","specifiersRegex","resolvedFormats","getSpecifierRegex","skeletonSpecifiers","skeleton","current","character","findBestMatch","specifiers","bestMatches","specifiersLength","maxScore","MAX_VALUE","matches","currentFormat","score","delta","idx$1","bestMatch","matchSpecifier","skeletonFormat","timeStartIndex","search","dateSkeleton","substr","timeSkeleton","cacheFormat","datePattern","datetime","date","time","option","spcifier","repeat","skeletonFromOptions","dateNameType","formatLength","isFunction","fun","isDate","getTime","getMonth","DATE_FIELD_MAP","dateFormatRegExp","formatMonth","formatQuarter","floor","formatTimeZone","shortHours","optionalMinutes","separator","localizedName","zZeroOffset","offset","getTimezoneOffset","sign","hoursMinutes","minutes","formatDayOfWeek","localeInfo","firstDayIndex","formatDayOfWeekIndex","getDay","formatters","formatDate","convertTimeZone","fromOffset","toOffset","fromLocalOffset","offsetDate","toLocalOffset","getDate","L","getFullYear","getHours","k","K","getMinutes","getSeconds","S","getMilliseconds","z","Z","x","X","c","q","timeZoneOffsetRegExp","dateRegExp","offsetRegExp","numberRegExp","2","3","4","numberRegex","standardDateFormats","FORMATS_SEQUENCE","outOfRange","lookAhead","getNumber","size","regex","valueIdx","getIndexByName","names","nameLength","subValue","matchLength","matchIdx","checkLiteral","parseTimeZoneOffset","noSeparator","zLiteral","UTC","NoGMTInfo","calendarGmtFormats","hoursMatch","minutesMatch","hoursOffset","minutesOffset","parseMonth","parseDayOfWeek","dayOfWeek","parsers","parseExact","hours","seconds","milliseconds","pmHour","hasTime","setHours","adjustDST","setFullYear","createDate","parseMicrosoftDateFormat","tzoffset","parseMicrosoftDateOffset","parseDate","formats","parseValue","trim","parseFormats","defaultFormats","currentYear","periodFormats","parseFloat","shortFormat","invalid","NAME_TYPES","minLength","addLiteral","lastPart","isHour12","placeholderFormat","IntlService","parseNumber","isPercent","test","negativeSignIndex","isNegative","negativeCurrency","dateFieldName","NoDateFieldNames","fieldNameInfo","splitDateFormat","lastIndex","startsWith","patternLength","numberSymbols","IntlContext","IntlProvider","getIntlService","getChildContext","kendoIntlService","Provider","childContextTypes","LocalizationService","toLanguageString","defaultValue","LocalizationContext","LocalizationProvider","getLocalizationService","kendoLocalizationService","provideIntlService","component","context","provideLocalizationService","registerForIntl","ctx","contextTypes","registerForLocalization","asyncGeneratorStep","gen","resolve","reject","_next","_throw","done","Promise","then","_asyncToGenerator","fn","err","_assertThisInitialized","ReferenceError","_defineProperty","_assign","n","__makeTemplateObject","cooked","raw","_extends","_toConsumableArray","arr2","iter","ReactReduxContext","createContext","nullListeners","notify","createListenerCollection","batch","next","clear","listeners","get","subscribe","listener","isSubscribed","Subscription","store","parentSub","unsubscribe","handleChangeWrapper","_proto","addNestedSub","trySubscribe","notifyNestedSubs","onStateChange","tryUnsubscribe","_ref","contextValue","subscription","previousState","getState","Context","shape","func","dispatch","any","useIsomorphicLayoutEffect","EMPTY_ARRAY","NO_SUBSCRIPTION_ARRAY","storeStateUpdatesReducer","action","updateCount","payload","initStateUpdates","connectAdvanced","selectorFactory","_ref2","_ref2$getDisplayName","getDisplayName","_ref2$methodName","methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","shouldHandleStateChanges","_ref2$storeKey","storeKey","_ref2$withRef","withRef","_ref2$forwardRef","forwardRef","_ref2$context","connectOptions","WrappedComponent","wrappedComponentName","selectorFactoryOptions","pure","usePureOnlyMemo","ConnectFunction","_useMemo","forwardedRef","wrapperProps","propsContext","ContextToUse","Consumer","didStoreComeFromProps","didStoreComeFromContext","childPropsSelector","createChildSelector","_useMemo2","overriddenContextValue","_useReducer","previousStateUpdateResult","forceComponentUpdateDispatch","lastChildProps","lastWrapperProps","childPropsFromStoreUpdate","renderIsScheduled","actualChildProps","didUnsubscribe","lastThrownError","checkForUpdates","newChildProps","latestStoreState","renderedWrappedComponent","Connect","memo","forwarded","hasOwn","is","shallowEqual","objA","objB","keysA","keysB","wrapMapToPropsConstant","getConstant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","stateOrDispatch","ownProps","mapDispatchToProps","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergeProps","mergedProps","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","handleSubsequentCalls","nextState","nextOwnProps","propsChanged","stateChanged","nextStateProps","statePropsChanged","handleNewState","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","factories","strictEqual","_temp","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","_ref$selectorFactory","_ref3","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","createStoreHook","useReduxContext","useStore","createDispatchHook","refEquality","createSelectorHook","newBatch","anchorRect","anchorAlign","elementRect","elementAlign","margin","anchorHorizontal","horizontal","anchorVertical","vertical","elementHorizontal","elementVertical","horizontalMargin","verticalMargin","top","height","width","addScroll","rect","scroll","applyLocationOffset","location","isOffsetBody","ownerDocument","defaultView","documentElement","cachedWidth","scrollbarWidth","div","cssText","innerHTML","body","appendChild","offsetWidth","scrollWidth","removeChild","windowViewport","win","innerHeight","innerWidth","scrollHeight","clientHeight","getBoundingClientRect","viewport","bottom","offsetParent","position","rectOfHiddenElement","parentNode","until","scrollPosition","pageXOffset","scrollLeft","pageYOffset","scrollTop","parent","elementStyles","getComputedStyle","parentElement","useRelative","parentOffset","parentStyles","borderTopWidth","borderLeftWidth","offsetParentElement","parentScrollPosition","scale","ref$1","positionScale","removeScroll","fit","viewPortSize","output","anchorSize","anchorAlignPoint","elementAlignPoint","marginToAdd","isBeforeAnchor","collisions","viewPort","elementTop","elementLeft","elementHeight","elementWidth","viewPortHeight","viewPortWidth","isHorizontalFlip","collision","isVerticalFlip","flippedHorizontal","flippedVertical","flipped","flip","sibling","firstElementChild","nextElementSibling","siblingElements","parentElements","parents","anchor","containerElement","container","siblings","pa","pb","na","nb","CALLING_CODE_REG_EXP","Metadata","metadata","is_object","countries","type_of","validateMetadata","setVersion","countryCode","v1","v2","v3","nonGeographic","nonGeographical","country","getCountryMetadata","callingCode","getCountryCodesForCallingCode","countryCodes","countryCallingCodes","selectNumberingPlan","hasCountry","numberingPlan","NumberingPlan","hasCallingCode","getNumberingPlanMetadata","getCountryCodeForCallingCode","IDDPrefix","defaultIDDPrefix","nationalNumberPattern","possibleLengths","nationalPrefixForParsing","nationalPrefixTransformRule","leadingDigits","hasTypes","_type","ext","country_phone_code_to_countries","country_calling_codes","globalMetadataObject","_getFormats","getDefaultCountryMetadataForRegion","Format","_getNationalPrefixFormattingRule","_nationalPrefixForParsing","nationalPrefix","_getNationalPrefixIsOptionalWhenFormatting","types","_type2","getType","Type","_format","nationalPrefixFormattingRule","nationalPrefixIsOptionalWhenFormattingInNationalFormat","usesNationalPrefix","FIRST_GROUP_ONLY_PREFIX_PATTERN","getCountryCallingCode","countryCallingCode","isSupportedCountry","v4","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","console","_objectWithoutPropertiesLoose","excluded","sourceKeys","historyContext","createNamedContext","createNamedContext$1","Router","_React$Component","history","_isMounted","_pendingLocation","staticContext","unlisten","listen","computeRootMatch","pathname","path","url","params","isExact","Component","Lifecycle","onMount","componentDidUpdate","prevProps","onUpdate","onUnmount","cache","cacheCount","generatePath","generator","compile","compilePath","pretty","Redirect","computedMatch","_ref$push","method","prevLocation","cache$1","cacheCount$1","matchPath","_options","_options$exact","exact","_options$strict","strict","_options$sensitive","sensitive","matched","_compilePath","cacheKey","pathCache","regexp","compilePath$1","Route","context$1","_this$props","addLeadingSlash","stripBasename","basename","base","createURL","staticHandler","Switch","Children","child","isValidElement","cloneElement","useContext","pipeFromArray","fns","input","Observable","_isScalar","_subscribe","lift","operator","observable","observerOrNext","complete","sink","nextOrObserver","Subscriber","rxSubscriber","toSubscriber","add","config","useDeprecatedSynchronousErrorHandling","syncErrorThrowable","_trySubscribe","syncErrorThrown","syncErrorValue","observer","closed_1","closed","destination","isStopped","canReportError","warn","promiseCtor","getPromiseCtor","subscriber","pipe","operations","toPromise","destinationOrNext","SafeSubscriber","_error","_complete","_unsubscribeAndRecycle","_parentOrParents","_parentSubscriber","_context","__tryOrSetError","__tryOrUnsub","wrappedComplete","_unsubscribe","UnsubscriptionError","UnsubscriptionErrorImpl","_subscriptions","empty","remove","flattenUnsubscriptionErrors","sub","isObject","teardown","EMPTY","tmp","subscriptions","subscriptionIndex","errs","_slicedToArray","_arr","_n","_d","_e","_s","_inheritsLoose","_touchAction","touchAction","computedStyles","marginTop","marginBottom","offsetHeight","marginLeft","marginRight","__assign","__rest","util","AnimationChild","appear","exit","transitionName","transitionEnterDuration","transitionExitDuration","_onEnter","onEnter","_onEntering","onEntering","_onEntered","onEntered","_onExit","onExit","_onExiting","onExiting","_onExited","onExited","mountOnEnter","unmountOnExit","animationEnteringStyle","animationEnteredStyle","animationExitingStyle","animationExitedStyle","other","childAnimationContainerClassNames","defaultStyle","transitionDelay","animationStyle","entering","transitionDuration","entered","exiting","exited","transitionProps","in","timeout","animatedElement","appearActive","enterActive","exitActive","status","defaultProps","Animation","childFactory","componentChildStyle","stackChildren","componentChildClassName","content","Fade","Expand","direction","animationProps","EXITING_ANIMATION_STYLE","Push","Slide","Zoom","Reveal","maxHeight","maxWidth","componentWillEnter","updateContainerDimensions","componentIsEntering","componentWillExit","node","firstChild","newHeight","newWidth","maxOffset","_b","eitherRect","isDocumentAvailable","isWindowAvailable","OVERFLOW_REGEXP","overflowStyle","styles","overflow","overflowX","overflowY","HAS_RELATIVE_STACKING_CONTEXT","transform","isDifferent","hasRelativeStackingContext","CollisionType","AlignPoint","AlignService","_dom","alignElement","settings","hasOffsetParent","absoluteRect","relativeRect","align","dom","removedOffset","stackingOffset","removeStackingOffset","stackingElementOffset","stackingScroll","stackingElementScroll","withScroll","elementScrollPosition","scrollX","scrollY","DOMService","addOffset","addition","boundingOffset","getWindow","isBodyOffset","offsetParentEl","nodeName","staticOffset","currentOffset","popup","parentSibling","relativeOffset","currentLocation","restrictToView","scrollableParents","relativeContextElement","getRelativeContextElement","stackingElementViewPort","useRelativePosition","windowViewPort","zIndex","zIndexStyle","zoomLevel","clientWidth","isZoomed","PositionService","positionElement","initialElementRect","DEFAULT_OFFSET","Popup","_exitingAnimation","_prevShow","onOpened","show","classList","attachRepositionHandlers","open","onClosing","detachRepositionHandlers","onClosed","forceUpdate","close","anchorElement","popupAlign","alignedOffset","_alignService","_positionService","_flipped","_offset","_domService","reposition","wait","previous","later","leading","now","remaining","clearTimeout","trailing","throttle","popupClass","appendTo","newPosition","calculatePosition","_c","animate","openDuration","closeDuration","root","visibility","innerClasses","_scrollableParents","nodeType","_enable_super_gross_mode_that_will_cause_bad_things","stack","isBuffer","val","l","isArrayBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isUndefined","isFile","isBlob","isStream","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","navigator","product","merge","assignValue","deepMerge","extend","thisArg","str","isPresent","fitIntoBounds","contender","proto","observers","_observers","addObserver","removeObserver","trigger","_suspended","optionsChange","geometryChange","suspend","resume","_observerField","wnd","animationFrame","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","animationFrameProxy","ampRegExp","ltRegExp","quoteRegExp","aposRegExp","gtRegExp","htmlEncode","getArray","_defaultPrevented","isDefaultPrevented","Class","_events","eventName","handlers","one","arguments$1","eventNames","handlersIsFunction","loop","eventName$1","_handler","original","first","handler","unshift","events","sender","support","browser","userAgent","browserRxs","edge","webkit","safari","opera","msie","mozilla","agent","documentMode","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","color","colorNames","BaseColor","toHSV","toRGB","toHex","toBytes","toCss","toCssRgba","rgb","r","toDisplay","equals","diff","c1","c2","sqrt","pow","clone","Bytes","RGB","v","HSV","toHSL","HSL","f","hue2rgb","safe","ret","Color","resolvedColor","resolveColor","formatRegex","re","processor","process","channels","normalizeByte","padDigit","namedColors","brightness","percBrightness","isDark","fromBytes","fromRGB","fromHSV","fromHSL","append","1","10","100","20","200","30","300","40","400","5","50","500","6","60","600","7","70","700","8","80","800","9","90","900","1000","arabicToRoman","roman","createPromise","resolveFn","rejectFn","promise","data","_state","defined","defId","definitionId","DEG_TO_RAD","PI","MAX_NUM","MIN_NUM","deg","radians","fromCharCode","isTransparent","array","mergeSort","cmp","ai","bi","rad","degrees","power","valueOrDefault","bindEvents","stylesArray","getPixels","size$1","unbindEvents","LRUCache","_size","_length","_map","put","entry","_head","_tail","newer","older","REPLACE_REGEX","normalizeText","text","defaultMeasureBox","DEFAULT_OPTIONS","baselineMarkerSize","TextMetrics","_cache","measure","baseline","hash","charCodeAt","hashKey","objectKey","cachedResult","measureBox","box","baselineMarker","_baselineMarker","cloneNode","textStr","textContent","offsetTop","marker","measureText","OptionsStore","prefix","member","_wrap","set","_set","composite","parentObj","fieldName","_clear","wrapped","setAccessor","getAccessor","defineAccessors","fields","capitalized","Matrix","multiplyCopy","matrix","invert","det","toArray","translate","unit","rotate","angle","cos","sin","scaleX","scaleY","IDENTITY","toMatrix","transformation","Point","staticAccessors","ZERO","origin","originPoint","translateWith","point","move","scaleCopy","transformCopy","distanceTo","dx","dy","doRound","arg0","arg1","minX","minY","maxX","maxY","minPoint","maxPoint","Size","Rect","setOrigin","setSize","getOrigin","getSize","topLeft","bottomRight","topRight","bottomLeft","center","bbox","tl","tr","br","bl","fromPoints","expand","expandCopy","containsPoint","_isOnPath","rectOuter","rectInner","union","intersect","rect1","rect2","Transformation","_matrix","_optionsChange","multiply","Element","_initOptions","clip","parentTransform","parentMatrix","currentTransform","combinedMatrix","elementMatrix","visible","opacity","clippedBBox","_clippedBBox","transformedPoint","_hasFill","_containsPoint","_hasStroke","fill","stroke","ellipseExtremeAngles","rx","ry","extremeX","extremeY","atan2","PI_DIV_2","Circle","radius","setCenter","setRadius","getCenter","pointAt","_pointAt","extremeAngles","currentPointX","currentPointY","currentPoint","pointDistance","newFill","IDENTITY_MATRIX_HASH","matrixHash","_bboxCache","_matrixHash","_bbox","strokeWidth","geometryAccessor","defineGeometryAccessors","geometry","rawBBox","_geometry","tolerance","closeOrLess","Arc","radiusX","radiusY","startAngle","endAngle","anticlockwise","xRotation","radian","curvePoints","interval","_arcInterval","intervalAngle","subIntervalsCount","ceil","subIntervalAngle","currentAngle","nextAngle","points","_intervalCurvePoints","cp1","cp2","p2","endPoint","currentAngleX","bboxStartAngle","currentAngleY","oldStart","p1","p1Derivative","_derivativeAt","p2Derivative","distance","angleRad","pointRadius","startPoint","intersection","p0","p3","s1x","s2x","s1y","s2y","nx","ny","lineIntersection","calculateAngle","inAngleRange","largeArc","swipe","rotation","arcParameters","parameters","x1","y1","x2","y2","cosine","sine","xT","yT","xt2","yt2","rx2","ry2","constT","cxT","cyT","cx","cy","uX","uY","vX","vY","acos","angleCosine","signEndAngle","normalizeArcParameters","pop","ElementsArray","_splice","elements","_change","_add","_remove","howMany","_clearObserver","_setObserver","GeometryElementsArray","pointAccessor","definePointAccessors","isOutOfEndPoint","controlPoint","calculateCurveAt","t1","toCubicPolynomial","ComplexNumber","real","img","cNumber","addConstant","negate","multiplyConstant","nthRoot","nthR","isReal","numberSign","solveCubicEquation","squareRoot","solveQuadraticEquation","y3","z1","z2","b3a","hasRootsInRange","rootField","range","polynomial","roots","lineIntersectionsCount","intersects","inRange","Segment","controlIn","controlOut","bboxTo","toSegment","segmentAnchor","toSegmentAnchor","_curveBoundingBox","_lineBoundingBox","extremesX","_curveExtremesFor","extremesY","xLimits","arrayLimits","yLimits","extremes","_curveExtremes","x3","x4","t2","_intersectionsTo","segment","rayIntersection","curveIntersectionsCount","_isOnCurveTo","endSegment","p4","rotatedPoints","_isOnLineTo","_isOnPathTo","elementsBoundingBox","applyTransform","boundingBox","elementBoundingBox","elementsClippedBoundingBox","MultiPath","paths","moveTo","lineTo","curveTo","arc","arcTo","toLineParamaters","isVertical","insertPosition","reflectionPoint","quadraticToCubicControlPoints","scaledPoint","isRelative","lastControlIn","previousCommand","segments","cubicControlPoints","SEGMENT_REGEX","SPLIT_REGEX","PathParser","parse","multiPath","closePath","command","parseParameters","Path","lineJoin","lastSegment","_addArcSegments","intersectionsCount","pathWidth","segmentBox","fromRect","fromArc","toPath","Text","font","pos","Image","src","_rect","childrenField","traverse","Group","childrenChange","items","_reparent","insert","insertAt","removeAt","newParent","translateToPoint","transofrm","alignStart","axis","sizeField","alignStartReverse","alignContent","justifyContent","alignItems","spacing","orientation","lineSpacing","wrap","revers","forEachReverse","Layout","_fieldMap","_initMap","fieldMap","groupsSizeField","groupAxis","groupsAxis","justifyAlign","reflow","elementStart","groupBox","_initGroups","groups","groupsSize","groupOrigin","elementOrigin","groupStart","arrangeElements","groupIdx","lineSize","bboxes","scaledStart","newStart","_newGroup","addGroup","_addToGroup","StopsArray","optionsAccessor","GradientStop","defineOptionsAccessors","Gradient","stops","_createStops","_userSpace","userSpace","addStop","removeStop","stop","LinearGradient","RadialGradient","_radius","_fallbackFill","fallbackFill","swing","linear","easeOutElastic","asin","AnimationFactory","_items","register","setup","step","play","duration","delay","easing","finish","abort","_stopped","wallTime","easingPosition","SurfaceFactory","order","preferred","log","logToConsole","Surface","_kendoExportVisual","exportVisual","_click","_mouseenter","_mouseleave","_visual","_enableTracking","draw","eventTarget","domNode","touch","initialTouch","eventElement","_kendoNode","srcElement","currentSize","_resize","resize","force","suspendTracking","_suspendedTracking","resumeTracking","_elementOffset","paddingLeft","paddingTop","clientTop","clientLeft","elementOffset","_surfacePoint","coord","eventCoordinates","BaseNode","childNodes","observe","load","removeSelf","invalidate","renderAttr","renderAllAttr","attrs","renderStyle","SVG_NS","renderSVG","svg","testContainer","hasParser","DOMParser","namespaceURI","chartDoc","parseFromString","importedDoc","adoptNode","DefinitionMap","isDefinition","Node","definitions","clearDefinitions","childNode","createDefinitions","attachTo","domElement","insertBefore","setElement","nodes","childElement","template","renderChildren","css","updateDefinition","attr","removeAttr","setAttribute","allAttr","allCss","removeAttribute","mapTransform","renderTransform","transformChange","mapStyle","cursor","renderOpacity","renderId","hasDefinitions","definition","definitionChange","refUrl","renderDefinitions","mapDefinitions","skipBaseHref","baseHref","baseUrl","getElementsByTagName","href","hashIndex","GradientStopNode","renderOffset","GradientNode","loadStops","stopNode","mapCoordinates","renderCoordinates","mapSpace","LinearGradientNode","RadialGradientNode","ClipNode","DefinitionNode","definitionMap","addDefinitions","removeDefinitions","createDefinition","item","addDefinition","mapItem","removeDefinition","RootNode","defs","BaseSurface","_root","rtl","_template","_rootElement","ctm","getScreenCTM","alignToScreen","click","mouseover","mouseout","mousemove","viewBox","visual","implementation","hasFeature","GroupNode","DASH_ARRAYS","dot","dash","longdash","dashdot","longdashdot","longdashdotdot","ATTRIBUTE_MAP","PathNode","renderData","mapFill","mapStroke","printPath","currentType","segmentType","printPoints","segmentStart","segmentEnd","renderLinecap","dashType","renderDashType","renderStroke","dashArray","lineCap","renderFill","ArcNode","CircleNode","RectNode","ImageNode","mapPosition","mapSource","renderPosition","encode","renderSource","ENTITY_REGEX","decodeEntities","innerText","TextNode","setY","renderContent","renderTextAnchor","MultiPathNode","renderPath","prevOut","bezierCurveTo","initClip","clearClip","setClip","beginPath","setTransform","loadElements","cors","setOpacity","globalAlpha","opactity","renderTo","save","restore","canvas","getContext","invalidateHandler","_invalidate","lastExecTime","throttled","elapsed","cancel","_rescale","devicePixelRatio","clearRect","QuadRoot","shapes","_quadNode","pointShapes","QuadNode","inBounds","nodeRect","nodeBottomRight","inserted","_initChildren","halfWidth","halfHeight","zIndexComparer","_zIndex","ShapesQuadTree","initRoots","rootMap","rootElements","pointShape","sectorRoot","assignZindex","levelWeight","bboxChange","_insertShape","elementsArray","_insert","sectors","getSectors","inRoot","bottomX","bottomY","SurfaceCursor","surface","_resetCursor","_shapeCursor","_current","_defaultCursor","_getCursor","_setCursor","_mouseTrackHandler","_trackMouse","_searchTree","_cursor","image","rootElement","loadingStates","loading","promises","resolveDataURL","toDataURL","all","currentShape","_currentShape","renderPoints","setLineDash","setLineCap","setLineJoin","setFill","setStroke","hasFill","setGradientFill","fillStyle","gradient","createLinearGradient","createRadialGradient","addColorStop","addGradientStops","strokeStyle","lineWidth","mozDash","webkitLineDash","onLoad","onError","crossOrigin","onload","onerror","drawImage","textAlign","fillText","strokeText","HAS_TYPED_ARRAYS","Uint8Array","BASE64","keyStr","decode","enc1","enc2","enc3","enc4","chr1","chr2","chr3","bytes","BinaryStream","ensure","write","writeString","writeByte","readByte","readShort","writeShort","w","readLong","writeLong","readLong_","writeLong_","read","times","reader","stream","eof","readFixed","writeFixed","readShort_","writeShort_","readFixed_","writeFixed_","readString","skip","nbytes","saveExcursion","writeBase64","base64","atob","base64ToUint8Array","atobUint8Array","createUint8Array","sortedKeys","Directory","scalerType","tableCount","searchRange","entrySelector","rangeShift","tables","tag","checksum","deftable","methods","Ctor","file","def","rawData","readTable","table","maxpow2","LN2","out","directoryLength","headOffset","tableData","adjustment","sum","HeadTable","revision","checkSumAdjustment","magicNumber","flags","unitsPerEm","created","modified","xMin","yMin","xMax","yMax","macStyle","lowestRecPPEM","fontDirectionHint","indexToLocFormat","glyphDataFormat","LocaTable","head","offsets","offsetOf","lengthOf","needsLongFormat","HheaTable","ascent","descent","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","metricDataFormat","numOfLongHorMetrics","ids","MaxpTable","numGlyphs","maxPoints","maxContours","maxComponentPoints","maxComponentContours","maxZones","maxTwilightPoints","maxStorage","maxFunctionDefs","maxInstructionDefs","maxStackElements","maxSizeOfInstructions","maxComponentElements","maxComponentDepth","glyphIds","HmtxTable","hhea","metrics","advance","lsb","lsbCount","maxp","leftSideBearings","forGlyph","GlyfTable","SimpleGlyph","compound","CompoundGlyph","idOffsets","old2new","glyphFor","loca","numberOfContours","glyph","glyphs","oldIds","NameTable","NameEntry","platformID","platformSpecificID","languageID","nameID","stringOffset","nameRecords","strings","rec","postscriptEntry","postscriptName","psName","strCount","strTable","j","PostTable","POSTSCRIPT_GLYPHS","numberOfGlyphs","italicAngle","underlinePosition","underlineThickness","isFixedPitch","minMemType42","maxMemType42","minMemType1","maxMemType1","glyphNameIndex","limit","mapping","indexes","post","CmapTable","CmapEntry","codeMap","segCount","endCode","startCode","idDelta","idRangeOffset","glyphId","ngroups","endCharCode","glyphCode","ncid2ogid","ogid2ngid","codes","startCodes","endCodes","last","new_gid","charcode","segCountX2","deltas","rangeOffsets","startGlyph","renderCharmap","OS2Table","averageCharWidth","weightClass","widthClass","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","familyClass","panose","charRange","vendorID","selection","firstCharIndex","lastCharIndex","winAscent","winDescent","codePageRange","xHeight","capHeight","defaultChar","breakChar","maxContext","subsetTag","Subfont","subset","unicodes","0","ngid2ogid","firstChar","nextGid","nextSubsetTag","TTFFont","contents","numFonts","use","string","extra","counter","ucs2decode","old_gid","cmap","encodeText","glyphsFor","glyf","old_gid_ids","lastChar","hmtx","os2","directory","cidToGidMap","cid","widthOfGlyph","makeSubset","deflate","NL","RESOURCE_COUNTER","PAPER_SIZE","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","a10","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","b10","c0","c3","c4","c5","c6","c7","c8","c9","c10","executive","folio","legal","letter","tabloid","makeOutput","indentLevel","PDFValue","beforeRender","renderArray","renderDate","num","PDFDictionary","writeData","withIndent","indent","getPaperOptions","getOption","paperSize","unitsToPoints","PDFDocument","objcount","objects","defval","attach","renderValue","renderFull","wrapObject","pages","FONTS","IMAGES","GRAD_COL_FUNCTIONS","GRAD_OPC_FUNCTIONS","GRAD_COL","GRAD_OPC","catalog","PDFCatalog","pageTree","PDFPageTree","nameTree","JavaScript","Names","PDFString","JS","setPages","Producer","Title","Author","Subject","Keywords","Creator","CreationDate","addPage","paperOptions","contentWidth","contentHeight","Contents","Parent","MediaBox","page","PDFPage","_content","xrefOffset","zeropad","Root","Info","FONT_CACHE","IMAGE_CACHE","loadOne","loadFonts","cont","req","XMLHttpRequest","responseType","response","VBArray","responseBody","send","loadBinary","urls","loadImages","images","bloburl","blob","xhr","_load","URL","createObjectURL","_onerror","_onload","_trycanvas","imgdata","getImageData","ex","revokeObjectURL","hasAlpha","alpha","rawbytes","PDFRawImage","PDFJpegImage","FileReader","readAsArrayBuffer","loadImage","getFont","PDFStandardFont","PDFFont","getImage","asStream","getOpacityGS","forStroke","_opacityGSCache","gs","CA","ca","_resourceName","dict","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","mm2pt","mm","cm2pt","cm","in2pt","inch","defclass","Base","txt","PDFHexString","PDFName","escape","PDFName_cache","compress","Filter","Length","pagesObj","Pages","Kids","Count","pageObj","SOF_CODES","colorSpace","bitsPerComponent","Subtype","Width","Height","BitsPerComponent","ColorSpace","Decode","pdf","mask","SMask","BaseFont","Encoding","_pdf","_font","_sub","stemV","isSerif","isScript","getTextWidth","fontSize","fontStream","Length1","FontName","FontBBox","Flags","StemV","ItalicAngle","Ascent","Descent","CapHeight","XHeight","FontFile2","charWidths","chunk","gid","descendant","CIDSystemInfo","Registry","Ordering","Supplement","FontDescriptor","FirstChar","LastChar","DW","W","CIDToGIDMap","_makeCidToGidMap","DescendantFonts","unimap","PDFToUnicodeCmap","unimapStream","ToUnicode","unicode","makeHash","cacheColorGradientFunction","r1","g1","r2","g2","FunctionType","Domain","Range","N","C0","C1","cacheOpacityGradientFunction","cacheGradient","isRadial","funcs","cur","prevColor","curColor","opacities","colors","assemble","Functions","Bounds","Encode","makeGradientFunctions","coords","shading","ShadingType","Coords","Function","Extend","cacheColorGradient","AIS","FormType","BBox","CS","I","Resources","ExtGState","Shading","s0","cacheOpacityGradient","_rcount","_textMode","_fontResources","_gsResources","_xResources","_patResources","_shResources","_opacity","_annotations","_fontSize","_contextStack","ProcSet","Font","XObject","Pattern","Annots","_out","isIdentityMatrix","mmul","sx","sy","beginText","endText","_requireTextMode","_requireFont","setFont","setTextLeading","setTextRenderingMode","mode","showText","requestedWidth","showTextNL","addLink","uri","ll","_toPage","ur","Border","A","URI","setStrokeColor","setFillOpacity","setStrokeOpacity","setFillColor","_gradient","oname","sname","setDashPattern","dashPhase","setLineWidth","setMitterLimit","mitterLimit","bezier","bezier1","bezier2","ellipse","_X","_Y","circle","nop","clipStroke","closeStroke","fillStroke","comment","line","FONT_MAPPINGS","fontAlias","alias","d1","e1","f1","d2","thing","nodeInfo","microsoft","TextRect","_pdfRect","setCSS","selector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","querySelectorAll","closest","$","cloneNodes","kendo","jQuery","$el","$clone","tagName","checked","selected","nextSibling","dive","canvases","orig","drawDOM","defineFont","getFontFaces","doOne","cls","_clipbox","_stackingContext","avoidLinks","_avoidLinks","renderElement","word","removeClass","cacheImages","forceBreak","forcePageBreak","hasPaperSize","pageWidth","pageHeight","hasMargin","multiPage","_ignoreMargin","makeTemplate","doc","copy","_destructive","adjust","tfoot","ol","li","boxSizing","paddingRight","beforePageBreak","doPageBreak","splitElement","tableLayout","keepTogether","bottomPadding","getPropertyValue","bottomBorder","saveAdjust","isFirst","breakAtElement","fall","fallsOnMargin","splitText","makePage","pageNum","totalPages","pending","whenImagesAreActuallyLoaded","getAttribute","firstInParent","colgroup","thead","grid","gridHead","querySelector","repeatHeaders","createRange","setStartBefore","setEndBefore","extractContents","preventBulletOnListItem","padding","pageClassName","available","selectNodeContents","nextnode","findEOP","setEnd","endOffset","handlePageBreaks","progress","canceled","drawText","pushNodeInfo","renderText","_renderElement","popNodeInfo","parseBackgroundImage","tok_linear_gradient","tok_percent","tok_length","tok_keyword","tok_angle","tok_whitespace","tok_popen","tok_pclose","tok_comma","tok_url","tok_content","cache1","cache2","tok","token","skip_ws","read_stop","propName","to1","to2","parseAngle","read_linear_gradient","read_url","splitProperty","in_paren","in_string","looking_at","getFontHeight","styleSheets","doStylesheet","ss","rules","cssRules","styleSheet","family","bold","italic","findFonts","addRule","addRules","rule","incCounter","inc","resetCounter","doCounters","updateCounters","counterReset","counterIncrement","bg","alphaNumeral","decoration","prop","createsStackingContext","updateClipbox","pseudoElt","defa","pleaseSetPropertyValue","important","setProperty","getBorder","side","saveStyle","getBorderRadius","sanitizeRadius","innerBox","wt","wr","wb","wl","radiansToDegrees","clipPath","addArcToPath","adjustBorderRadiusForBox","rTL","rTR","rBR","rBL","tl_x","tl_y","tr_x","tr_y","br_x","br_y","bl_x","bl_y","elementRoundBox","bt","bb","pt","pr","pl","roundBox","rTL0","rTR0","rBR0","rBL0","formatCounter","evalPseudoElementContent","displayCounter","getAllCounters","getCounter","getCssText","_renderWithPseudoElements","fake","pseudo","saveClass","kind","place","psel","backgroundColor","textOverflow","saveTextOverflow","backgroundImage","backgroundRepeat","backgroundPosition","backgroundOrigin","backgroundSize","currentStyle","boxes","cells","innerbox","getClientRects","tableBorderLeft","tableBorderTop","tableBox","firstCellBox","rows","adjustBoxes","drawOneBox","_pdfLink","listStyleType","listStylePosition","_drawBullet","bullet","elementIndex","lineHeight","fontFamily","drawBullet","clipit","isFormField","widget","widgetInstance","exportDOMVisual","maybeRenderWidget","renderContents","drawEdge","Wtop","Wleft","Wright","rl","rr","drawRoundCorner","ri","drawOneBackground","background","drawBackgroundImage","pxlen","scaledAngle","atan","implicit","img_width","img_height","renderBG","aspect_ratio","orgBox","rewX","rewY","repeatX","isLast","drawBackground","shouldDrawLeft","shouldDrawRight","inv","renderImage","getContentBox","zIndexSort","sa","sb","za","zb","renderFormField","renderCheckbox","whiteSpace","multiple","selectedOptions","selectedIndex","getSelectedOption","floats","positioned","floating","cb","emptyClipbox","isJustified","columnCount","textTransform","estimateLineLength","prevLineBottom","underline","lineThrough","overline","hasDecoration","doChunk","selectNode","ypos","actuallyGetRangeBoundingRect","chrome","rectangles","Infinity","origStart","setStart","found","findEOL","eol","startOffset","cc","getTransform","main","_dom_zIndex","groupInStackingContext","parsedColor","parsed","hsva","hue","saturation","getColorFromHue","HexInput","onChange","hex","onHexChange","originalHex","getDerivedStateFromProps","messages","ColorInput","onRgbaRChange","dispatchRgbaChange","onRgbaGChange","onRgbaBChange","onRgbaAChange","localizationService","hexMessage","rMessage","gMessage","bMessage","aMessage","rgba","spinners","newValue","onRgbaChange","ColorGradient","isUncontrolled","componentGuid","cacheHex","dispatchChangeEvent","cacheRgba","onAlphaSliderChange","handleHsvaChange","onHueSliderChange","gradientWrapper","changePosition","onGradientWrapperClick","gradientRectMetrics","getGradientRectMetrics","deltaX","deltaY","focus","focusFirstFocusableChild","wrapper","getStateFromValue","isFirstRender","setAlphaSliderBackground","prevState","renderRectangleDragHandle","top_1","cacheHsva","cachedColor","getCachedHsva","getCachedRgba","getCachedHex","alphaSlider","sliderTrack","onClick","buttons","ColorPaletteService","colorRows","setColorMatrix","palette","columns","row","getCellCoordsFor","_loop_1","_loop_2","col","some","this_1","state_2","state_1","getColorAt","cellCoords","getNextCell","horizontalStep","verticalStep","clampIndex","PALETTEPRESETS","basic","office","apex","austin","clarity","slipstream","metro","flow","hardcover","trek","verve","monochrome","ColorPalette","onKeyDown","keyCode","handleCellNavigation","handleEnter","onColorClick","selectedColor","focusedColor","paletteService","paletteInfo","getPaletteInfo","svc","selectedCellCoords","focusedCellCoords","createCellId","role","renderRows","focusedColorCooridanates","newCoords","rgbaValue","preset","renderColumns","rowIndex","rowIsSelected","selectedColumn","rowIsFocused","focusedColumn","tileSize","isSelected","minWidth","popupSettings","horizontalAlign","popupAnchor","onOpen","onClose","DEFAULT_PALETTE_SETTINGS","isControlled","ColorPicker","gradientSettings","paletteSettings","view","icon","focusableElementRef","gradientRef","paletteRef","blurTimeoutRef","setFocused","stateValue","setStateValue","stateOpen","setStateOpen","isValueControlled","isOpenControlled","setOpen","nextOpen","isBlur","onKeyDownHandler","stopPropagation","onOpenHandler","onClickHandler","onFocusHandler","onBlurTimeout","onBlurHandler","onChangeHandler","isPalette","currentValue","onPaletteChangeHandler","elementRef","initialDir","setRtl","rtlCandidate","iconClassName","ResultType","Input","_inputId","isInvalid","setValidity","_input","setCustomValidity","validity","validityStyles","validationMessage","handleChange","valueDuringOnChange","badInput","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","tooLong","typeMismatch","valueMissing","customError","visited","touched","inputId","isValid","inputClassName","textbox","required","validate","Result","rest","Undefined","chain","fold","vs","Stream","control","inputCursor","controlCursor","char","peek","eat_input","eat_control","eat","Parser","run","isLiteral","Literal","creator","prompt","promptPlaceholder","includeLiterals","sequence","acc","parser","MaskingService","maskTokens","unmaskTokens","rawTokens","validationTokens","update","_f","tokenize","validationValue","maskedValue","unmasked","rawValue","maskRaw","masked","maskInput","splitPoint","maskRemoved","maskInserted","maskInRange","pasted","oldValue","beforeChange","afterChange","unchanged","changed","take","adjustPosition","caretChar","_token","Mask","maskTokenCreator","tokens","unmaskTokenCreator","rawTokenCreator","validationTokenCreator","defaultRules","returnFalse","sameRules","rules1","rules2","same","MaskedTextBox","_service","_isPasted","_selection","pasteHandler","selectionStart","selectionEnd","currentTarget","triggerOnChange","rightPart","focusHandler","blurHandler","_valueDuringOnChange","maskValidation","prevSelection","nextSelection","setSelectionRange","updateService","autoComplete","autoCorrect","autoCapitalize","spellCheck","accessKey","title","readOnly","readonly","onPaste","onDragStart","onDrop","componentName","entries","NumericTextBox","textBeforeInput","elementChange","increase","decrease","wheel","keyDown","initialState","looselyFormattedText","decimalSelect","activeElement","indexOfDecimal","indexOfNewDecimal","intl","numerictextbox","elementWrapper","inputType","valueAsLocalString","onWheel","onMouseDown","newState","triggerChange","nonInputActions","ranged","shouldFireEvent","SliderLabel","labelTextStyle","Slider","enabled","decrementTitle","decrement","incrementTitle","increment","isLabel","change","dragStart","dragOver","computed","percentage","lS","percentValue","trackStyles","sliderItemsStyle","flexDirection","flexGrow","_sliderTrack","_id","wrapperWidth","toggle","handleClick","handleKeyDown","handleWrapperFocus","handleWrapperBlur","defaultChecked","offLabel","onLabel","_wrapper","switchClassName","ariaAttributes","span","condition","isAbsolute","spliceOne","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","valueOf","valueEqual","every","aValue","bValue","stripLeadingSlash","hasBasename","stripTrailingSlash","createPath","createLocation","searchIndex","parsePath","decodeURI","URIError","locationsAreEqual","createTransitionManager","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","isActive","notifyListeners","_len","_key","getConfirmation","confirm","getHistoryState","createBrowserHistory","globalHistory","canUseHistory","ua","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","getDOMLocation","historyState","_window$location","createKey","transitionManager","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toLocation","toIndex","allKeys","fromIndex","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","allPaths","baseTag","pushHashPath","nextPaths","clamp","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","nextIndex","nextEntries","canGo","argIndex","framesToPop","hostReportError","subscribeToResult","outerSubscriber","outerValue","outerIndex","innerSubscriber","InnerSubscriber","notifyNext","notifyError","notifyComplete","getSymbolIterator","OuterSubscriber","innerValue","innerIndex","innerSub","_CSSTransition","_interopRequireDefault","_ReplaceTransition","_TransitionGroup","_Transition","__esModule","Transition","TransitionGroup","ReplaceTransition","CSSTransition","_trackPromise","manuallyDecrementPromiseCounter","manuallyIncrementPromiseCounter","manuallyResetPromiseCounter","_trackerHoc","promiseTrackerHoc","trackPromise","_trackerHook","usePromiseTracker","scheduleArray","scheduler","schedule","ListContainer","ListFilter","sameCharsOnly","shuffleData","splitIndex","defaultItem","matchText","ignoreCase","temp","itemIndexStartsWith","itemText","getItemValue","getItemIndexByText","textField","matchCase","casing","findIndex","data_1","removeDataItems","toRemove","itemIndex","areSame","item1","item2","getFocusedItem","preventDefaultNonInputs","ListDefaultItem","ListItem","renderer","dataItem","nodata","List","renderItems","valueField","optionsGuid","focusedIndex","highlightSelected","itemRender","realIndex","renderNoValueElement","noDataRender","noDataElement","wrapperCssClass","wrapperStyle","listStyle","listRef","VirtualScroll","containerHeight","total","pageSize","itemHeight","prevScrollPos","listTranslate","scrollSyncing","scrollerRef","calcScrollElementHeight","heightChanged","scrollElement","scrollHandler","changePage","newSkip","PageChange","translateTo","dY","reset","scrollToEnd","localScrollUp","targetTranslate","additionalOnTop","validateTranslate","localScrollDown","itemsLenght","scrollNonStrict","floatItemIndex","Navigation","navigate","DropDownBase","navigation","handleItemClick","initState","handleItemSelect","togglePopup","applyState","filterChanged","filterable","opened","calculatePopupWidth","pageChange","triggerOnPageChange","scrollToVirtualItem","virtual","selectedItemIndex","scrollToItem","renderScrollWrapper","getPopupSettings","onScroll","renderScrollElement","listBoxId","didMount","popupWidth","shouldUpdate","calculateDir","dirCalculated","vsEnabled","virtualScroll","scrollElem","viewportHeight","itemOffsetTop","eventArgs","triggerPageChangeCornerItems","dataItemKey","basicPropTypes","listNoDataRender","header","footer","onFilterChange","onPageChange","DropDownList","searchState","_skipFocusEvent","_filterInput","_navigated","newSelected","renderDropDownWrapper","valueRender","valueDefaultRendering","valueElement","onKeyPress","handleKeyPress","handleWrapperClick","dummySelect","_select","border","valueMap","renderListContainer","listContainerProps","onPopupOpened","onPopupClosed","renderListFilter","renderDefaultItem","renderList","float","filterText","handleListFilterChange","handleDefaultItemClick","_typingTimeout","selectNext","mappedData","isInLoop","dataLength","startIndex","loopMatch","nextMatch","homeOrEndKeys","upOrDownKeys","shouldOpen","shouldClose","shouldNavigate","onNavigate","charCode","focusElement","prevTotal","prevOpened","opening","selectedItem_1","prevSelectedItem","selectedItemChanged","dropdownlist","dropdown","newIndex","hasSelected","ClearButton","ActiveDescendant","SearchBar","prevValue","prevSuggestedText","suggestedText","valueChanged","deleting","endsWith","expanded","owns","activedescendant","describedby","clearButton","clearButtonClick","ComboBox","_suggested","toggleBtnClick","applyValueOnRejectSuggestions","onInputKeyDown","applyValueOnEnter","inputOnChange","suggest","selectionAtEnd","prevText","deletedSuggestion","suggestValue","focusedItem","selectedItem","_valueOnDidUpdate","selectedItemText","inputText","renderClearButton","combobox","renderSearchBar","getFocusedIndex","currentIndex","allowCustom","valueIndex","itemSelected","selectFocusedItem","valueItemText","focusedItemIndex","suggested","suggestedItem","AutoComplete","newText","itemFocus","prevSuggestion","prevUserInput","suggestion","userInput","applyInputValue","prevData","dataChanged","focusedItemChanged","typedText","newFocused","eventKey","searchbar","TagList","tagData","tagClassName","onTagDelete","tagRender","FocusedItemType","tag1","tag2","data1","data2","matchDataCollections","isCustom","CustomItem","MultiSelect","PopupList","_valueItemsDuringOnChange","_tags","indexInValue","newItems","itemsToRemove","getFocusedState","customItem","nextFocusedItem","searchbarRef","onTagsNavigate","customItemSelect","focusedType","autoClose","closing","customItemFocused","tags","focusedTag","tagsToRender","setItems","find","renderSearchbar","placeholderToShow","ariaActivedescendant","TagsList","itemsKey","newFocusedTag","hasFocused","removed","srcItems","destItems","focusedInd","last_1","None","withMetadata","_arguments","randomString","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","isPlainObject","createStore","reducer","preloadedState","enhancer","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","replaceReducer","nextReducer","outerSubscribe","observeState","getUndefinedStateErrorMessage","actionType","combineReducers","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","previousStateForKey","nextStateForKey","errorMessage","bindActionCreator","actionCreator","bindActionCreators","actionCreators","boundActionCreators","compose","applyMiddleware","middlewares","_dispatch","middlewareAPI","middleware","FormContext","validator","others","form","formId","registerField","onNativeComponentChange","valueGetter","prototypeAccessors","FIELD_REGEX","fieldList","_match","indexAccessor","nextField","arrays","cloneObject","cloneValue","nextValue","newNextValue","SIZE_CLASSES","Icon","themeColor","themeColorProp","sizeProp","flipProp","fontClassNames","SvgIcon","svgClassName","svgStyle","iconNameProp","viewBoxProp","elementClassNames","elementStyle","focusable","xmlns","dangerouslySetInnerHTML","__html","Form","_touched","_visited","_modified","_validatorsByField","_values","_fields","_unmounted","isFormValid","accumulatedForceUpdate","_accumulatorTimeout","resetForm","initialValues","onReset","addField","onSubmit","touchedVisited","isModified","isFormModified","onSubmitClick","valueSetter","skipForceUpdate","onFieldRegister","oldValidators","validatorsByField","newValidators","validatorIsUnregistered","isFormHasNotTouched","isFormTouched","isFormVisited","getter","depth","setter","onArrayAction","onInsert","newArray","onUnshift","onPush","onPop","onRemove","onReplace","onMove","validators_1","formErrors","formValid","formModified","formTouched","formVisited","allowSubmit","onFormReset","formClassName","reactIs","REACT_STATICS","contextType","getDefaultProps","getDerivedStateFromError","mixins","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","getOwnPropertyNames","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","editorId","editorRef","editorDisabled","editorValid","optional","localizedOptional","optionalElement","onLabelClick","editorActionElement","actionElement","labelClassName","errorClassName","hintClassName","editorValue","editorPlaceholder","spanClassNames","labelClassNames","classes","argType","inner","isArrayLike","subscribeToArray","isPromise","project","MapOperator","MapSubscriber","loaded","conformToMask","setRef","inputElement","textMaskInputElement","initTextMask","guide","placeholderChar","showMask","isNil","keepCharPositions","PureComponent","oneOfType","bool","strFunction","convertMaskToPlaceholder","JSON","stringify","processCaretTraps","maskWithoutCaretTraps","previousConformedValue","currentCaretPosition","C","O","P","isNew","R","V","B","J","U","conformedValue","meta","someCharsRejected","previousPlaceholder","indexesOfPipedChars","caretTrapIndexes","rejected","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","thatReturnsArgument","arrayOf","instanceOf","objectOf","oneOf","checkPropTypes","PropTypes","UploadFileStatus","retry","getFileExtension","fileName","rawFile","fileSize","extension","getRawFile","Selected","uid","fileHasValidationErrors","validationErrors","files","files_1","totalSize","rawFiles","allFileInfo","batchFiles","UploadListActionButton","buttonClassNames","actionFocused","retryFocused","onRetryFocus","onRetryBlur","onActionFocus","onActionBlur","onActionClick","onCancel","Removing","Uploading","onRetryClick","onRetry","actionButtonTitle","retryButtonTitle","actionButtonClassNames","isRetryVisible","UploadFailed","isProgressVisible","isActionHidden","Uploaded","Initial","async","removeUrl","UploadListSingleItem","isProgressActive","getFileValidationMessage","messageKey","renderValidationError","renderFileDetails","utils","itemClassName","transition","UploadListMultiItem","mapFiles","fileNameClasses","hasValidationErrors","totalMessage","filesMessage","invalidFileMessage","infoMes","UploadListGroup","navigationIndex","listItemUI","firstFile","isFileSuccess","liClassName","RemoveFailed","itemOptions","ItemComponent","UploadList","mapListGroups","groupedFiles","ulClassName","CHROME_REGEX","SAFARI_REGEX","UploadInput","inputRef","onAdd","accept","saveField","UploadAddButton","addButtonIndex","notFocusedIndex","_uploadInput","selectMessage","buttonClassName","UploadActionButtons","onClearClick","onClear","onUploadClick","uploadButtonIndex","onUpload","clearButtonIndex","_clearElement","_uploadElement","wrapperClasses","clearButtonClasses","uploadButtonClasses","UploadStatus","isUploading","isUploaded","isFailed","fileGroup","statusClassName","statusText","UploadDropZone","_documentActive","_elementActive","onDocumentDragEnter","documentActive","_documentInterval","setInterval","isDragOver","_lastDocumentDragOver","clearInterval","onDocumentDragOver","onElementDragEnter","elementActive","_elementInterval","_lastElementDragOver","onElementDragOver","droppedFiles","dataTransfer","prevDate","active","prevActive","currentActive","addButtonComponent","statusComponent","dropFilesMessage","onDragEnter","onDragOver","UploadUI","isRtl","navIndex","autoUpload","withCredentials","saveHeaders","saveMethod","saveUrl","removeField","removeHeaders","removeMethod","groupsCount","lastGroupIndex","_container","_uploadAddButton","showFileList","showActionButtons","UploadNavigation","groupKeys","maxFileIndex","maxNavIndex","cancelButtonIndex","_uploadUI","_blurTimeout","_navIndex","prevNavIndex","prevGroupLength","groupLength","filesState","groupForEach","callBack","uidKey","copyState","addMany","fileList","groupFilesByUid","filesForUpload","notUploadedGroups","currentFiles","currentFilesValid","setFilesStatus","filesGroup","flatFileGroup","transformed","populateClientFormData","clientData","fileNames","headers","cloned","validateFileExtension","allowedExtensions","validateFileSize","minFileSize","maxFileSize","restrictionInfo","Upload","_httpSubscriptions","uploadFiles","stateUtils","connectionUtils","additionalData","onBeforeUpload","requestOptions","formData","isCustomSave","onUploadProgress","onUploadSuccess","catch","onUploadError","cancelTokenSource","CancelToken","cancelToken","removeFiles","filesForRemove","onBeforeRemove","isCustomRemove","onRemoveSuccess","onRemoveError","fileStateCopy","onStatusChangeEvent","onStatusChange","affectedFiles","selectedFiles","validationUtils","restrictions","onAddEvent","percentComplete","filesWithProgress","onProgressEvent","onProgress","successFiles","failedFiles","filesToKeep","onRemoveEvent","filesForRetry","defaultFiles","tabindex","currentTabIndex","initialStatus","isMounting","appearStatus","nextCallback","updateStatus","nextStatus","cancelNextCallback","getTimeouts","mounting","nodeRef","findDOMNode","forceReflow","performEnter","performExit","_this2","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onTransitionEnd","_this3","setNextCallback","_this4","doesNotHaveTimeoutOrListener","addEndListener","maybeNextCallback","childProps","TransitionGroupContext","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","getChildMapping","mapFn","mapper","getProp","getNextChildMapping","nextProps","prevChildMapping","nextChildMapping","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","mergeChildMappings","hasPrev","hasNext","prevChild","isLeaving","handleExited","firstRender","mounted","currentChildMapping","POSITION","TOP_LEFT","TOP_RIGHT","TOP_CENTER","BOTTOM_LEFT","BOTTOM_RIGHT","BOTTOM_CENTER","TYPE","INFO","SUCCESS","WARNING","ERROR","DEFAULT","ACTION","NOOP","isValidDelay","objectValues","canUseDom","falseOrDelay","eventManager","Map","on","has","off","emit","cssTransition","_ref$duration","_ref$appendPosition","appendPosition","enterDuration","exitDuration","preventExitTransition","enterClassName","exitClassName","animationFillMode","animationDuration","ProgressBar","_cx","_animationEvent","isRunning","closeToast","hide","userStyle","controlledProgress","animationPlayState","RT_NAMESPACE","animationEvent","getX","targetTouches","getY","iLoveInternetExplorer","_Component","Toast","flag","canCloseOnClick","canDrag","removalDistance","boundingRect","pauseToast","playToast","draggablePercent","onDragMove","onDragEnd","onDragTransitionEnd","_this$boundingRect","pauseOnHover","onExitTransitionEnd","minHeight","bindDragEvents","pauseOnFocusLoss","bindFocusEvents","unbindDragEvents","unbindFocusEvents","closeButton","closeOnClick","hideProgressBar","bodyClassName","progressClassName","progressStyle","updateId","toastProps","onMouseEnter","onMouseLeave","onTouchStart","onMouseUp","onTouchEnd","CloseButton","ariaLabel","containerId","arialLabel","Bounce","ToastContainer","toast","toastKey","collection","isToastActive","buildToast","removeToast","dispatchChange","makeCloseButton","toastClose","toastId","getAutoCloseDelay","toastAutoClose","canBeRendered","parseClassName","belongToContainer","enableMultiContainer","toastOptions","toastClassName","appendToast","staleToastId","_extends2","renderToast","_this5","toastToRender","newestOnTop","_this5$collection$toa","isDocumentHidden","disablePointer","pointerEvents","containers","latestInstance","containerDomNode","containerConfig","queue","lazy","isAnyContainerMounted","getToast","getContainer","mergeOptions","getToastId","generateToastId","dispatchToast","_loop","warning","dismiss","oldOptions","oldContent","nextOptions","configure","containerInstance","scheduled","isInteropObservable","scheduleObservable","schedulePromise","isIterable","return","scheduleIterable","subscribeTo","obs","iterable","hookCallback","hooks","res","hasOwnProp","createUTC","createLocalOrUTC","utc","getParsingFlags","_pf","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","meridiem","rfc2822","weekdayMismatch","_isValid","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","momentProperties","copyConfig","_isAMomentObject","_l","_tzm","_isUTC","_locale","updateInProgress","Moment","updateOffset","isMoment","absFloor","toInt","argumentForCoercion","coercedNumber","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","deprecations","deprecateSimple","mergeConfigs","parentConfig","childConfig","Locale","aliases","addUnitAlias","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","ordinal","localeData","formatMoment","expandFormat","mom","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","regexes","addRegexToken","strictRegex","isStrict","getParseRegexForToken","regexEscape","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","daysInYear","isLeapYear","parseTwoDigitYear","getSetYear","makeGetSet","keepTime","set$1","daysInMonth","modMonth","mod","monthsShort","monthsShortRegex","monthsRegex","monthsParse","MONTHS_IN_FORMAT","defaultLocaleMonths","defaultLocaleMonthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","dayOfMonth","getSetMonth","defaultMonthsShortRegex","defaultMonthsRegex","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","createUTCDate","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","lowercase","matchMeridiem","_meridiemParse","kInput","_isPm","isPM","_meridiem","pos1","pos2","globalLocale","getSetHour","baseConfig","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","hh","dd","MM","yy","meridiemParse","locales","localeFamilies","normalizeLocale","loadLocale","oldLocale","_abbr","getSetGlobalLocale","getLocale","defineLocale","abbr","_config","parentLocale","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","defaults","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","_useUTC","currentDateArray","weekYear","weekdayOverflow","GG","createLocal","_week","curWeek","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","setUTCMinutes","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","untruncateYear","yearStr","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromRFC2822","parsedArray","monthStr","dayStr","hourStr","minuteStr","secondStr","extractFromRFC2822Strings","weekdayStr","parsedInput","checkWeekday","obsOffset","militaryOffset","numOffset","calculateOffset","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","isPm","meridiemHour","meridiemFixWrap","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","configFromStringAndArray","createFromInputFallback","configFromString","millisecond","configFromObject","configFromInput","isUTC","isObjectEmpty","createFromConfig","prototypeMin","prototypeMax","pickBy","moments","ordering","Duration","years","weeks","isoWeek","unitHasDecimal","isDurationValid","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","utcOffset","offsetFromString","chunkOffset","matcher","cloneWithOffset","model","setTime","local","getDateOffset","isUtc","aspNetRegex","isoRegex","createDuration","diffRes","parseIso","isBefore","positiveMomentsDifference","momentsDifference","inp","isAfter","createAdder","period","addSubtract","isAdding","subtract","monthDiff","wholeMonthDiff","newLocaleData","defaultFormat","defaultFormatUtc","lang","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","addWeekYearFormatToken","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetSecond","parseMs","getSetMillisecond","preParsePostFormat","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","isoWeekday","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","getPrioritizedUnits","toObject","toDate","toISOString","keepOffset","inspect","isLocal","suffix","toJSON","unix","creationData","isoWeeks","weekInfo","isoWeeksInYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","proto$1","get$1","listMonthsImpl","listWeekdaysImpl","localeSorted","_calendar","_longDateFormat","formatUpper","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","isFormat","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","proto$2","monthsFromDays","withSuffix","posNegDuration","relativeTime$1","toIsoString","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","factory","propIsEnumerable","propertyIsEnumerable","test1","test2","test3","shouldUseNative","promiseCounterUpdateEventId","emitter","_tinyEmmiter","_constants","Emitter","defaultArea","area","incrementPromiseCounter","onResolveHandler","decrementPromiseCounter","incrementCounter","promiseInProgress","anyPromiseInProgress","decrementCounter","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","getDefaultAdapter","transformRequest","transformResponse","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","common","BrowserRouter","resolveToLocation","normalizeToLocation","forwardRefShim","LinkAnchor","innerRef","_onClick","defaultPrevented","metaKey","isModifiedEvent","Link","_ref2$component","forwardRefShim$1","forwardRef$1","_ref$ariaCurrent","ariaCurrent","_ref$activeClassName","activeClassName","activeStyle","classNameProp","isActiveProp","locationProp","styleProp","escapedPath","classnames","joinClassnames","global","commonjsGlobal","globalThis","createEventEmitter","changedBits","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","getUniqueId","componentWillReceiveProps","_Component2","getValue","observedBits","_proto2","isarray","pathToRegexp","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","delimiter","escaped","capture","modifier","asterisk","partial","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","opts","encodeURIComponent","attachKeys","route","endsWithDelimiter","regexpToRegexp","arrayToRegexp","stringToRegexp","TabStripNavigationItem","onSelect","itemClasses","TabStripNavigation","tabs","tabsCount","childElements","tabProps","navClasses","TabStripContent","contentId","selectedTab","contentClasses","contentClassName","keepTabsMounted","renderChild","contentProps","animation","TabStrip","keyBinding","prevNavigatableTab","nextNavigatableTab","invertKeys","tabContentStyle","firstNavigatableTab","lastNavigatableTab","childrenCount","tabPosition","componentClasses","inverted","TabStripTab","PanelBarItem","uniquePrivateKey","headerClassName","panelBarItemAriaAttributes","panelBarItemClassName","panelBarHeaderClassName","panelBarItemArrowClassName","imageUrl","iconClass","iconClasses","iconElement","arrow","handleSelect","parentExpanded","parentPrivateKey","nestedChildren","privateKey","parentUniquePrivateKey","wrapperFocused","mapItemsToComponents","NavigationAction","SelectionService","onSelectCallback","onFocusCallback","expandMode","flatChildren","flattenChildren","flatVisibleChildren","flattenVisibleChildren","select","selectedChild","newExpanded","firstArray","secondArray","currentFocus","focusedChild","ixd","setExpandMode","NavigationService","Next","Previous","Toggle","PanelBar","_selectionService","activeDescendant","nextTickId","nextTick","_navigationService","getInitialState","newProps","ariaProps","prop_1","itemId","isIdZeroLevel","rootParentItem","getRootParentId","isIdEmptyOrZeroLevel","firstSeparatorIndex","getIdWithoutRootParentId","getFirstChildId","createId","childId","parentId","getDirectParentId","lastSeparatorIndex","isIdFirstLevel","getSeparatorOccurances","getShortId","getDirectSiblingIdForLevelZero","shortItemId","siblingsCount","MenuItem","cssClass","cssStyle","linkRender","contentRender","prepareInputItemsForInternalWork","models","menuChildren","convertInputModelsToInternalOnesHelper","inputItems","getMenuItemChildComponents","inputModels","convertInputComponentsToInputModelsHelper","components","comp","copyInputItemWithoutChildren","inputModel","inputComponent","internalModel","isLastFromSiblings","copyOrCreateModelChildren","contentParentItemId","NO_WHITESPACE_REGEX","getNewItemIdUponKeyboardNavigation","sourceItems","sourceItemId","isMenuVertical","isDirectionRightToLeft","sourceItem","getItemById","getIdUponRightKeyForVerticalMenu","getIdUponLeftKeyForVerticalMenu","getIdUponRightKeyForHorizontalMenu","getIdUponLeftKeyForHorizontalMenu","getPrevSiblingId","getLastChildIdForEnabledItemOrGetSameId","getNextSiblingId","getFirstChildIdForEnabledItemOrGetSameId","hasChildren","getSiblings","getIdUponEndKey","searchChar","currentItemIndex","matchedSibling","getIdUponSearchByChar","getFirstOrLastChildIdForEnabledItemOrGetSameId","getSiblingId","getFirstChild","itemChildren","getLastChildId","directParentId","MenuItemLink","getMenuItemClassName","POPUP_ALIGN","POPUP_ALIGN_RTL","VERTICAL_COLLISION","HORIZONTAL_COLLISION","POPUP_SETTINGS_RTL","downward","leftward","POPUP_SETTINGS","rightward","getChildrenPosition","convertBoolDirectionToString","getDOMElementId","menuGuid","MenuItemArrow","getArrowClassName","childrenPosition","verticalMenu","MenuItemInternal","onMouseOver","focusedItemId","currentItemId","itemElement","contains","blur","tabbableItemId","Opened","renderMenuItemLink","renderPopupIfOpened","onOriginalItemNeeded","textOrItemRender","renderMenuIconIfApplicable","renderArrowIfApplicable","getPopupClassName","parentItemId","lastItemIdToBeOpened","MenuItemInternalsList","renderChildItems","DirectionHolder","phase","getIsDirectionRightToLeft","setIsDirectionRightToLeft","previousIsDirectionRightToLeft","hasDirectionChanged","MouseOverHandler","openOnClick","resetMenu","openItem","isMouseOverEnabled","mouseDown","handleItemSelectedViaKeyboard","handleItemMouseDown","handleItemFocus","clickedItemIsWithDefaultClose","initialItemsIds","hoveredItemId","Menu","directionHolder","clearItemHoverAndLeaveRequestsIfApplicable","currentItem","newItemId","setFocusedItemId","mouseOverHandler","dispatchSelectEventIfWired","onItemMouseOver","IsMouseOverEnabled","itemHoverRequest","setHoveredItemId","hoverOpenDelay","getHoverOpenDelay","onItemMouseLeave","isItemWithDefaultClose","itemLeaveRequest","hoverCloseDelay","getHoverCloseDelay","onItemMouseDown","onItemFocus","onItemClick","onItemBlur","getInputItem","prepareItems","checkIsDirectionRightToLeft","getMenuWrapperClassName","menuWrapperEl","getMenuClassName","OpenOnClick","customCloseItemIds","SplitterPane","collapsed","overlay","containsSplitter","collapsible","resizable","scrollable","keepMounted","fixedSize","flexBasis","paneClasses","SplitterBar","isStatic","isDraggable","onToggle","onPrevToggle","onNextToggle","isHorizontal","onKeyboardResize","previousArrowClass","isCollapsible","isCollapsed","nextArrowClass","betweenResizablePanes","nearCollapsiblePane","nearCollapsedPane","barClasses","onDoubleClick","PANE_DEFAULTS","Splitter","validatePanes","panesOptions","pane","mapPaneOptions","panes","panesContent","dragIndex","isDragging","paneOptions","paneContent","mapSplitterPanes","splitterBar","paneKey","barKey","onBarDragResize","onBarToggle","onBarKeyboardResize","updatedState","paneProps","getPaneProps","onLayoutChange","barElement","surroudingPanes","prevElement","nextElement","startTime","originalX","originalY","originalPrevSize","elementSize","originalNextSize","resetDragState","containerSize","isContainer","sizeType","defaultPanes","panesDuringOnChange","isControlledState","previousElementSibling","toPixels","splitterSize","prevSize","nextSize","prevOptions","px","prevDragState","initialSize","nextDragState","paneState","newSize","paramsSerializer","serializedParams","hashmarkIndex","__CANCEL__","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","runClearTimeout","Item","env","argv","versions","addListener","once","removeListener","removeAllListeners","prependListener","prependOnceListener","binding","cwd","chdir","umask","settle","buildURL","parseHeaders","isURLSameOrigin","createError","requestData","requestHeaders","request","auth","username","password","Authorization","btoa","onreadystatechange","readyState","responseURL","responseHeaders","getAllResponseHeaders","responseText","onabort","ontimeout","cookies","xsrfValue","setRequestHeader","onDownloadProgress","upload","enhanceError","config1","config2","Cancel","setupConfig","defaultConfig","outerConfig","newObj","desc","_interopRequireWildcard","_react","_reactDom","_reactLifecyclesCompat","parentGroup","transitionGroup","_default","polyfill","componentWillMount","componentWillUpdate","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","isReactComponent","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","newApiName","maybeSnapshot","snapshot","__suppressDeprecationWarning","classNamesShape","timeoutsShape","_propTypes","_ChildMapping","appeared","getInitialChildMapping","symbolObservablePonyfill","require","TYPED_OK","Uint16Array","Int32Array","_has","sources","shrinkBuf","buf","subarray","fnTyped","arraySet","dest","src_offs","dest_offs","flattenChunks","chunks","fnUntyped","setTyped","Buf8","Buf16","Buf32","STR_APPLY_OK","STR_APPLY_UIA_OK","_utf8len","buf2binstring","string2buf","m_pos","str_len","buf_len","binstring2buf","buf2string","c_len","utf16buf","utf8border","adler","s1","s2","crcTable","makeTable","crc","configuration_table","trees","adler32","crc32","strm","errorCode","rank","zero","flush_pending","avail_out","pending_buf","pending_out","next_out","total_out","flush_block_only","_tr_flush_block","block_start","strstart","put_byte","putShortMSB","read_buf","avail_in","next_in","total_in","longest_match","cur_match","chain_length","max_chain_length","scan","best_len","prev_length","nice_match","w_size","MAX_MATCH","_win","wmask","w_mask","strend","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","more","_w_size","window_size","hash_size","ins_h","hash_shift","hash_mask","deflate_fast","flush","hash_head","bflush","match_length","_tr_tally","max_lazy_match","MIN_MATCH","last_lit","deflate_slow","max_insert","prev_match","strategy","match_available","Config","good_length","max_lazy","nice_length","max_chain","DeflateState","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","level","dyn_ltree","HEAP_SIZE","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","MAX_BITS","heap","heap_len","heap_max","l_buf","lit_bufsize","d_buf","opt_len","static_len","bi_buf","bi_valid","deflateResetKeep","data_type","_tr_init","deflateReset","deflateInit2","windowBits","memLevel","max_block_size","max_start","deflateInit","deflateSetHeader","old_flush","beg","hcrc","os","bstate","deflate_huff","deflate_rle","_tr_align","_tr_stored_block","deflateEnd","deflateSetDictionary","dictionary","avail","tmpDict","dictLength","deflateInfo","extra_lbits","extra_dbits","extra_blbits","bl_order","static_ltree","static_dtree","D_CODES","_dist_code","_length_code","base_length","static_l_desc","static_d_desc","static_bl_desc","base_dist","StaticTreeDesc","static_tree","extra_bits","extra_base","elems","max_length","has_stree","TreeDesc","dyn_tree","stat_desc","max_code","d_code","dist","put_short","send_bits","send_code","tree","bi_reverse","gen_codes","bits","next_code","init_block","LITERALS","END_BLOCK","bi_windup","smaller","_n2","_m2","pqdownheap","compress_block","ltree","dtree","lc","lx","build_tree","stree","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","stored_len","copy_block","LENGTH_CODES","L_CODES","tr_static_init","opt_lenb","static_lenb","max_blindex","black_mask","detect_data_type","BL_CODES","build_bl_tree","lcodes","dcodes","blcodes","send_all_trees","STATIC_TREES","bi_flush","zlib_deflate","ZStream","Deflate","chunkSize","opt","gzip","ended","_dict_set","deflator","_mode","onEnd","onData","deflateRaw","createThunkMiddleware","extraArgument","thunk","withExtraArgument","_objectWithoutProperties","sourceSymbolKeys","Direction","newDate","setDate","expectedMonth","candidate","Day","weekDay","Forward","newDay","ScrollDirection","durationInMonths","durationInYears","isEqual","expected","weekStartDay","Monday","Backward","firstWeekInYear","diffInMS","RowHeightService","rowHeight","detailRowHeight","heights","agg","expandDetail","updateRowHeight","collapseDetail","totalHeight","curr","ScrollAction","PageAction","ScrollerService","onScrollAction","onPageAction","firstLoaded","bottomOffset","topOffset","rowHeightService","lastLoaded","lastScrollTop","offsetBufferRows","rowsForHeight","skipWithOffset","rowOffset","offsetSize","firstItemIndex","lastItemIndex","nonVisibleBuffer","Action","CalendarViewEnum","scrollModifiers","scrollNormalizers","scrollValidators","Virtualization","animationInProgress","scrollTo","scrollProperty","scrollContainer","scrollToIndex","animateToIndex","cancelAnimationFrame","cancelAnimation","indexOffset","getContainerScrollDirection","scrollRange","scrollStep","modifyScroll","normalizeScroll","isScrollValid","scrollToBottom","scrollDuration","containerScroll","containerScrollPosition","maxScrollDifference","maxScroll","containerMaxScroll","difference","containerScrollSize","containerOffsetSize","initServices","dimension","itemWidth","scrollerService","scrollOffsetSize","getContainerProperty","propertyName","handleScroll","scrollAction","pageAction","handleScrollAction","handlePageAction","activeIndex","itemOffset","isIndexVisible","containerTop","containerBottom","isListScrolled","lastTotal","lastDirection","lastTake","vertexLength","placeholderStyle","rootClassNames","scrollableClassNames","forceScroll","CalendarCell","handleMouseEnter","handleMouseLeave","shouldComponentUpdate","xProps","yProps","compareProps","isWeekend","isFocused","isRangeStart","isRangeMid","isRangeEnd","isRangeSplitStart","isRangeSplitEnd","isToday","isDisabled","isEndActive","activeRangeEnd","isStartActive","rootClassName","CalendarWeekCell","EMPTY_SELECTIONRANGE","viewInRange","MIDNIGHT_DATE","MIN_DATE","MAX_DATE","MIN_TIME","MAX_TIME","isInRange","selectionRange","shiftWeekNames","domContainerFactory","EMPTY_DATA","ACTIONS","Left","Up","Right","Down","PrevView","NextView","FirstInView","LastInView","CenturyViewService","addToDate","datesList","cellUID","focusedDate","isActiveView","selectedDate","viewDate","firstDate","lastDate","today","baseDate","cellOffset","cellDate","normalize","isSelectedFromArray","cellTitle","isInArray","aboveMin","belowMax","isInSameView","navigationTitle","rowLength","DecadeViewService","MonthViewService","firstMonthDate","lastMonthDate","abbrMonthNames","wideMonthNames","prependCell","YearViewService","_intl","changedYear","candidateValue","services","decade","century","BusViewService","onViewChanged","service","moveDown","moveUp","moveToBottom","activeView","canMoveDown","canMoveUp","didCalculate","ensureHeights","calendarHeight","calculateHeights","ul","td","th","tbody","monthHeader","navigationList","navElement","viewFactory","renderWeekHeader","viewElement","contentElement","getScrollable","scrollableElement","monthView","yearView","decadeView","getBody","hostContainer","monthViewHeight","headerHeight","scrollableContentHeight","calendarWidth","monthViewWidth","scrollableContentWidth","yearViewHeight","scrollableYearContentHeight","yearViewWidth","decadeViewHeight","centuryViewHeight","decadeViewWidth","centuryViewWidth","navigationItemHeight","viewHeight","viewType","viewDimension","viewWidth","viewProp","appendedContent","KEY_TO_ACTION","UpperView","LowerView","bus","ScrollSyncService","monthScrolled","navScrolled","magnitude","divideByMagnitude","powerByMagnitude","sync","scrollSiblingOf","scrolledElement","siblingComponent","calculateScroll","WeekNamesService","getWeekNames","includeWeekNumber","weekNames","View","buildWeekNumber","weekCellValue","getWeekNumber","uniqueID","cellProps","weekCell","buildRow","cell","aria","firstWeekDateContext","rowCtx","weekNumber","onCellEnter","onCellLeave","showWeekNumbers","weekService","colSpan","scope","isMonthView","prevWeekDate","nextWeekDate","CalendarHeaderTitle","prevView","nextView","increaseValue","decreaseValue","toggleCalendar","swapStartEnd","toggleDateTimeSelector","selectNow","toggleClock","Header","getTitle","rangeLength","nextDate","handleTitleClick","handleTodayClick","todayIsInRange","onTodayClick","localization","todayMessage","titleClassNames","todayClassNames","headerTitleProps","headerTitle","ViewList","shouldScroll","focusActiveDate","focusedCell","nextActiveCell","blurActiveDate","handleVirtualizationMount","virtualization","viewOffset","indexToScroll","buildMonthView","cols","buildDates","calendarView","handleDateChange","scrollableHeight","getTake","isTodayClick","lastView","lastFocus","smoothScroll","_prevProps","_prevState","didViewChange","activeDate","didViewChanged","viewListBody","CalendarNavigationItem","buildNavigationItem","navigationItemProps","navigationItem","maxViewHeight","navigationBody","virtualizationProp","propValue","Calendar","scrollSyncService","calendarViewList","handleNavigationChange","handleViewChange","canNavigateDown","handleMouseDown","preventScroll","defaultActiveView","bottomView","topView","didValueChange","sanitizedValue","calendarBody","approximateStringMatching","oldTextOrigin","oldFormat","newTextOrigin","oldTextSeparator","oldText","deletedSymbol","dateSymbolMap","invalidClasses","KendoDate","intlProvider","formatPlaceholder","leadingZero","typedMonthPart","knownParts","_value","monthNames","allFormatedMonths","setValue","modifyExisting","hasValue","getExisting","getDateObject","getTextAndFormat","dateFormatString","sampleFormat","setExisting","modifyPart","setMinutes","setSeconds","parsePart","currentChar","resetLeadingZero","dateParts","baseFormat","replaced","parsedDate","matchMonth","middle","middleNumber","monthNumber","isAbbrMonth","partMap","symbolMap","hasLeadingZero","partPattern","typedChar","monthAsNum","dateFormatParts","partLength","returnValue","resultText","resultFormat","currentSymbol","TIME_PART","defaultGetters","generateGetters","getters","getterByPart","convertToObject","gettersFactory","generateSnappers","steps","minValue","snapValue","snappersFactory","snappers","getNow","maxValue","isInTimeRange","normalizedValue","normalizedMin","DateInput","kendoDate","spinnersMouseDown","dateBeforeChange","navigationOnly","setSelection","selectionBySymbol","switchDateSegment","elementClick","selectionByIndex","increasePart","decreasePart","modifyDateSegmentValue","elementKeyDown","_lastSelectedSymbol","currentText","wrapperClassesInstance","dateinput","onInput","minTime","maxTime","previousFormatSymbol","currentStepSymbol","DatePicker","_popupId","_dateInput","shouldFocusDateInput","setDateInputRef","dateInput","setCalendarRef","nextShow","handleInputValueChange","handleValueChange","handleCalendarValueChange","mergeTime","showDuringOnChange","setShow","handleIconClick","handleIconMouseDown","defaultShow","otherPopupSettings","wrapperClassNames","popupClassNames","dateInputProps","popupProps","calendarProps","rangeValue","isAM","inReverseRange","DayPeriodService","hourAM","candidateAM","normalizedRange","dayPeriod","isRangeChanged","limitRange","valueInList","minHour","maxHour","timeListHeight","timeWrapper","distanceFromMin","borderValue","barrier","limitDown","limitUp","HOURS_IN_DAY","HoursService","boundRange","insertUndividedMax","toListItem","selectedValue","getHour","countFromMin","addLast","addMissing","isLastMissing","missing","isMissing","divideByStep","lastHour","missingItem","MINUTES_IN_HOUR","MinutesService","getMinute","lastMinute","SECONDS_IN_HOUR","SecondsService","getSecond","lastSecond","TimeList","scrollUp","bottomThreshold","topThreshold","listHeight","configureServices","newMin","newMax","serviceSettings","handleMouseOver","msTransform","TimePart","timeLists","timeList","activeListIndex","hasActiveButton","timeFormatReducer","timeFormatFilter","prevItem","focusList","listReducer","showNowButton","hasSteps","nowButton","handleListBlur","handleListFocus","snapTime","onNowClick","selectNowMessage","btn","_nowButton","cancelButton","TimeSelector","focusActiveList","timePart","handleAccept","mergeValue","handleReject","onReject","handleNowClick","valueMerger","cancelMessage","setMessage","_cancelButton","_acceptButton","TimePicker","_timeSelector","setTimeSelectorRef","timeSelector","handleValueReject","normalizeTime","toggleClockMessage","toggleTimeMessage","HorizontalViewList","rotateSelectionRange","needRotate","lastViewsCount","views","isDateInList","didViewsCountChange","allowReverse","extractFocusedDate","single","MultiViewCalendar","selectedMultiple","selectedRange","wrapperID","calculateFocusFromValue","clampRange","rangeWithFocused","generateRange","shouldSwap","activeRange","canNavigate","isListInRange","clampDate","shouldAutoCorrect","handleCellEnter","handlePrevButtonClick","handleNextButtonClick","index_1","calculatedFocus","extractActiveRange","_focusedDate","wrapperClassName","visualizedRange","wrapperAria","prevViewTitle","nextViewTittle","isPrevDisabled","isNextDisabled","prevBtnAria","nextBtnAria","WRAPPER_STYLES","DateRangePicker","_startInputId","_endInputId","shouldFocusCalendar","setStartDateInputRef","_startDateInput","setEndDateInputRef","_endDateInput","focusCalendarElement","calculateValue","calculateShow","handleReverseClick","handleReverseMouseDown","handleEndChange","handleStartChange","extractRangeFromValue","handleCalendarChange","focusDateInputElement","startDateInputId","startDateInputSettings","endDateInputId","endDateInputSettings","startMessage","endMessage","separatorMessage","startDateInputProps","endDateInputProps","calendarSettings","reverseButton","startDateInput","swapButton","endDateInput","Button","toggleIfApplicable","togglable","_activeTemp","look","primary","imageAlt","htmlAttributes","hasIcon","buttonProps","iconEl","alt","ButtonGroup","mapButtons","groupClasses","groupProps","renderButton","ButtonItem","onDown","onPointerDown","Render","SplitButtonItem","getAnchorAlign","getPopupAlign","SplitButton","mainButton","buttonsData","dispatchPopupEvent","dispatchClickEvent","arrowKey","clickedItemIndex","onSplitPartClick","toOpen","onDownSplitPart","onItemDown","buttonClass","renderPopup","isItemDisabled","onButtonClick","DropDownButtonItem","DropDownButton","onClickMainButton","ToolbarItem","ToolbarButton","adjustTabIndex","Toolbar","mapToolbarChild","toolbarItem","mapItemChildren","tool","mapButton","buttonRef","focusButton","onWindowResize","newSizes","onResize","prevFocusedIndex","tabIndex_1","toolbarButton","currentFocused","prevButton","ToolbarSeparator","DateTimeSelector","_timePart","nextPart","shouldFocusPart","dateValue","timeValue","timeOverride","hasDateValue","mergeDate","handleTimeListContainerChange","handleDateClick","handleTimeClick","handleTimePartMount","setButtonClassName","dateMessage","timeMessage","normalizeRange","DateTimePicker","_dateTimeSelector","handleDateIconClick","dateTimeSelector","onCloseButtonClick","closeIcon","windowStage","Dialog","DialogRef","titleId","generateTitleId","handleCloseDialog","focusableElements","modal","firstFocusableElement","focusableContent","lastFocusableElement","autoFocus","contentStyle","getContent","actions","getActionBar","onMinimizeButtonClick","onFullScreenButtonClick","onRestoreButtonClick","stage","minimizeButtonRender","minimizeButton","maximizeButtonRender","maximizeButton","restoreButtonRender","restoreButton","closeButtonRender","WindowTitleBar","ResizeHandlers","MiddleLayerOptimization","shouldUpdateOnDrag","Window","windowCoordinatesState","differenceLeft","differenceTop","FULLSCREEN","dispatchMoveEvent","MINIMIZED","handleRestore","onStageChange","handleFullscreen","handleMinimize","handleCloseWindow","getInitialTop","initialTop","initialHeight","getInitialLeft","initialLeft","initialWidth","getInitialWidth","getInitialHeight","leftBeforeAction","topBeforeAction","widthBeforeAction","heightBeforeAction","handleDoubleClick","handleResize","currentWidth","currentHeight","heightDifference","widthDifference","hight","handleBrowserWindowResize","classNamesWindow","windowElement","doubleClickStageChange","initialwidth","isBlank","isNotNullOrEmptyString","isNullOrEmptyString","isNumeric","filters","ifElse","predicate","reduceRight","toUTC","what","pairwise","accessor","isNotEmpty","formatDescriptors","formatter","sanitizeDateLiterals","removeAfterDot","directionFormatter","aggregates","formatSort","formatGroup","formatAggregates","aggregate","formatDateValue","transformSkip","transformTake","transformGroup","transformSort","transformAggregates","filterFormatter","convert","translateAggregate","translateAggregates","translateGroup","hasSubgroups","Aggregates","Member","HasSubgroups","Items","Key","normalizeOperator","equal","equalto","ge","greater","greaterthan","greaterthanequal","isempty","isequalto","isgreaterthan","isgreaterthanorequalto","islessthan","islessthanorequalto","isnotempty","isnotequalto","isnull","le","less","lessthan","lessthanequal","ne","notequal","notequals","notequalto","notsubstringof","logic","operatorsMap","doesnotcontain","doesnotendwith","doesnotstartwith","endswith","eq","gt","gte","isnotnull","lt","lte","neq","startswith","itemProp","op","transformCompositeFilter","combiner","for","aa","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","updater","isPureReactComponent","__self","__source","$$typeof","_owner","keyPrefix","da","ba","createRef","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","_ctor","_status","_result","useCallback","useEffect","useImperativeHandle","useDebugValue","useLayoutEffect","useMemo","useReducer","useRef","useState","Fragment","Profiler","StrictMode","Suspense","createFactory","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentDispatcher","ReactCurrentBatchConfig","suspense","ReactCurrentOwner","IsSomeRendererActing","ea","extractEvents","eventTypes","fa","phasedRegistrationNames","ha","registrationName","ia","ja","dependencies","ka","la","ma","oa","qa","va","wa","ra","xa","ya","Aa","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","Ba","Ca","injectEventPluginOrder","injectEventPluginsByName","Da","stateNode","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","Ra","Sa","Ta","Ua","Wa","Xa","_debugOwner","_debugSource","lineNumber","Ya","Za","$a","ab","db","eb","fb","gb","hb","ib","jb","kb","lb","mb","ob","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","tb","ub","vb","qb","rb","setAttributeNS","yb","_valueTracker","stopTracking","xb","Ab","_wrapperState","initialChecked","Bb","initialValue","controlled","Cb","Eb","Fb","Gb","Ib","Hb","Jb","defaultSelected","Kb","Lb","Mb","Nb","xlinkHref","Ob","Pb","Qb","Rb","Sb","MSApp","execUnsafeLocalFunction","Tb","lastChild","nodeValue","Ub","Vb","animationend","animationiteration","animationstart","transitionend","Wb","Xb","Yb","Zb","$b","ac","bc","dc","ec","alternate","effectTag","fc","memoizedState","dehydrated","gc","ic","hc","jc","kc","mc","nc","oc","pc","qc","rc","sc","tc","uc","vc","zc","blockedOn","topLevelType","eventSystemFlags","Ac","pointerId","Bc","Cc","Ec","Fc","unstable_runWithPriority","hydrate","containerInfo","Gc","Hc","Ic","Jc","Kc","unstable_scheduleCallback","unstable_NormalPriority","Lc","Mc","correspondingUseElement","Nc","Oc","dispatchConfig","Pc","_targetInst","Qc","Rc","Sc","Tc","Uc","Interface","Wc","eventPool","Xc","destructor","Vc","getPooled","cancelBubble","persist","eventPhase","bubbles","cancelable","timeStamp","isTrusted","Yc","animationName","elapsedTime","pseudoElement","Zc","clipboardData","$c","detail","ad","relatedTarget","bd","cd","Esc","Spacebar","Del","Win","Apps","Scroll","MozPrintableKey","ed","12","13","16","17","18","19","27","32","33","34","35","36","37","38","39","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","fd","Alt","Control","Meta","Shift","gd","getModifierState","hd","jd","kd","ld","md","nd","screenX","screenY","fromElement","toElement","movementX","movementY","od","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","pd","qd","rd","sd","wheelDeltaX","wheelDeltaY","wheelDelta","deltaZ","deltaMode","ud","vd","xd","yd","zd","Ad","Bd","Cd","Dd","bubbled","captured","eventPriority","getEventPriority","Fd","unstable_UserBlockingPriority","Gd","Hd","Jd","Kd","targetInst","ancestors","Ld","Nd","Od","Pd","Qd","Dc","Rd","Sd","WeakMap","xc","Set","yc","Td","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","flex","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","orphans","tabSize","widows","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","Ud","Vd","Wd","Xd","menuitem","embed","hr","keygen","link","param","track","wbr","Yd","Zd","$d","ae","be","ce","de","fe","HTMLIFrameElement","contentWindow","contentEditable","me","oe","pe","qe","se","previousSibling","te","ue","ve","we","xe","ye","ze","Ae","Be","Ce","De","Ee","Fe","Ge","He","Ie","Je","Ke","Le","beforeInput","compositionEnd","compositionStart","compositionUpdate","Me","Ne","Oe","Pe","Se","Qe","Re","Te","email","tel","Ue","Ve","We","Xe","Ye","Ze","$e","af","bf","cf","detachEvent","df","ef","attachEvent","ff","gf","hf","lf","jf","_isInputEventSupported","kf","mouseEnter","mouseLeave","pointerEnter","pointerLeave","mf","parentWindow","of","pf","qf","rf","sf","tf","uf","vf","wf","xf","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","yf","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","Af","Bf","Cf","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","unstable_cancelCallback","Of","unstable_shouldYield","Pf","unstable_requestPaint","Qf","unstable_now","Rf","unstable_getCurrentPriorityLevel","Sf","unstable_ImmediatePriority","Tf","Uf","Vf","unstable_LowPriority","Wf","unstable_IdlePriority","Xf","Yf","Zf","$f","ag","cg","dg","eg","fg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","childExpirationTime","vg","firstContext","expirationTime","wg","xg","responders","yg","zg","baseState","firstUpdate","lastUpdate","firstCapturedUpdate","lastCapturedUpdate","firstEffect","lastEffect","firstCapturedEffect","lastCapturedEffect","Ag","Bg","suspenseConfig","nextEffect","Cg","Dg","updateQueue","Eg","Fg","Gg","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Sg","_reactInternalFiber","Pg","Qg","Rg","Tg","Ug","Vg","Wg","Xg","Yg","_stringRef","Zg","$g","ah","bh","elementType","dh","eh","ta","fh","gh","ih","jh","kh","lh","mh","nh","oh","ph","qh","memoizedProps","revealOrder","rh","responder","sh","uh","vh","wh","xh","yh","zh","Ah","Ch","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","baseUpdate","Oh","Ph","Qh","lastRenderedReducer","lastRenderedState","eagerReducer","eagerState","Rh","Sh","Th","Uh","deps","Vh","Wh","Xh","Yh","Zh","$h","readContext","useResponder","useDeferredValue","useTransition","unstable_next","ci","di","ei","fi","gi","hi","pendingProps","ji","ki","mi","ni","oi","pi","qi","si","ti","ui","vi","wi","pendingContext","Hi","Ji","Ki","xi","retryTime","yi","fallback","unstable_avoidThisFallback","zi","Ai","isBackwards","rendering","tail","tailExpiration","tailMode","Bi","Ci","Li","Mi","Ni","onclick","Oi","WeakSet","Pi","Si","Ri","Ti","Ui","__reactInternalSnapshotBeforeUpdate","Vi","Wi","Qi","Xi","Yi","Zi","$i","_reactRootContainer","aj","wasMultiple","bj","cj","dj","ej","fj","gj","hj","ij","componentDidCatch","jj","componentStack","gk","kj","lj","mj","wj","xj","yj","zj","Aj","Bj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","timeoutMs","Kj","Lj","Mj","Nj","Oj","lastExpiredTime","Pj","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Qj","Rj","Sj","Tj","Uj","Vj","Wj","finishedWork","finishedExpirationTime","lastSuspendedTime","Xj","timeoutHandle","Yj","busyMinDurationMs","busyDelayMs","Zj","bk","ck","pingCache","dk","ek","fk","createElementNS","createTextNode","ik","firstSuspendedTime","rangeCount","Db","focusedElem","jk","ee","compareDocumentPosition","removeAllRanges","addRange","Dh","hk","Eh","Fh","xk","Di","Ei","Fi","wd","Gi","kk","lk","mk","hidden","Va","nk","unstable_observedBits","pk","pendingChildren","qk","rk","sk","tk","uk","vk","wk","wc","_internalRoot","yk","Ak","hasAttribute","zk","Bk","unmount","ak","Ck","createPortal","unstable_renderSubtreeIntoContainer","unmountComponentAtNode","unstable_createPortal","unstable_batchedUpdates","flushSync","Events","findFiberByHostInstance","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","bundleType","rendererPackageName","Dk","Ek","MessageChannel","unstable_forceFrameRate","performance","port2","port1","onmessage","postMessage","sortIndex","priorityLevel","unstable_wrapCallback","unstable_continueExecution","unstable_pauseExecution","unstable_getFirstCallbackNode","unstable_Profiling","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propFullName","secret","getShim","ReactPropTypes","typeOf","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Portal","isValidElementType","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","originalModule","webpackPolyfill","runtime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","innerFn","outerFn","tryLocsList","protoGenerator","Generator","_invoke","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","previousPromise","callInvokeWithMethodAndArg","invoke","__await","unwrapped","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","awrap","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","Axios","mergeConfig","createInstance","axios","instanceConfig","isCancel","spread","InterceptorManager","dispatchRequest","interceptors","interceptor","fulfilled","getUri","eject","transformData","isAbsoluteURL","combineURLs","throwIfCancellationRequested","throwIfRequested","baseURL","reason","normalizedName","isAxiosError","description","columnNumber","ignoreDuplicateOf","originURL","urlParsingNode","resolveURL","protocol","host","hostname","port","requestURL","expires","domain","secure","cookie","toGMTString","decodeURIComponent","relativeURL","executor","resolvePromise","_createForOfIteratorHelper","allowArrayLike","it","minLen","_arrayLikeToArray","_unsupportedIterableToArray","_e2","normalCompletion","didErr","_e3","_step","_iterator","off_event","nodeInterop","_getRequireWildcardCache","hasPropertyDescriptor","_setupConfig","cacheBabelInterop","cacheNodeInterop","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","_isNativeReflectConstruct","Super","NewTarget","ComponentToWrap","promiseTrackerComponent","internalPromiseInProgress","notifyPromiseInProgress","updateProgress","subscribeToCounterUpdate","afterUpdateCallback","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_React$useState","_React$useState2","setInternalPromiseInProgress","setPromiseInProgress","_React$useState3","_React$useState4","_React$useState5","_React$useState6","latestInternalPromiseInProgress","updatePromiseTrackerStatus","areaAffected","EXIF","EXIFwrapped","ExifTags","Tags","TiffTags","GPSTags","IFD1Tags","StringValues","ExposureProgram","MeteringMode","255","LightSource","11","14","15","21","22","23","24","Flash","SensingMethod","SceneCaptureType","SceneType","CustomRendered","WhiteBalance","GainControl","Contrast","Saturation","Sharpness","SubjectDistanceRange","FileSource","Components","imageHasData","exifdata","handleBinaryFile","binFile","findEXIFinJPEG","iptcdata","dataView","DataView","getUint8","byteLength","isFieldSegmentStart","nameHeaderLength","sectionLength","getUint16","readIPTCData","findIPTCinJPEG","isXmpEnabled","xmpdata","getStringFromDB","xmpString","xmpEndIndex","indexOfXmp","xml2Object","findXMPinJPEG","contentType","binary","base64ToArrayBuffer","fileReader","http","objectURLToBlob","Blob","File","readEXIFData","IptcFieldMap","fieldValue","dataSize","segmentStartPos","getInt16","readTags","tiffStart","dirStart","bigEnd","entryOffset","readTagValue","vals","numerator","denominator","numValues","getUint32","valueOffset","getInt32","outstr","exifData","gpsData","tiffOffset","firstIFDOffset","ExifIFDPointer","GPSInfoIFDPointer","IFD1OffsetPointer","getNextIFDOffset","thumbTags","JpegIFOffset","JpegIFByteCount","tOffset","tLength","readThumbnailImage","xml2json","xml","json","attributes","attribute","hasChildNodes","old","itemAtt","dataKey","dataValue","enableXmp","disableXmp","getData","HTMLImageElement","getTag","getIptcTag","getAllTags","getAllIptcTags","strPretty","readFromBinaryFile","listing","pre","textarea","suppressContentEditableWarning","suppressHydrationWarning","domNamespace","childIndex","threadID","exhausted","currentSelectValue","previousWasTextNode","makeStaticMarkup","suspenseDepth","contextIndex","contextStack","contextValueStack","clearProviders","pushProvider","popProvider","fallbackFrame","renderDOM","renderToString","renderToStaticMarkup","renderToNodeStream","renderToStaticNodeStream","_addClass","_removeClass","addClass","getClassNames","removeClasses","reflowAndAddClass","appearClassName","doneClassName","isStringClassNames","_this$getClassNames6","_hasClass","baseVal","replaceClassName","origClass","classToRemove","_args","_len2","_key2","handleLifecycle","handleEntering","_len3","_key3","handleEntered","_len4","_key4","handleExit","_len5","_key5","handleExiting","_len6","_key6","_len7","_key7","originalArgs","_child$props","inProp","_React$Children$toArr","takeUntil","notifier","TakeUntilOperator","takeUntilSubscriber","TakeUntilSubscriber","notifierSubscription","seenValue","switchMap","resultSelector","SwitchMapOperator","SwitchMapSubscriber","_innerSub","innerSubscription","mergeMap","concurrent","POSITIVE_INFINITY","MergeMapOperator","MergeMapSubscriber","hasCompleted","_tryNext","ish","catchError","CatchOperator","CatchSubscriber","err2","distinctUntilChanged","keySelector","DistinctUntilChangedOperator","DistinctUntilChangedSubscriber","hasKey","VALID_PUNCTUATION","ParseError","maxLength","createExtensionPattern","purpose","possibleSeparatorsBetweenNumberAndExtLabel","possibleSeparatorsNumberExtLabelNoComma","VALID_PHONE_NUMBER","VALID_PHONE_NUMBER_START_REG_EXP","VALID_PHONE_NUMBER_WITH_EXTENSION","VALID_PHONE_NUMBER_PATTERN","isViablePhoneNumber","EXTN_PATTERN","DIGITS","parseDigit","parseIncompletePhoneNumber","_isArray","parsePhoneNumberCharacter","prevParsedCharacters","checkNumberLength","nationalNumber","checkNumberLengthForType","type_info","possible_lengths","mobile_type","merged","mergeArrays","actual_length","minimum_length","isPossibleNumber","matchesEntirely","regular_expression","NON_FIXED_LINE_PHONE_TYPES","getNumberType","phone","isNumberTypeEqualTo","_NON_FIXED_LINE_PHONE","FIRST_GROUP_PATTERN","formatNationalNumberUsingFormat","useInternationalFormat","withNationalPrefix","formattedNumber","carrierCode","internationalFormat","applyInternationalSeparatorStyle","SINGLE_IDD_PREFIX_REG_EXP","formatExtension","_objectSpread","addExtension","formatNationalNumber","formatRFC3966","fromCountry","iddPrefix","countryMetadata","getIddPrefix","formatIDD","formatAs","nationalNnumber","leadingDigitsPatterns","lastLeadingDigitsPattern","chooseFormatForNumber","PhoneNumber","_metadata","isCountryCode","isNonGeographicCallingCode","phoneNumber","CAPTURING_DIGIT_PATTERN","extractNationalNumber","_extractNationalNumbe","prefixPattern","prefixMatch","capturedGroupsCount","hasCapturedGroups","prefixBeforeNationalNumber","possiblePositionOfTheFirstCapturedGroup","extractNationalNumberFromPossiblyIncompleteNumber","nationalSignificantNumber","shouldExtractNationalPrefix","extractCountryCallingCode","numberWithoutIDD","IDDPrefixPattern","matchedGroups","stripIddPrefix","_extractCountryCallin","possibleShorterNumber","possibleShorterNationalNumber","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","shorterNumber","_countryCallingCode","getCountryByCallingCode","nationalPhoneNumber","possibleCountries","selectCountryFromList","PHONE_NUMBER_START_PATTERN","AFTER_PHONE_NUMBER_END_PATTERN","defaultCountry","_parseInput","extract","_part$split2","parseRFC3966","throwOnError","startsAt","extractFormattedPhoneNumber","isViablePhoneNumberStart","withExtensionStripped","numberWithoutExtension","extractExtension","parseInput","formattedPhoneNumber","_parsePhoneNumber","defaultCallingCode","exactCountry","parsePhoneNumber","hasSelectedNumberingPlan","extended","possible","normalizeArguments","_Array$prototype$slic2","arg_1","arg_2","arg_3","arg_4","parsePhoneNumberFromString","_normalizeArguments","AsyncAction","work","recycleAsyncId","requestAsyncId","execute","_execute","errored","errorValue","Scheduler","SchedulerAction","AsyncScheduler","debounceTime","dueTime","DebounceTimeOperator","DebounceTimeSubscriber","debouncedSubscription","lastValue","clearDebounce","dispatchNext","debouncedNext","ObjectUnsubscribedError","ObjectUnsubscribedErrorImpl","SubjectSubscription","subject","subscriberIndex","SubjectSubscriber","hasError","thrownError","asObservable","AnonymousSubject","isScheduler","fromArray","getCountries"],"mappings":"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MACP,GAAM,CAAC,MACP,GAAM,CAAC,MACP,GAAM,CAAC,MACP,GAAM,CAAC,MACP,GAAM,CAAC,MACP,GAAM,CAAC,MACP,GAAM,CAAC,MACP,GAAM,CAAC,MACP,GAAM,CAAC,MACP,IAAO,CAAC,MACR,IAAO,CAAC,KAAM,MACd,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,KAAM,MACd,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,KAAM,MACd,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,KAAM,MACd,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,KAAM,KAAM,MACpB,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,KAAM,MACd,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO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","file":"static/js/2.40f91e15.chunk.js","sourcesContent":["'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 * 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 */\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is'); // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n\n\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}","import defineProperty from \"./defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","module.exports = require(\"regenerator-runtime\");\n","/**\n * @hidden\n */\nexport var classNames = function classNames() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return args.filter(function (arg) {\n return arg !== true && !!arg;\n }).map(function (arg) {\n return Array.isArray(arg) ? classNames.apply(void 0, arg) : typeof arg === 'object' ? Object.keys(arg).map(function (key, idx) {\n return arg[idx] || arg[key] && key || null;\n }).filter(function (el) {\n return el !== null;\n }).join(' ') : arg;\n }).filter(function (arg) {\n return !!arg;\n }).join(' ');\n};","/* tslint:disable:no-bitwise */\n\n/**\n * @hidden\n */\nvar guid = function guid() {\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);\n }\n\n return id;\n};\n\nexport { guid };","/**\n * @hidden\n */\nvar 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};\nexport { Keys };","/**\n * @hidden\n */\nvar noop = function noop() {};\n\nexport { noop };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from './classNames';\n/**\n * @hidden\n */\n\nvar FloatingLabel =\n/** @class */\nfunction (_super) {\n __extends(FloatingLabel, _super);\n\n function FloatingLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.state = {\n focused: false\n };\n\n _this.handleFocus = function (_) {\n _this.setState({\n focused: true\n });\n };\n\n _this.handleBlur = function (_) {\n _this.setState({\n focused: false\n });\n };\n\n return _this;\n }\n\n FloatingLabel.prototype.render = function () {\n var _a = this.props,\n label = _a.label,\n id = _a.id,\n className = _a.className,\n value = _a.value,\n placeholder = _a.placeholder,\n valid = _a.valid,\n style = _a.style;\n var childClassNames = classNames({\n 'k-textbox-container': true,\n 'k-state-focused': this.state.focused,\n 'k-state-empty': !(value || placeholder),\n 'k-state-invalid': !valid && valid !== undefined,\n 'k-rtl': this.props.dir === 'rtl'\n }, className);\n return React.createElement(\"span\", {\n className: childClassNames,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n style: style,\n dir: this.props.dir\n }, this.props.children, label ? id ? React.createElement(\"label\", {\n htmlFor: id,\n className: \"k-label\"\n }, label) : React.createElement(\"span\", {\n className: \"k-label\"\n }, label) : null);\n };\n\n FloatingLabel.propTypes = {\n label: PropTypes.string,\n id: PropTypes.string,\n value: PropTypes.string,\n placeholder: PropTypes.string,\n valid: PropTypes.bool\n };\n return FloatingLabel;\n}(React.Component);\n\nexport default FloatingLabel;","/**\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 default 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 * @hidden\n */\nvar canUseDOM = Boolean( // from fbjs\ntypeof window !== 'undefined' && window.document && window.document.createElement);\nexport { canUseDOM };","var proxy = function proxy(a, b) {\n return function (e) {\n return b(a(e));\n };\n};\n\nvar bind = function bind(el, event, callback) {\n return el.addEventListener && el.addEventListener(event, callback);\n};\n\nvar unbind = function unbind(el, event, callback) {\n return el && el.removeEventListener && el.removeEventListener(event, callback);\n};\n\nvar noop = function noop() {\n /* empty */\n};\n\nvar preventDefault = function preventDefault(e) {\n return e.preventDefault();\n};\n\nvar touchRegExp = /touch/; // 300ms is the usual mouse interval;\n// // However, an underpowered mobile device under a heavy load may queue mouse events for a longer period.\n\nvar IGNORE_MOUSE_TIMEOUT = 2000;\n\nfunction normalizeEvent(e) {\n if (e.type.match(touchRegExp)) {\n return {\n pageX: e.changedTouches[0].pageX,\n pageY: e.changedTouches[0].pageY,\n clientX: e.changedTouches[0].clientX,\n clientY: e.changedTouches[0].clientY,\n type: e.type,\n originalEvent: e,\n isTouch: true\n };\n }\n\n return {\n pageX: e.pageX,\n pageY: e.pageY,\n clientX: e.clientX,\n clientY: e.clientY,\n offsetX: e.offsetX,\n offsetY: e.offsetY,\n type: e.type,\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey,\n altKey: e.altKey,\n originalEvent: e\n };\n}\n\nexport var Draggable = function Draggable(ref) {\n var this$1 = this;\n var press = ref.press;\n if (press === void 0) press = noop;\n var drag = ref.drag;\n if (drag === void 0) drag = noop;\n var release = ref.release;\n if (release === void 0) release = noop;\n var mouseOnly = ref.mouseOnly;\n if (mouseOnly === void 0) mouseOnly = false;\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._ignoreMouse = false;\n this._mouseOnly = mouseOnly;\n\n this._touchstart = function (e) {\n if (e.touches.length === 1) {\n this$1._pressHandler(e);\n }\n };\n\n this._touchmove = function (e) {\n if (e.touches.length === 1) {\n this$1._dragHandler(e);\n }\n };\n\n this._touchend = function (e) {\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 if (e.touches.length === 0 && e.changedTouches.length === 1) {\n this$1._releaseHandler(e);\n\n this$1._ignoreMouse = true;\n setTimeout(this$1._restoreMouse, IGNORE_MOUSE_TIMEOUT);\n }\n };\n\n this._restoreMouse = function () {\n this$1._ignoreMouse = false;\n };\n\n this._mousedown = function (e) {\n var which = e.which;\n\n if (which && which > 1 || this$1._ignoreMouse) {\n return;\n }\n\n bind(document, \"mousemove\", this$1._mousemove);\n bind(document, \"mouseup\", this$1._mouseup);\n\n this$1._pressHandler(e);\n };\n\n this._mousemove = function (e) {\n this$1._dragHandler(e);\n };\n\n this._mouseup = function (e) {\n unbind(document, \"mousemove\", this$1._mousemove);\n unbind(document, \"mouseup\", this$1._mouseup);\n\n this$1._releaseHandler(e);\n };\n\n this._pointerdown = function (e) {\n if (e.isPrimary && e.button === 0) {\n bind(document, \"pointermove\", this$1._pointermove);\n bind(document, \"pointerup\", this$1._pointerup);\n bind(document, \"pointercancel\", this$1._pointerup);\n bind(document, \"contextmenu\", preventDefault);\n\n this$1._pressHandler(e);\n }\n };\n\n this._pointermove = function (e) {\n if (e.isPrimary) {\n this$1._dragHandler(e);\n }\n };\n\n this._pointerup = function (e) {\n if (e.isPrimary) {\n unbind(document, \"pointermove\", this$1._pointermove);\n unbind(document, \"pointerup\", this$1._pointerup);\n unbind(document, \"pointercancel\", this$1._pointerup);\n unbind(document, \"contextmenu\", preventDefault);\n\n this$1._releaseHandler(e);\n }\n };\n};\n\nDraggable.supportPointerEvent = function supportPointerEvent() {\n return typeof window !== 'undefined' && window.PointerEvent;\n};\n\nDraggable.prototype.bindTo = function bindTo(element) {\n if (element === this._element) {\n return;\n }\n\n if (this._element) {\n this._unbindFromCurrent();\n }\n\n this._element = element;\n\n this._bindToCurrent();\n};\n\nDraggable.prototype._bindToCurrent = function _bindToCurrent() {\n var element = this._element;\n\n if (this._usePointers()) {\n bind(element, \"pointerdown\", this._pointerdown);\n return;\n }\n\n bind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n bind(element, \"touchstart\", this._touchstart);\n bind(element, \"touchmove\", this._touchmove);\n bind(element, \"touchend\", this._touchend);\n }\n};\n\nDraggable.prototype._unbindFromCurrent = function _unbindFromCurrent() {\n var element = this._element;\n\n if (this._usePointers()) {\n unbind(element, \"pointerdown\", this._pointerdown);\n unbind(document, \"pointermove\", this._pointermove);\n unbind(document, \"pointerup\", this._pointerup);\n unbind(document, \"contextmenu\", preventDefault);\n unbind(document, \"pointercancel\", this._pointerup);\n return;\n }\n\n unbind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n unbind(element, \"touchstart\", this._touchstart);\n unbind(element, \"touchmove\", this._touchmove);\n unbind(element, \"touchend\", this._touchend);\n }\n};\n\nDraggable.prototype._usePointers = function _usePointers() {\n return !this._mouseOnly && Draggable.supportPointerEvent();\n};\n\nDraggable.prototype.destroy = function destroy() {\n this._unbindFromCurrent();\n\n this._element = null;\n}; // Re-export as \"default\" field to address a bug\n// where the ES Module is imported by CommonJS code.\n//\n// See https://github.com/telerik/kendo-angular/issues/1314\n\n\nDraggable.default = Draggable; // Rollup won't output exports['default'] otherwise\n\nexport default Draggable;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport KendoDraggable from '@telerik/kendo-draggable';\n/**\n * @hidden\n */\n\nvar Draggable =\n/** @class */\nfunction (_super) {\n __extends(Draggable, _super);\n\n function Draggable() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n\n\n _this.element = null;\n _this.draggable = new KendoDraggable({\n press: function press(event) {\n if (_this.element && _this.props.onPress) {\n _this.props.onPress.call(undefined, {\n target: _this,\n event: event,\n element: _this.element\n });\n }\n },\n drag: function drag(event) {\n if (_this.element && _this.props.onDrag) {\n _this.props.onDrag.call(undefined, {\n target: _this,\n event: event,\n element: _this.element\n });\n }\n },\n release: function release(event) {\n if (_this.element && _this.props.onRelease) {\n _this.props.onRelease.call(undefined, {\n target: _this,\n event: event\n });\n }\n }\n });\n\n _this.assingRef = function (element) {\n _this.element = element;\n };\n\n return _this;\n }\n\n Draggable.prototype.componentDidMount = function () {\n if (this.element) {\n this.draggable.bindTo(this.element);\n }\n };\n\n Draggable.prototype.componentWillUnmount = function () {\n this.draggable.destroy();\n };\n\n Draggable.prototype.render = function () {\n return React.cloneElement(React.Children.only(this.props.children), {\n ref: this.assingRef\n });\n };\n\n Draggable.propTypes = {\n children: PropTypes.element.isRequired\n };\n return Draggable;\n}(React.Component);\n\nexport { Draggable };","import { FIELD_REGEX } from './constants';\nvar getterCache = {};\n\ngetterCache.undefined = function () {\n return undefined;\n};\n/**\n * @hidden\n */\n\n\nexport 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, fieldName) {\n fields.push(index !== undefined ? index : indexAccessor || fieldName);\n });\n\n getterCache[field] = function (obj) {\n var result = obj;\n\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}","import { FIELD_REGEX } from './constants';\nvar setterCache = {};\n\nsetterCache.undefined = function (obj) {\n return obj;\n};\n/**\n * @hidden\n */\n\n\nexport function setter(field) {\n if (setterCache[field]) {\n return setterCache[field];\n }\n\n var fields = [];\n field.replace(FIELD_REGEX, function (_match, index, indexAccessor, fieldName) {\n fields.push(index !== undefined ? index : indexAccessor || fieldName);\n });\n\n setterCache[field] = function (obj, value) {\n var root = obj;\n var depth = fields.length - 1;\n\n for (var idx = 0; idx < depth && root; idx++) {\n root = root[fields[idx]] = root[fields[idx]] || {};\n }\n\n root[fields[depth]] = value;\n };\n\n return setterCache[field];\n}","/**\n * @hidden\n */\nvar DISABLED_TABINDEX = -1;\n/**\n * @hidden\n */\n\nvar DEFAULT_TABINDEX = 0;\n/**\n * @hidden\n */\n\nexport var getTabIndex = function getTabIndex(tabIndex, disabled, useDefaultTabIndexWhenDisabled) {\n var parsedTabIndex = typeof tabIndex === 'string' ? parseInt(tabIndex, undefined) : tabIndex;\n\n if (parsedTabIndex === NaN) {\n return undefined;\n }\n\n return parsedTabIndex !== undefined ? parsedTabIndex : disabled ? useDefaultTabIndexWhenDisabled ? undefined : DISABLED_TABINDEX : DEFAULT_TABINDEX;\n};","import { classNames } from './classNames';\nimport { guid } from './guid';\nimport { Keys } from './keys';\nimport { noop } from './noop';\nimport { FormComponent } from './FormComponent';\nimport FloatingLabel from './FloatingLabel';\nimport dispatchEvent from './events/dispatchEvent';\nimport { canUseDOM } from './canUseDOM';\nimport { Draggable } from './Draggable';\nimport { focusFirstFocusableChild } from './focus';\nimport { useRtl } from './hooks';\nimport { getter } from './getter';\nimport { setter } from './setter';\nimport { clone, cloneArray, cloneValue, cloneObject, cloneDate } from './clone';\nimport { getTabIndex } from './getTabIndex';\nexport { classNames, guid, Keys, noop, FloatingLabel, FormComponent, dispatchEvent, canUseDOM, Draggable, focusFirstFocusableChild, useRtl, getter, setter, clone, cloneArray, cloneValue, cloneObject, cloneDate, getTabIndex };","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\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 groupSize: [3]\n },\n scientific: {\n patterns: [\"nEn\"],\n groupSize: []\n },\n percent: {\n patterns: [\"n%\"],\n groupSize: [3]\n },\n currency: {\n patterns: [\"$n\"],\n groupSize: [3],\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 groupSize: [3]\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: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n wide: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]\n },\n \"stand-alone\": {\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n wide: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]\n }\n },\n months: {\n format: {\n abbreviated: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n wide: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"]\n },\n \"stand-alone\": {\n abbreviated: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n wide: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"]\n }\n },\n quarters: {\n format: {\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"]\n },\n \"stand-alone\": {\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"]\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 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 USD: {\n _from: \"1792-01-01\"\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}","//The error is represented by unique name and corresponding message\n//The message can contain placeholders with index, e.g. {0}, {1}\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};","import errorDetails from './error-details';\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 = [],\n len = arguments.length;\n\n while (len--) {\n values[len] = arguments[len];\n }\n\n var flattenValues = flatten(values);\n var formattedMessage = this.message.replace(formatRegExp, function (match, index) {\n return flattenValues[parseInt(index, 10)];\n });\n return this.name + \": \" + formattedMessage;\n};\n\nIntlError.prototype.error = function error() {\n var values = [],\n len = arguments.length;\n\n while (len--) {\n values[len] = arguments[len];\n }\n\n return new Error(this.formatMessage(values));\n};\n\nvar flatten = function flatten(arr) {\n return arr.reduce(function (a, b) {\n return a.concat(b);\n }, []);\n};\n\nvar toIntlErrors = function toIntlErrors(errors) {\n var predicate = function predicate(prev, name) {\n prev[name] = new IntlError({\n name: name,\n message: errors[name]\n });\n return prev;\n };\n\n return Object.keys(errors).reduce(predicate, {});\n};\n\nvar errors = toIntlErrors(errorDetails);\nexport { errors, IntlError, toIntlErrors };","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 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\n if (name) {\n return name;\n }\n }\n\n if (likelySubtags[language]) {\n return likelySubtags[language];\n }\n}\n\nexport var cldr = defaultData;\nexport function getLocaleInfo(locale) {\n var info;\n\n if (isString(locale)) {\n info = localeInfo(locale);\n } else {\n info = locale;\n }\n\n return info;\n}\nexport function localeInfo(locale) {\n if (cldr[locale]) {\n return cldr[locale];\n }\n\n var likelySubtags = cldr.supplemental.likelySubtags;\n\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\n if (info) {\n return info;\n }\n }\n\n throw errors.NoLocale.error(locale);\n}","import { cldr } from './info';\n\nfunction territoryFromName(name, identity) {\n var likelySubtags = cldr.supplemental.likelySubtags;\n var parts = name.split(\"-\");\n\n if (likelySubtags) {\n var likelyName = likelySubtags[name] || likelySubtags[parts[0]];\n\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\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 return territory;\n}","import { getLocaleInfo } from './info';\nimport { EMPTY } from '../common/constants';\n\nfunction lowerArray(arr) {\n var result = [];\n\n for (var idx = 0; idx < arr.length; idx++) {\n result.push(arr[idx].toLowerCase());\n }\n\n return result;\n}\n\nfunction lowerObject(obj) {\n var result = {};\n\n for (var field in obj) {\n result[field] = obj[field].toLowerCase();\n }\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\n if (!result && lower) {\n result = formatNames[lowerNameType] = cloneLower(formatNames[nameType]);\n }\n\n return result;\n}","export var DECIMAL = \"decimal\";\nexport var CURRENCY = \"currency\";\nexport var ACCOUNTING = \"accounting\";\nexport var PERCENT = \"percent\";\nexport var SCIENTIFIC = \"scientific\";\nexport var CURRENCY_PLACEHOLDER = \"$\";\nexport var PERCENT_PLACEHOLDER = \"%\";\nexport var NUMBER_PLACEHOLDER = \"n\";\nexport var LIST_SEPARATOR = \";\";\nexport var GROUP_SEPARATOR = \",\";\nexport var POINT = \".\";\nexport var EMPTY = \"\";\nexport var DEFAULT_LOCALE = \"en\";","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 return new Date(year, month, day);\n}","import { cldr, getLocaleInfo } from './info';\nimport { errors } from '../errors';\nimport localeTerritory from './territory';\nimport parseRangeDate from './parse-range-date';\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;\nvar DEFAULT_CURRENCY_FRACTIONS = 2;\nvar SYMBOL = \"symbol\";\nvar INVALID_CURRENCY_CODE = 'XXX';\nvar GLOBAL_CURRENCIES = {\n '001': 'USD',\n // 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\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\n if (code !== INVALID_CURRENCY_CODE && info._tender !== 'false' && info._from) {\n if (!info._to) {\n var stillValidDate = parseRangeDate(info._from);\n\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\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 var currencyInfo = getCurrencyInfo(locale, currency, throwIfNoValid);\n\n if (!currencyInfo) {\n return;\n }\n\n if (!currencyInfo.displays) {\n var displays = [currency];\n\n for (var field in currencyInfo) {\n displays.push(currencyInfo[field]);\n }\n\n displays.sort(lengthComparer);\n currencyInfo.displays = displays;\n }\n\n return currencyInfo.displays;\n}\nexport function currencyDisplay(locale, options) {\n var value = options.value;\n var currency = options.currency;\n var currencyDisplay = options.currencyDisplay;\n 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}\nexport function currencyFractionOptions(code) {\n var minimumFractionDigits = DEFAULT_CURRENCY_FRACTIONS;\n var maximumFractionDigits = DEFAULT_CURRENCY_FRACTIONS;\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}\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\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 return currencyCode;\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}","export var DAYS_OF_WEEK = [\"sun\", \"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\"];\nexport var DEFAULT_TERRITORY = '001';","import { cldr, getLocaleInfo } from './info';\nimport localeTerritory from './territory';\nimport { DAYS_OF_WEEK, DEFAULT_TERRITORY } from './constants';\nimport { errors } from '../errors';\nvar NoWeekData = errors.NoWeekData;\nvar NoFirstDay = errors.NoFirstDay;\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\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 return info.firstDay;\n}","import { cldr, getLocaleInfo } from './info';\nimport localeTerritory from './territory';\nimport { DAYS_OF_WEEK, DEFAULT_TERRITORY } from './constants';\nimport { errors } from '../errors';\nvar NoWeekData = errors.NoWeekData;\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\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 info.weekendRange = {\n start: DAYS_OF_WEEK.indexOf(start),\n end: DAYS_OF_WEEK.indexOf(end)\n };\n return info.weekendRange;\n}","import { currencyDisplay, localeCurrency } from '../cldr';\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 return display;\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 var integerEnd = decimalIndex !== -1 ? decimalIndex : end + 1;\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\n if (value) {\n parts.push(value);\n }\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\n if (value) {\n parts.push(value);\n }\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';\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 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;\nexport default function round(value, precision) {\n var result = value;\n var decimals = precision || 0;\n result = result.toString().split('e');\n result = Math.round(Number(result[0] + 'e' + (result[1] ? Number(result[1]) + decimals : decimals)));\n result = result.toString().split('e');\n result = Number(result[0] + 'e' + (result[1] ? Number(result[1]) - decimals : -decimals));\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 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';\nvar DEFAULT_DECIMAL_ROUNDING = 3;\nvar DEFAULT_PERCENT_ROUNDING = 0;\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\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\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\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\n if (value < 0) {\n pattern = pattern.replace(NUMBER_PLACEHOLDER, \"-\" + NUMBER_PLACEHOLDER);\n }\n\n return pattern;\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); //return number in exponential format\n\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 value = round(value, maximumFractionDigits);\n var negative = value < 0;\n var parts = value.split(POINT);\n var integer = parts[0];\n var fraction = pad(parts[1] ? parts[1].replace(trailingZeroRegex, EMPTY) : EMPTY, minimumFractionDigits, true); //exclude \"-\" if number is negative.\n\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 ? 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 return result;\n}","import { CURRENCY, PERCENT, LIST_SEPARATOR, GROUP_SEPARATOR, CURRENCY_PLACEHOLDER, PERCENT_PLACEHOLDER, POINT, EMPTY } from '../common/constants';\nimport formatCurrencySymbol from './format-currency-symbol';\nimport groupInteger from './group-integer';\nimport round from '../common/round';\nvar PLACEHOLDER = \"__??__\";\nvar SHARP = \"#\";\nvar ZERO = \"0\";\nvar literalRegExp = /(\\\\.)|(['][^']*[']?)|([\"][^\"]*[\"]?)/g;\nvar trailingZerosRegExp = /(\\.(?:[0-9]*[1-9])?)0+$/g;\nvar trailingPointRegExp = /\\.$/;\nvar commaRegExp = /\\,/g;\n\nfunction setFormatLiterals(formatOptions) {\n var format = formatOptions.format;\n\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 literals.push(literal);\n return PLACEHOLDER;\n });\n }\n}\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\n fraction = fraction.split(POINT)[1] || EMPTY;\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\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) {\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\n if (formatOptions.negative && 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\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 setStyleOptions(formatOptions, info) {\n var format = formatOptions.format; //multiply number if the format has percent\n\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\nfunction setGroupOptions(formatOptions) {\n formatOptions.hasGroup = formatOptions.format.indexOf(GROUP_SEPARATOR) > -1;\n\n if (formatOptions.hasGroup) {\n formatOptions.format = formatOptions.format.replace(commaRegExp, EMPTY);\n }\n}\n\nfunction placeholderIndex(index1, index2, start) {\n var index;\n\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\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 var start = placeholderIndex(sharpIndex, zeroIndex, true);\n sharpIndex = format.lastIndexOf(SHARP);\n zeroIndex = format.lastIndexOf(ZERO);\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\n if (style === CURRENCY || style === PERCENT) {\n result = EMPTY;\n\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\n return result;\n}\n\nfunction replaceLiterals(number, literals) {\n var result = number;\n\n if (literals) {\n var length = literals.length;\n\n for (var idx = 0; idx < length; idx++) {\n result = result.replace(PLACEHOLDER, literals[idx]);\n }\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 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 number = format.substring(0, start);\n\n if (negative && !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 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\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 format: format\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 return applyCustomFormat(formatOptions, info);\n}","import { CURRENCY, ACCOUNTING, DECIMAL, PERCENT, SCIENTIFIC } from '../common/constants';\nimport isString from '../common/is-string';\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 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\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';\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 var result;\n\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}","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 isNumber from '../common/is-number';\nimport isCurrencyStyle from './is-currency-style';\nimport formatOptions from './format-options';\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\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 var currency = options.currency || localeCurrency(info, isCurrency);\n\n if (currency) {\n var displays = currencyDisplays(info, currency, isCurrency);\n\n if (displays) {\n for (var idx = 0; idx < displays.length; idx++) {\n var display = displays[idx];\n\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) || cleanNegativePattern(number, info.numbers.accounting.patterns);\n\n if (cleanNumber) {\n negative = true;\n number = cleanNumber;\n }\n }\n }\n\n return {\n number: number,\n negative: negative\n };\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 var number = value.toString();\n var isPercent;\n\n if (exponentRegExp.test(number)) {\n number = parseFloat(number.replace(symbols.decimal, POINT));\n return isNaN(number) ? null : number;\n }\n\n var negativeSignIndex = number.indexOf(\"-\");\n\n if (negativeSignIndex > 0) {\n return null;\n }\n\n var isNegative = negativeSignIndex > -1;\n var ref = cleanCurrencyNumber(number, info, format);\n var negativeCurrency = ref.negative;\n var newNumber = ref.number;\n number = newNumber;\n isNegative = negativeCurrency !== undefined ? negativeCurrency : isNegative;\n\n if (format.style === PERCENT || number.indexOf(symbols.percentSign) > -1) {\n number = number.replace(symbols.percentSign, EMPTY);\n isPercent = true;\n }\n\n number = number.replace(\"-\", EMPTY).replace(nonBreakingSpaceRegExp, \" \").split(symbols.group.replace(nonBreakingSpaceRegExp, \" \")).join(EMPTY).replace(symbols.decimal, POINT);\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}","var formatRegExp = /\\{(\\d+)}/g;\nexport default function formatString(format) {\n var values = arguments;\n return format.replace(formatRegExp, function (match, index) {\n var value = values[parseInt(index, 10) + 1];\n return value;\n });\n}","import formatString from '../common/format-string';\nimport isString from '../common/is-string';\nimport { EMPTY } from '../common/constants';\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;\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;\nvar VALUE_FORMAT_LENGTH = {\n numeric: 1,\n \"2-digit\": 2,\n short: 3,\n long: 4,\n narrow: 5\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}];\nvar STAND_ALONE_SPECIFIERS = {\n e: 'c',\n E: 'c',\n M: 'L',\n Q: 'q'\n};\nvar specifiersRegex = {};\nvar resolvedFormats = {};\n\nfunction getSpecifierRegex(specifier) {\n if (!specifiersRegex[specifier]) {\n specifiersRegex[specifier] = new RegExp(specifier + \"+\");\n }\n\n return specifiersRegex[specifier];\n}\n\nfunction skeletonSpecifiers(skeleton) {\n var result = [];\n var current = skeleton.charAt(0);\n var specifier = current;\n\n for (var idx = 1; idx < skeleton.length; idx++) {\n var character = skeleton.charAt(idx);\n\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 return result;\n}\n\nfunction findBestMatch(specifiers, availableFormats) {\n var specifiersLength = specifiers.length;\n var maxScore = -Number.MAX_VALUE;\n var bestMatches, result;\n\n for (var format in availableFormats) {\n var matches = [];\n var currentFormat = format.replace(\"v\", \"z\");\n var score = 0;\n\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\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\n if (bestMatch && bestMatch !== specifiers[idx$1]) {\n var matchSpecifier = bestMatches[idx$1][0];\n result = result.replace(getSpecifierRegex(matchSpecifier), specifiers[idx$1]);\n\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\n resolvedFormats[locale][skeleton] = format;\n}\n\nfunction skeletonFormat(skeleton, info) {\n var availableFormats = info.calendar.dateTimeFormats.availableFormats;\n\n if (availableFormats[skeleton]) {\n return availableFormats[skeleton];\n }\n\n if (resolvedFormats[info.name] && resolvedFormats[info.name][skeleton]) {\n return resolvedFormats[info.name][skeleton];\n }\n\n var timeStartIndex = skeleton.search(TIME_SPECIFIERS_REGEX);\n var result;\n\n if (timeStartIndex > 0) {\n var dateSkeleton = skeleton.substr(0, timeStartIndex);\n var timeSkeleton = skeleton.substr(timeStartIndex);\n result = formatString(info.calendar.dateTimeFormats.short, //should be deterimed based on specifiers\n availableFormats[timeSkeleton] || findBestMatch(skeletonSpecifiers(timeSkeleton), availableFormats), 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\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\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\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\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}","export default function dateNameType(formatLength) {\n var nameType;\n\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';\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}","var MONTH = 'month';\nvar HOUR = 'hour';\nvar ZONE = 'zone';\nvar WEEKDAY = 'weekday';\nvar QUARTER = 'quarter';\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 'a': 'dayperiod',\n 'x': ZONE,\n 'X': ZONE,\n 'z': ZONE,\n 'Z': ZONE\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;\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\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\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\n if (formatLength < 3) {\n return quarter + 1;\n }\n\n return formatNames(info, \"quarters\", formatLength, standAlone)[quarter];\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\n if (offset === 0 && zZeroOffset) {\n return \"Z\";\n }\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\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\n if (formatLength < 3) {\n result = formatDayOfWeekIndex(date.getDay(), formatLength, info);\n } else {\n result = formatNames(info, \"days\", formatLength, standAlone)[date.getDay()];\n }\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\n if (formatLength === 2) {\n year = year % 100;\n }\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\n if (milliseconds !== 0) {\n result = String(date.getMilliseconds() / 1000).split(\".\")[1].substr(0, formatLength);\n } else {\n result = pad(EMPTY, formatLength);\n }\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;\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\n return date;\n }\n\n var info = localeInfo(locale);\n var pattern = datePattern(format, info);\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}","export function convertTimeZone(date, fromOffset, toOffset) {\n var fromLocalOffset = date.getTimezoneOffset();\n var offsetDate = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n var toLocalOffset = offsetDate.getTimezoneOffset();\n return new Date(offsetDate.getTime() + (toLocalOffset - fromLocalOffset) * 60000);\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';\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}\";\nvar standardDateFormats = [\"yyyy/MM/dd HH:mm:ss\", \"yyyy/MM/dd HH:mm\", \"yyyy/MM/dd\", \"E MMM dd yyyy HH:mm:ss\", \"yyyy-MM-ddTHH:mm:ss.SSSSSSSXXX\", \"yyyy-MM-ddTHH:mm:ss.SSSXXX\", \"yyyy-MM-ddTHH:mm:ss.SSXXX\", \"yyyy-MM-ddTHH:mm:ssXXX\", \"yyyy-MM-ddTHH:mm:ss.SSSSSSS\", \"yyyy-MM-ddTHH:mm:ss.SSS\", \"yyyy-MM-ddTHH:mmXXX\", \"yyyy-MM-ddTHH:mmX\", \"yyyy-MM-ddTHH:mm:ss\", \"yyyy-MM-ddTHH:mm\", \"yyyy-MM-dd HH:mm:ss\", \"yyyy-MM-dd HH:mm\", \"yyyy-MM-dd\", \"HH:mm:ss\", \"HH:mm\"];\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\n while (format[idx] === match) {\n i++;\n idx++;\n }\n\n if (i > 0) {\n idx -= 1;\n }\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\n return null;\n}\n\nfunction getIndexByName(names, state, lower) {\n var i = 0,\n length = names.length,\n name,\n 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\n if (state.value.charAt(state.valueIdx) === state.format[state.idx]) {\n state.valueIdx++;\n result = true;\n }\n\n return result;\n}\n\nfunction calendarGmtFormats(calendar) {\n var gmtFormat = calendar.gmtFormat;\n var gmtZeroFormat = calendar.gmtZeroFormat;\n\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\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 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\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\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); //validate if it matches the day?\n\n var dayOfWeek = getIndexByName(formatNames(info, \"days\", count, false, true), state, true);\n\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\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 var hours = getNumber(2, state);\n\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 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 var pmHour = getIndexByName([periodFormats.pm], state, true);\n\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\n if (hours === null || outOfRange(hours, 0, 23)) {\n return true;\n }\n\n state.hours = hours;\n};\n\nparsers.k = function (state) {\n lookAhead(\"k\", state);\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\n if (seconds === null || outOfRange(seconds, 0, 59)) {\n return true;\n }\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 var shortFormat = count < 4;\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 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 var invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count !== 3 && count !== 5,\n optionalMinutes: count === 1\n });\n\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.X = function (state, info) {\n var count = lookAhead(\"X\", state);\n var invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count !== 3 && count !== 5,\n optionalMinutes: count === 1,\n zLiteral: true\n });\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 parseExact(value, format, info) {\n var pattern = datePattern(format, info).split(EMPTY);\n var state = {\n format: pattern,\n idx: 0,\n value: value,\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\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 var result = offset.substring(1);\n result = parseInt(result.substr(0, 2), 10) * 60 + parseInt(result.substring(2), 10);\n return sign * result;\n}\n\nfunction parseMicrosoftDateFormat(value) {\n if (value && value.indexOf(\"/D\") === 0) {\n var date = dateRegExp.exec(value);\n\n if (date) {\n date = date[1];\n var tzoffset = offsetRegExp.exec(date.substring(1));\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\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 var length = parseFormats.length;\n\n for (var idx = 0; idx < length; idx++) {\n date = parseExact(parseValue, parseFormats[idx], info);\n\n if (date) {\n return date;\n }\n }\n\n return date;\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';\nvar NAME_TYPES = {\n month: {\n type: 'months',\n minLength: 3,\n standAlone: 'L'\n },\n quarter: {\n type: 'quarters',\n minLength: 3,\n standAlone: 'q'\n },\n weekday: {\n type: 'days',\n minLength: {\n E: 0,\n c: 3,\n e: 3\n },\n standAlone: 'c'\n },\n dayperiod: {\n type: 'dayPeriods',\n minLength: 0\n },\n era: {\n type: 'eras',\n minLength: 0\n }\n};\nvar LITERAL = 'literal';\n\nfunction addLiteral(parts, value) {\n var lastPart = parts[parts.length - 1];\n\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 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}","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';\nvar formatRegExp = /\\{(\\d+)(:[^\\}]+)?\\}/g;\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}\nexport function format(format, values, locale) {\n return format.replace(formatRegExp, function (match, index, placeholderFormat) {\n var value = values[parseInt(index, 10)];\n return toString(value, placeholderFormat ? placeholderFormat.substring(1) : EMPTY, locale);\n });\n}","import * as coreIntl from '@telerik/kendo-intl'; // tslint:disable:max-line-length\n\n/**\n * A service which provides internationalization methods and is bound to a specific locale.\n */\n\nvar IntlService =\n/** @class */\nfunction () {\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\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\n\n IntlService.prototype.format = function (format) {\n var values = [];\n\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\n\n if (values.length === 1 && Array.isArray(values[0])) {\n return coreIntl.format(format, values[0], this.locale);\n }\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\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\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\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\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\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\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\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\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\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\n\n IntlService.prototype.firstDay = function () {\n return coreIntl.firstDay(this.locale);\n };\n\n return IntlService;\n}();\n\nexport { IntlService }; // tslint:enable:max-line-length","import { localeInfo } from './info';\nimport { errors } from '../errors';\nimport { DEFAULT_LOCALE } from '../common/constants';\nexport default function dateFieldName(options, locale) {\n if (locale === void 0) locale = DEFAULT_LOCALE;\n var info = localeInfo(locale);\n var dateFields = info.calendar.dateFields;\n\n if (!dateFields) {\n throw errors.NoDateFieldNames.error();\n }\n\n var fieldNameInfo = dateFields[options.type] || {};\n return fieldNameInfo[options.nameType] || fieldNameInfo['wide'];\n}","import { getLocaleInfo } from './info';\nexport default function numberSymbols(locale) {\n var info = getLocaleInfo(locale);\n return info.numbers.symbols;\n}","import * as React from 'react';\nimport { IntlService } from './IntlService';\nexport var IntlContext = React.createContext(new IntlService('en'));","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { IntlService } from './IntlService';\nimport { IntlContext } from './IntlContext'; // tslint:disable:max-line-length\n\n/**\n * A React component which provides an internationalization service. Expects a locale string as a property of the component.\n */\n\nvar IntlProvider =\n/** @class */\nfunction (_super) {\n __extends(IntlProvider, _super);\n\n function IntlProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Returns an internationalization service. The method is suitable for overriding when you implement custom internationalization behavior.\n */\n\n\n IntlProvider.prototype.getIntlService = function () {\n return new IntlService(this.props.locale);\n };\n /**\n * @hidden\n */\n\n\n IntlProvider.prototype.getChildContext = function () {\n return {\n kendoIntlService: this.getIntlService()\n };\n };\n /**\n * @hidden\n */\n\n\n IntlProvider.prototype.render = function () {\n return React.createElement(IntlContext.Provider, {\n value: this.getIntlService()\n }, React.Children.only(this.props.children));\n };\n /**\n * @hidden\n */\n\n\n IntlProvider.propTypes = {\n locale: PropTypes.string\n };\n /**\n * @hidden\n */\n\n IntlProvider.childContextTypes = {\n kendoIntlService: PropTypes.object\n };\n return IntlProvider;\n}(React.Component);\n\nexport default IntlProvider; // tslint:enable:max-line-length","/**\n * @hidden\n */\nexport var messages = Object.create({});","import { messages } from './messages';\n/**\n * A service which provides localization methods.\n */\n\nvar LocalizationService =\n/** @class */\nfunction () {\n function LocalizationService(language) {\n this.language = language;\n\n if (language === '' && process.env.NODE_ENV !== 'production') {\n throw 'Language should not be an empty string';\n }\n } // tslint:disable:max-line-length\n\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\n\n LocalizationService.prototype.toLanguageString = function (key, defaultValue) {\n if (this.language && messages[this.language] && messages[this.language].hasOwnProperty(key)) {\n return messages[this.language][key];\n } else {\n return defaultValue;\n }\n };\n\n return LocalizationService;\n}();\n\nexport { LocalizationService };","import * as React from 'react';\nimport { LocalizationService } from './LocalizationService';\nexport var LocalizationContext = React.createContext(new LocalizationService('en'));","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { LocalizationService } from './LocalizationService';\nimport { LocalizationContext } from './LocalizationContext'; // tslint:disable:max-line-length\n\n/**\n * A React component which provides a localization service. Expects a language string as a property of the component.\n */\n\nvar LocalizationProvider =\n/** @class */\nfunction (_super) {\n __extends(LocalizationProvider, _super);\n\n function LocalizationProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Returns a localization service. The method is suitable for overriding when you implement custom localization behavior.\n */\n\n\n LocalizationProvider.prototype.getLocalizationService = function () {\n return new LocalizationService(this.props.language);\n };\n /**\n * @hidden\n */\n\n\n LocalizationProvider.prototype.getChildContext = function () {\n return {\n kendoLocalizationService: this.getLocalizationService()\n };\n };\n /**\n * @hidden\n */\n\n\n LocalizationProvider.prototype.render = function () {\n return React.createElement(LocalizationContext.Provider, {\n value: this.getLocalizationService()\n }, React.Children.only(this.props.children));\n };\n /**\n * @hidden\n */\n\n\n LocalizationProvider.propTypes = {\n language: PropTypes.string\n };\n /**\n * @hidden\n */\n\n LocalizationProvider.childContextTypes = {\n kendoLocalizationService: PropTypes.object\n };\n return LocalizationProvider;\n}(React.Component);\n\nexport { LocalizationProvider }; // tslint:enable:max-line-length","import * as PropTypes from 'prop-types';\nimport { IntlService } from './Intl/IntlService';\nimport { LocalizationService } from './Localization/LocalizationService'; // tslint:disable:max-line-length\n\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 */\n\nexport function provideIntlService(component) {\n if (!component && process.env.NODE_ENV !== 'production') {\n throw \"Passed component - \" + component + \" is invalid.\";\n }\n\n var intlServiceFromContext = component.context && component.context.kendoIntlService;\n return intlServiceFromContext || 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 */\n\nexport function provideLocalizationService(component) {\n if (!component && process.env.NODE_ENV !== 'production') {\n throw \"Passed component - \" + component + \" is invalid.\";\n }\n\n var localizationServiceFromContext = component.context && component.context.kendoLocalizationService;\n return localizationServiceFromContext || 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 */\n\nexport function registerForIntl(component) {\n var ctx = {\n kendoIntlService: PropTypes.object\n };\n\n if (component.contextTypes) {\n Object.assign(component.contextTypes, ctx);\n } else {\n component.contextTypes = ctx;\n }\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 */\n\nexport function registerForLocalization(component) {\n var ctx = {\n kendoLocalizationService: PropTypes.object\n };\n\n if (component.contextTypes) {\n Object.assign(component.contextTypes, ctx);\n } else {\n component.contextTypes = ctx;\n }\n} // tslint:enable:max-line-length","import * as React from 'react';\nimport { IntlContext } from '../Intl/IntlContext';\n/**\n * @hidden\n */\n\nexport var useInternationalization = function useInternationalization() {\n return React.useContext(IntlContext);\n};","import * as React from 'react';\nimport { LocalizationContext } from '../Localization/LocalizationContext';\n/**\n * @hidden\n */\n\nexport var useLocalization = function useLocalization() {\n return React.useContext(LocalizationContext);\n};","export * from './Intl/main';\nexport * from './Localization/main';\nexport * from './coreExports';\nexport * from './intlUtils';\nexport * from './hooks';","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\n\n/* global Reflect, Promise */\nvar _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n};\n\nexport { _assign as __assign };\nexport function __rest(s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") 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])) t[p[i]] = s[p[i]];\n }\n return t;\n}\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {\n if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n }\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\nexport function __param(paramIndex, decorator) {\n return function (target, key) {\n decorator(target, key, paramIndex);\n };\n}\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\nexport function __awaiter(thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : new P(function (resolve) {\n resolve(result.value);\n }).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\nexport function __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n 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\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nexport function __exportStar(m, exports) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nexport function __values(o) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator],\n i = 0;\n if (m) return m.call(o);\n return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\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),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n}\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n}\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n s += arguments[i].length;\n }\n\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 }\n }\n\n return r;\n}\n;\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\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 || []),\n i,\n q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n\n function fulfill(value) {\n resume(\"next\", value);\n }\n\n function reject(value) {\n resume(\"throw\", value);\n }\n\n function settle(f, v) {\n 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) {\n throw e;\n }), verb(\"return\"), i[Symbol.iterator] = function () {\n return this;\n }, i;\n\n function verb(n, f) {\n i[n] = o[n] ? function (v) {\n return (p = !p) ? {\n value: __await(o[n](v)),\n done: n === \"return\"\n } : f ? f(v) : v;\n } : 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],\n 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 () {\n return this;\n }, i);\n\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n}\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n}\n;\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n }\n result.default = mod;\n return result;\n}\nexport function __importDefault(mod) {\n return mod && mod.__esModule ? mod : {\n default: mod\n };\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}","export default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}","export default function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","import React from 'react';\nexport var ReactReduxContext = React.createContext(null);\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nvar CLEARED = null;\nvar nullListeners = {\n notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n var batch = getBatch(); // the current/next pattern is copied from redux's createStore code.\n // TODO: refactor+expose that code to be reusable here?\n\n var current = [];\n var next = [];\n return {\n clear: function clear() {\n next = CLEARED;\n current = CLEARED;\n },\n notify: function notify() {\n var listeners = current = next;\n batch(function () {\n for (var i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n });\n },\n get: function get() {\n return next;\n },\n subscribe: function subscribe(listener) {\n var isSubscribed = true;\n if (next === current) next = current.slice();\n next.push(listener);\n return function unsubscribe() {\n if (!isSubscribed || current === CLEARED) return;\n isSubscribed = false;\n if (next === current) next = current.slice();\n next.splice(next.indexOf(listener), 1);\n };\n }\n };\n}\n\nvar Subscription =\n/*#__PURE__*/\nfunction () {\n function Subscription(store, parentSub) {\n this.store = store;\n this.parentSub = parentSub;\n this.unsubscribe = null;\n this.listeners = nullListeners;\n this.handleChangeWrapper = this.handleChangeWrapper.bind(this);\n }\n\n var _proto = Subscription.prototype;\n\n _proto.addNestedSub = function addNestedSub(listener) {\n this.trySubscribe();\n return this.listeners.subscribe(listener);\n };\n\n _proto.notifyNestedSubs = function notifyNestedSubs() {\n this.listeners.notify();\n };\n\n _proto.handleChangeWrapper = function handleChangeWrapper() {\n if (this.onStateChange) {\n this.onStateChange();\n }\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.unsubscribe);\n };\n\n _proto.trySubscribe = function trySubscribe() {\n if (!this.unsubscribe) {\n this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.handleChangeWrapper) : this.store.subscribe(this.handleChangeWrapper);\n this.listeners = createListenerCollection();\n }\n };\n\n _proto.tryUnsubscribe = function tryUnsubscribe() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n this.listeners.clear();\n this.listeners = nullListeners;\n }\n };\n\n return Subscription;\n}();\n\nexport { Subscription as default };","import React, { useMemo, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport Subscription from '../utils/Subscription';\n\nfunction Provider(_ref) {\n var store = _ref.store,\n context = _ref.context,\n children = _ref.children;\n var contextValue = useMemo(function () {\n var subscription = new Subscription(store);\n subscription.onStateChange = subscription.notifyNestedSubs;\n return {\n store: store,\n subscription: subscription\n };\n }, [store]);\n var previousState = useMemo(function () {\n return store.getState();\n }, [store]);\n useEffect(function () {\n var subscription = contextValue.subscription;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return function () {\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n };\n }, [contextValue, previousState]);\n var Context = context || ReactReduxContext;\n return React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nProvider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n};\nexport default Provider;","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nvar isHopefullyDomEnvironment = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined';\nexport var useIsomorphicLayoutEffect = isHopefullyDomEnvironment ? useLayoutEffect : useEffect;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport React, { useContext, useMemo, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport Subscription from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n var updateCount = state[1];\n return [action.payload, updateCount + 1];\n}\n\nvar initStateUpdates = function initStateUpdates() {\n return [null, 0];\n};\n\nexport default function connectAdvanced(\n/*\r\n selectorFactory is a func that is responsible for returning the selector function used to\r\n compute new props from state, props, and dispatch. For example:\r\n export default connectAdvanced((dispatch, options) => (state, props) => ({\r\n thing: state.things[props.thingId],\r\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\r\n }))(YourComponent)\r\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\r\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\r\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\r\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\r\n props. Do not use connectAdvanced directly without memoizing results between calls to your\r\n selector, otherwise the Connect component will re-render on every state or props change.\r\n*/\nselectorFactory, // options object:\n_ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n _ref2$forwardRef = _ref2.forwardRef,\n forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n _ref2$context = _ref2.context,\n context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"]);\n\n invariant(renderCountProp === undefined, \"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n invariant(!withRef, 'withRef is removed. To access the wrapped instance, use a ref on the connected component');\n var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: . ' + 'You may also pass a {context : MyContext} option to connect';\n invariant(storeKey === 'store', 'storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n var Context = context;\n return function wrapWithConnect(WrappedComponent) {\n if (process.env.NODE_ENV !== 'production') {\n invariant(isValidElementType(WrappedComponent), \"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n }\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var pure = connectOptions.pure;\n\n function createChildSelector(store) {\n return selectorFactory(store.dispatch, selectorFactoryOptions);\n } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n // that just executes the given callback immediately.\n\n\n var usePureOnlyMemo = pure ? useMemo : function (callback) {\n return callback();\n };\n\n function ConnectFunction(props) {\n var _useMemo = useMemo(function () {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n var forwardedRef = props.forwardedRef,\n wrapperProps = _objectWithoutPropertiesLoose(props, [\"forwardedRef\"]);\n\n return [props.context, forwardedRef, wrapperProps];\n }, [props]),\n propsContext = _useMemo[0],\n forwardedRef = _useMemo[1],\n wrapperProps = _useMemo[2];\n\n var ContextToUse = useMemo(function () {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && isContextConsumer(React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n var contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n\n var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n invariant(didStoreComeFromProps || didStoreComeFromContext, \"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a , \") + \"or pass a custom React context provider to and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\")); // Based on the previous check, one of these must be true\n\n var store = didStoreComeFromProps ? props.store : contextValue.store;\n var childPropsSelector = useMemo(function () {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return createChildSelector(store);\n }, [store]);\n\n var _useMemo2 = useMemo(function () {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n var subscription = new Subscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]),\n subscription = _useMemo2[0],\n notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n\n var overriddenContextValue = useMemo(function () {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription: subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n // causes a change to the calculated child component props (or we caught an error in mapState)\n\n var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n _useReducer$ = _useReducer[0],\n previousStateUpdateResult = _useReducer$[0],\n forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n if (previousStateUpdateResult && previousStateUpdateResult.error) {\n throw previousStateUpdateResult.error;\n } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n var lastChildProps = useRef();\n var lastWrapperProps = useRef(wrapperProps);\n var childPropsFromStoreUpdate = useRef();\n var renderIsScheduled = useRef(false);\n var actualChildProps = usePureOnlyMemo(function () {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n useIsomorphicLayoutEffect(function () {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n lastChildProps.current = actualChildProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n }); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n useIsomorphicLayoutEffect(function () {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n var didUnsubscribe = false;\n var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n var checkForUpdates = function checkForUpdates() {\n if (didUnsubscribe) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n }\n\n var latestStoreState = store.getState();\n var newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n forceComponentUpdateDispatch({\n type: 'STORE_UPDATED',\n payload: {\n error: error\n }\n });\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n var unsubscribeWrapper = function unsubscribeWrapper() {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n }, [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n var renderedWrappedComponent = useMemo(function () {\n return React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: forwardedRef\n }));\n }, [forwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n var renderedChild = useMemo(function () {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = displayName;\n\n if (forwardRef) {\n var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n return React.createElement(Connect, _extends({}, props, {\n forwardedRef: ref\n }));\n });\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","var hasOwn = Object.prototype.hasOwnProperty;\n\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, {}, stateProps, {}, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\r\n connect is a facade over connectAdvanced. It turns its args into a compatible\r\n selectorFactory, which has the signature:\r\n\r\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\r\n \r\n connect passes its args to connectAdvanced as options, which will in turn pass them to\r\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\r\n\r\n selectorFactory returns a final props selector from its mapStateToProps,\r\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\r\n mergePropsFactories, and pure args.\r\n\r\n The resulting final props selector is called by the Connect component instance whenever\r\n it receives new props or store state.\r\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default createConnect();","import { useContext } from 'react';\nimport invariant from 'invariant';\nimport { ReactReduxContext } from '../components/Context';\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const { store } = useReduxContext()\r\n * return
{store.getState()}
\r\n * }\r\n */\n\nexport function useReduxContext() {\n var contextValue = useContext(ReactReduxContext);\n invariant(contextValue, 'could not find react-redux context value; please ensure the component is wrapped in a ');\n return contextValue;\n}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {Function} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useStore() {\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store;\n\n return store;\n };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n * const store = useStore()\r\n * return
{store.getState()}
\r\n * }\r\n */\n\nexport var useStore = createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {Function} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n var store = useStore();\n return store.dispatch;\n };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const dispatch = useDispatch()\r\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n * return (\r\n *
\r\n * {value}\r\n * \r\n *
\r\n * )\r\n * }\r\n */\n\nexport var useDispatch = createDispatchHook();","import { useReducer, useRef, useMemo, useContext } from 'react';\nimport invariant from 'invariant';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport Subscription from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = useMemo(function () {\n return new Subscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestSelectedState = useRef();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || latestSubscriptionCallbackError.current) {\n selectedState = selector(store.getState());\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n var errorMessage = \"An error occurred while selecting the store state: \" + err.message + \".\";\n\n if (latestSubscriptionCallbackError.current) {\n errorMessage += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\nOriginal stack trace:\";\n }\n\n throw new Error(errorMessage);\n }\n\n useIsomorphicLayoutEffect(function () {\n latestSelector.current = selector;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newSelectedState = latestSelector.current(store.getState());\n\n if (equalityFn(newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = newSelectedState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender({});\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {Function} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n\n invariant(selector, \"You must pass a selector to useSelectors\");\n\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n\n return useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return
{counter}
\r\n * }\r\n */\n\nexport var useSelector = createSelectorHook();","import Provider from './components/Provider';\nimport connectAdvanced from './components/connectAdvanced';\nimport { ReactReduxContext } from './components/Context';\nimport connect from './connect/connect';\nimport { useDispatch, createDispatchHook } from './hooks/useDispatch';\nimport { useSelector, createSelectorHook } from './hooks/useSelector';\nimport { useStore, createStoreHook } from './hooks/useStore';\nimport { setBatch } from './utils/batch';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport shallowEqual from './utils/shallowEqual';\nsetBatch(batch);\nexport { Provider, connectAdvanced, ReactReduxContext, connect, batch, useDispatch, createDispatchHook, useSelector, createSelectorHook, useStore, createStoreHook, shallowEqual };","export default {\n \"bottom\": \"bottom\",\n \"center\": \"center\",\n \"middle\": \"middle\",\n \"left\": \"left\",\n \"right\": \"right\",\n \"top\": \"top\"\n};","import point from './align-point';\n\nvar align = function align(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;\n 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 var horizontalMargin = margin.horizontal || 0;\n var verticalMargin = margin.vertical || 0;\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;","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}","export default function applyLocationOffset(rect, location, isOffsetBody) {\n var top = rect.top;\n var left = rect.left;\n\n if (isOffsetBody) {\n left = 0;\n top = 0;\n }\n\n return {\n top: top + location.top,\n left: left + location.left,\n height: rect.height,\n width: rect.width\n };\n}","export default function ownerDocument(element) {\n return element.ownerDocument || element.document || element;\n}","import ownerDocument from './owner-document';\n\nvar getWindow = function getWindow(element) {\n return ownerDocument(element).defaultView;\n};\n\nexport default getWindow;","import ownerDocument from './owner-document';\n\nvar getDocument = function getDocument(element) {\n return ownerDocument(element).documentElement;\n};\n\nexport default getDocument;","var cachedWidth = 0;\nexport default function scrollbarWidth() {\n if (!cachedWidth && typeof document !== 'undefined') {\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 cachedWidth = div.offsetWidth - div.scrollWidth;\n document.body.removeChild(div);\n }\n\n return cachedWidth;\n}","import wnd from './window';\nimport getDocument from './document';\nimport scrollbarWidth from './scrollbar-width';\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}","import windowViewport from './window-viewport';\n\nvar boundingOffset = function boundingOffset(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 return {\n bottom: bottom,\n left: left,\n right: right,\n top: top\n };\n};\n\nexport default boundingOffset;","import documentElement from './document';\n\nvar offsetParent = function offsetParent(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;","import offsetParent from './offset-parent';\n\nvar isBodyOffset = function isBodyOffset(element) {\n return offsetParent(element) === element.ownerDocument.body;\n};\n\nexport default isBodyOffset;","var rectOfHiddenElement = function rectOfHiddenElement(element) {\n var ref = element.style;\n var display = ref.display;\n var left = ref.left;\n var position = ref.position;\n element.style.display = '';\n element.style.left = '-10000px';\n element.style.position = 'absolute';\n var rect = element.getBoundingClientRect();\n element.style.display = display;\n element.style.left = left;\n element.style.position = position;\n return rect;\n};\n\nvar offset = function offset(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;","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) {\n break;\n }\n\n next = next.parentNode;\n }\n\n return result;\n}\n;","import docElement from './document';\nimport wnd from './window';\nexport default function scrollPosition(element) {\n var documentElement = docElement(element);\n var win = wnd(element);\n return {\n x: win.pageXOffset || documentElement.scrollLeft || 0,\n y: win.pageYOffset || documentElement.scrollTop || 0\n };\n}","import scrollPosition from './scroll-position';\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 offsetParent from './offset-parent';\nimport offsetRect from './offset';\nimport wnd from './window';\n\nvar position = function position(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 var ownerDocument = element.ownerDocument;\n var useRelative = parentElement !== ownerDocument.body && parentElement !== ownerDocument.documentElement;\n var parentOffset = {\n top: 0,\n left: 0\n };\n\n if (elementStyles.position !== \"fixed\" && useRelative) {\n var parentStyles = win.getComputedStyle(parentElement);\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;","import elementScrollPosition from './element-scroll-position';\nimport parentScrollPosition from './parent-scroll-position';\nexport default function (offsetParentElement, element) {\n return (// eslint-disable-line no-arrow-condition\n offsetParentElement ? elementScrollPosition(offsetParentElement) : parentScrollPosition(element)\n );\n}\n;","import offsetParent from './offset-parent';\nimport elementScrollPosition from './element-scroll-position';\nexport default function parentScrollPosition(element) {\n var parent = offsetParent(element);\n return parent ? elementScrollPosition(parent) : {\n x: 0,\n y: 0\n };\n}","import offsetParentScrollPosition from './offset-parent-scroll-position';\nimport offsetParent from './offset-parent';\nimport position from './position';\nexport default function (element, parent, scale) {\n if (scale === void 0) scale = 1;\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 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}","export default {\n \"fit\": \"fit\",\n \"flip\": \"flip\"\n};","import alignPoint from './align-point';\nimport collision from './collision';\n\nvar fit = function fit(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 flip(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 var output = 0;\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\n if (offset < 0 && isBeforeAnchor) {\n output = size + anchorSize + marginToAdd;\n\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 restrictToView(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;\n 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 var left = 0;\n var top = 0;\n var isHorizontalFlip = collisions.horizontal === collision.flip;\n var isVerticalFlip = collisions.vertical === collision.flip;\n\n if (collisions.vertical === collision.fit) {\n top += fit(elementTop, elementHeight, viewPortHeight);\n }\n\n if (collisions.horizontal === collision.fit) {\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 flippedHorizontal = isHorizontalFlip && left !== 0;\n var flippedVertical = isVerticalFlip && top !== 0;\n return {\n flipped: flippedHorizontal || flippedVertical,\n flip: {\n horizontal: flippedHorizontal,\n vertical: flippedVertical\n },\n offset: {\n left: left,\n top: top\n }\n };\n};\n\nexport default restrictToView;","export default function (element) {\n var result = [];\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\n return result;\n}\n;","/* eslint-disable no-loop-func */\nimport parents from './parents';\nimport siblings from './siblings';\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 result = parentElements.reduce(function (list, p) {\n return list.concat(siblingElements.filter(function (s) {\n return s === p;\n }));\n }, [])[0];\n\n if (result) {\n break;\n }\n\n containerElement = containerElement.parentElement;\n }\n\n return result;\n}\n;","export { default as align } from './align';\nexport { default as addScroll } from './add-scroll';\nexport { default as applyLocationOffset } from './apply-location-offset';\nexport { default as boundingOffset } from './bounding-offset';\nexport { default as isBodyOffset } from './is-body-offset';\nexport { default as offsetParent } from './offset-parent';\nexport { default as offset } from './offset';\nexport { default as parents } from './parents';\nexport { default as parentScrollPosition } from './parent-scroll-position';\nexport { default as position } from './position';\nexport { default as positionWithScroll } from './position-with-scroll';\nexport { default as removeScroll } from './remove-scroll';\nexport { default as restrictToView } from './restrict-to-view';\nexport { default as scrollPosition } from './scroll-position';\nexport { default as siblingContainer } from './sibling-container';\nexport { default as siblings } from './siblings';\nexport { default as getDocumentElement } from './document';\nexport { default as getWindow } from './window';\nexport { default as getWindowViewPort } from './window-viewport';\nexport { default as AlignPoint } from './align-point';\nexport { default as Collision } from './collision';","// Copy-pasted from:\n// https://github.com/substack/semver-compare/blob/master/index.js\n//\n// Inlining this function because some users reported issues with\n// importing from `semver-compare` in a browser with ES6 \"native\" modules.\n//\n// Fixes `semver-compare` not being able to compare versions with alpha/beta/etc \"tags\".\n// https://github.com/catamphetamine/libphonenumber-js/issues/381\nexport default function (a, b) {\n a = a.split('-');\n b = b.split('-');\n var pa = a[0].split('.');\n var pb = b[0].split('.');\n\n for (var i = 0; i < 3; i++) {\n var na = Number(pa[i]);\n var nb = Number(pb[i]);\n if (na > nb) return 1;\n if (nb > na) return -1;\n if (!isNaN(na) && isNaN(nb)) return 1;\n if (isNaN(na) && !isNaN(nb)) return -1;\n }\n\n if (a[1] && b[1]) {\n return a[1] > b[1] ? 1 : a[1] < b[1] ? -1 : 0;\n }\n\n return !a[1] && b[1] ? 1 : a[1] && !b[1] ? -1 : 0;\n}","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nimport compare from './tools/semver-compare'; // Added \"possibleLengths\" and renamed\n// \"country_phone_code_to_countries\" to \"country_calling_codes\".\n\nvar V2 = '1.0.18'; // Added \"idd_prefix\" and \"default_idd_prefix\".\n\nvar V3 = '1.2.0'; // Moved `001` country code to \"nonGeographic\" section of metadata.\n\nvar V4 = '1.7.35';\nvar DEFAULT_EXT_PREFIX = ' ext. ';\nvar CALLING_CODE_REG_EXP = /^\\d+$/;\n/**\r\n * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md\r\n */\n\nvar Metadata =\n/*#__PURE__*/\nfunction () {\n function Metadata(metadata) {\n _classCallCheck(this, Metadata);\n\n validateMetadata(metadata);\n this.metadata = metadata;\n setVersion.call(this, metadata);\n }\n\n _createClass(Metadata, [{\n key: \"getCountries\",\n value: function getCountries() {\n return Object.keys(this.metadata.countries).filter(function (_) {\n return _ !== '001';\n });\n }\n }, {\n key: \"getCountryMetadata\",\n value: function getCountryMetadata(countryCode) {\n return this.metadata.countries[countryCode];\n }\n }, {\n key: \"nonGeographic\",\n value: function nonGeographic() {\n if (this.v1 || this.v2 || this.v3) return; // `nonGeographical` was a typo.\n // It's present in metadata generated from `1.7.35` to `1.7.37`.\n\n return this.metadata.nonGeographic || this.metadata.nonGeographical;\n }\n }, {\n key: \"hasCountry\",\n value: function hasCountry(country) {\n return this.getCountryMetadata(country) !== undefined;\n }\n }, {\n key: \"hasCallingCode\",\n value: function hasCallingCode(callingCode) {\n if (this.getCountryCodesForCallingCode(callingCode)) {\n return true;\n }\n\n if (this.nonGeographic()) {\n if (this.nonGeographic()[callingCode]) {\n return true;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return true;\n }\n }\n }\n }, {\n key: \"isNonGeographicCallingCode\",\n value: function isNonGeographicCallingCode(callingCode) {\n if (this.nonGeographic()) {\n return this.nonGeographic()[callingCode] ? true : false;\n } else {\n return this.getCountryCodesForCallingCode(callingCode) ? false : true;\n }\n } // Deprecated.\n\n }, {\n key: \"country\",\n value: function country(countryCode) {\n return this.selectNumberingPlan(countryCode);\n }\n }, {\n key: \"selectNumberingPlan\",\n value: function selectNumberingPlan(countryCode, callingCode) {\n // Supports just passing `callingCode` as the first argument.\n if (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) {\n callingCode = countryCode;\n countryCode = null;\n }\n\n if (countryCode && countryCode !== '001') {\n if (!this.hasCountry(countryCode)) {\n throw new Error(\"Unknown country: \".concat(countryCode));\n }\n\n this.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this);\n } else if (callingCode) {\n if (!this.hasCallingCode(callingCode)) {\n throw new Error(\"Unknown calling code: \".concat(callingCode));\n }\n\n this.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this);\n } else {\n this.numberingPlan = undefined;\n }\n\n return this;\n }\n }, {\n key: \"getCountryCodesForCallingCode\",\n value: function getCountryCodesForCallingCode(callingCode) {\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes) {\n // Metadata before V4 included \"non-geographic entity\" calling codes\n // inside `country_calling_codes` (for example, `\"881\":[\"001\"]`).\n // Now the semantics of `country_calling_codes` has changed:\n // it's specifically for \"countries\" now.\n // Older versions of custom metadata will simply skip parsing\n // \"non-geographic entity\" phone numbers with new versions\n // of this library: it's not considered a bug,\n // because such numbers are extremely rare,\n // and developers extremely rarely use custom metadata.\n if (countryCodes.length === 1 && countryCodes[0].length === 3) {\n return;\n }\n\n return countryCodes;\n }\n }\n }, {\n key: \"getCountryCodeForCallingCode\",\n value: function getCountryCodeForCallingCode(callingCode) {\n var countryCodes = this.getCountryCodesForCallingCode(callingCode);\n\n if (countryCodes) {\n return countryCodes[0];\n }\n }\n }, {\n key: \"getNumberingPlanMetadata\",\n value: function getNumberingPlanMetadata(callingCode) {\n var countryCode = this.getCountryCodeForCallingCode(callingCode);\n\n if (countryCode) {\n return this.getCountryMetadata(countryCode);\n }\n\n if (this.nonGeographic()) {\n var metadata = this.nonGeographic()[callingCode];\n\n if (metadata) {\n return metadata;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return this.metadata.countries['001'];\n }\n }\n } // Deprecated.\n\n }, {\n key: \"countryCallingCode\",\n value: function countryCallingCode() {\n return this.numberingPlan.callingCode();\n } // Deprecated.\n\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n return this.numberingPlan.IDDPrefix();\n } // Deprecated.\n\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n return this.numberingPlan.defaultIDDPrefix();\n } // Deprecated.\n\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n return this.numberingPlan.nationalNumberPattern();\n } // Deprecated.\n\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n return this.numberingPlan.possibleLengths();\n } // Deprecated.\n\n }, {\n key: \"formats\",\n value: function formats() {\n return this.numberingPlan.formats();\n } // Deprecated.\n\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n return this.numberingPlan.nationalPrefixForParsing();\n } // Deprecated.\n\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.numberingPlan.nationalPrefixTransformRule();\n } // Deprecated.\n\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.numberingPlan.leadingDigits();\n } // Deprecated.\n\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n return this.numberingPlan.hasTypes();\n } // Deprecated.\n\n }, {\n key: \"type\",\n value: function type(_type) {\n return this.numberingPlan.type(_type);\n } // Deprecated.\n\n }, {\n key: \"ext\",\n value: function ext() {\n return this.numberingPlan.ext();\n }\n }, {\n key: \"countryCallingCodes\",\n value: function countryCallingCodes() {\n if (this.v1) return this.metadata.country_phone_code_to_countries;\n return this.metadata.country_calling_codes;\n } // Deprecated.\n\n }, {\n key: \"chooseCountryByCountryCallingCode\",\n value: function chooseCountryByCountryCallingCode(callingCode) {\n return this.selectNumberingPlan(callingCode);\n }\n }, {\n key: \"hasSelectedNumberingPlan\",\n value: function hasSelectedNumberingPlan() {\n return this.numberingPlan !== undefined;\n }\n }]);\n\n return Metadata;\n}();\n\nexport { Metadata as default };\n\nvar NumberingPlan =\n/*#__PURE__*/\nfunction () {\n function NumberingPlan(metadata, globalMetadataObject) {\n _classCallCheck(this, NumberingPlan);\n\n this.globalMetadataObject = globalMetadataObject;\n this.metadata = metadata;\n setVersion.call(this, globalMetadataObject.metadata);\n }\n\n _createClass(NumberingPlan, [{\n key: \"callingCode\",\n value: function callingCode() {\n return this.metadata[0];\n } // Formatting information for regions which share\n // a country calling code is contained by only one region\n // for performance reasons. For example, for NANPA region\n // (\"North American Numbering Plan Administration\",\n // which includes USA, Canada, Cayman Islands, Bahamas, etc)\n // it will be contained in the metadata for `US`.\n\n }, {\n key: \"getDefaultCountryMetadataForRegion\",\n value: function getDefaultCountryMetadataForRegion() {\n return this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode());\n } // Is always present.\n\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[1];\n } // Is only present when a country supports multiple IDD prefixes.\n\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[12];\n }\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n if (this.v1 || this.v2) return this.metadata[1];\n return this.metadata[2];\n } // Is always present.\n\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.v1) return;\n return this.metadata[this.v2 ? 2 : 3];\n }\n }, {\n key: \"_getFormats\",\n value: function _getFormats(metadata) {\n return metadata[this.v1 ? 2 : this.v2 ? 3 : 4];\n } // For countries of the same region (e.g. NANPA)\n // formats are all stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"formats\",\n value: function formats() {\n var _this = this;\n\n var formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || [];\n return formats.map(function (_) {\n return new Format(_, _this);\n });\n }\n }, {\n key: \"nationalPrefix\",\n value: function nationalPrefix() {\n return this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5];\n }\n }, {\n key: \"_getNationalPrefixFormattingRule\",\n value: function _getNationalPrefixFormattingRule(metadata) {\n return metadata[this.v1 ? 4 : this.v2 ? 5 : 6];\n } // For countries of the same region (e.g. NANPA)\n // national prefix formatting rule is stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"_nationalPrefixForParsing\",\n value: function _nationalPrefixForParsing() {\n return this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7];\n }\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n // If `national_prefix_for_parsing` is not set explicitly,\n // then infer it from `national_prefix` (if any)\n return this._nationalPrefixForParsing() || this.nationalPrefix();\n }\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8];\n }\n }, {\n key: \"_getNationalPrefixIsOptionalWhenFormatting\",\n value: function _getNationalPrefixIsOptionalWhenFormatting() {\n return !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9];\n } // For countries of the same region (e.g. NANPA)\n // \"national prefix is optional when formatting\" flag is\n // stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) || this._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10];\n }\n }, {\n key: \"types\",\n value: function types() {\n return this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11];\n }\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n // Versions 1.2.0 - 1.2.4: can be `[]`.\n\n /* istanbul ignore next */\n if (this.types() && this.types().length === 0) {\n return false;\n } // Versions <= 1.2.4: can be `undefined`.\n // Version >= 1.2.5: can be `0`.\n\n\n return !!this.types();\n }\n }, {\n key: \"type\",\n value: function type(_type2) {\n if (this.hasTypes() && getType(this.types(), _type2)) {\n return new Type(getType(this.types(), _type2), this);\n }\n }\n }, {\n key: \"ext\",\n value: function ext() {\n if (this.v1 || this.v2) return DEFAULT_EXT_PREFIX;\n return this.metadata[13] || DEFAULT_EXT_PREFIX;\n }\n }]);\n\n return NumberingPlan;\n}();\n\nvar Format =\n/*#__PURE__*/\nfunction () {\n function Format(format, metadata) {\n _classCallCheck(this, Format);\n\n this._format = format;\n this.metadata = metadata;\n }\n\n _createClass(Format, [{\n key: \"pattern\",\n value: function pattern() {\n return this._format[0];\n }\n }, {\n key: \"format\",\n value: function format() {\n return this._format[1];\n }\n }, {\n key: \"leadingDigitsPatterns\",\n value: function leadingDigitsPatterns() {\n return this._format[2] || [];\n }\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._format[3] || this.metadata.nationalPrefixFormattingRule();\n }\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n }\n }, {\n key: \"nationalPrefixIsMandatoryWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsMandatoryWhenFormattingInNationalFormat() {\n // National prefix is omitted if there's no national prefix formatting rule\n // set for this country, or when the national prefix formatting rule\n // contains no national prefix itself, or when this rule is set but\n // national prefix is optional for this phone number format\n // (and it is not enforced explicitly)\n return this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n } // Checks whether national prefix formatting rule contains national prefix.\n\n }, {\n key: \"usesNationalPrefix\",\n value: function usesNationalPrefix() {\n return this.nationalPrefixFormattingRule() && // Check that national prefix formatting rule is not a \"dummy\" one.\n !FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule()) // In compressed metadata, `this.nationalPrefixFormattingRule()` is `0`\n // when `national_prefix_formatting_rule` is not present.\n // So, `true` or `false` are returned explicitly here, so that\n // `0` number isn't returned.\n ? true : false;\n }\n }, {\n key: \"internationalFormat\",\n value: function internationalFormat() {\n return this._format[5] || this.format();\n }\n }]);\n\n return Format;\n}();\n/**\r\n * A pattern that is used to determine if the national prefix formatting rule\r\n * has the first group only, i.e., does not start with the national prefix.\r\n * Note that the pattern explicitly allows for unbalanced parentheses.\r\n */\n\n\nvar FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\\(?\\$1\\)?$/;\n\nvar Type =\n/*#__PURE__*/\nfunction () {\n function Type(type, metadata) {\n _classCallCheck(this, Type);\n\n this.type = type;\n this.metadata = metadata;\n }\n\n _createClass(Type, [{\n key: \"pattern\",\n value: function pattern() {\n if (this.metadata.v1) return this.type;\n return this.type[0];\n }\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.metadata.v1) return;\n return this.type[1] || this.metadata.possibleLengths();\n }\n }]);\n\n return Type;\n}();\n\nfunction getType(types, type) {\n switch (type) {\n case 'FIXED_LINE':\n return types[0];\n\n case 'MOBILE':\n return types[1];\n\n case 'TOLL_FREE':\n return types[2];\n\n case 'PREMIUM_RATE':\n return types[3];\n\n case 'PERSONAL_NUMBER':\n return types[4];\n\n case 'VOICEMAIL':\n return types[5];\n\n case 'UAN':\n return types[6];\n\n case 'PAGER':\n return types[7];\n\n case 'VOIP':\n return types[8];\n\n case 'SHARED_COST':\n return types[9];\n }\n}\n\nexport function validateMetadata(metadata) {\n if (!metadata) {\n throw new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.');\n } // `country_phone_code_to_countries` was renamed to\n // `country_calling_codes` in `1.0.18`.\n\n\n if (!is_object(metadata) || !is_object(metadata.countries)) {\n throw new Error(\"[libphonenumber-js] `metadata` argument was passed but it's not a valid metadata. Must be an object having `.countries` child object property. Got \".concat(is_object(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + type_of(metadata) + ': ' + metadata, \".\"));\n }\n} // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar is_object = function is_object(_) {\n return _typeof(_) === 'object';\n}; // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\n\nvar type_of = function type_of(_) {\n return _typeof(_);\n};\n/**\r\n * Returns extension prefix for a country.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string?}\r\n * @example\r\n * // Returns \" ext. \"\r\n * getExtPrefix(\"US\")\r\n */\n\n\nexport function getExtPrefix(country, metadata) {\n metadata = new Metadata(metadata);\n\n if (metadata.hasCountry(country)) {\n return metadata.country(country).ext();\n }\n\n return DEFAULT_EXT_PREFIX;\n}\n/**\r\n * Returns \"country calling code\" for a country.\r\n * Throws an error if the country doesn't exist or isn't supported by this library.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string}\r\n * @example\r\n * // Returns \"44\"\r\n * getCountryCallingCode(\"GB\")\r\n */\n\nexport function getCountryCallingCode(country, metadata) {\n metadata = new Metadata(metadata);\n\n if (metadata.hasCountry(country)) {\n return metadata.country(country).countryCallingCode();\n }\n\n throw new Error(\"Unknown country: \".concat(country));\n}\nexport function isSupportedCountry(country, metadata) {\n // metadata = new Metadata(metadata)\n // return metadata.hasCountry(country)\n return metadata.countries[country] !== undefined;\n}\n\nfunction setVersion(metadata) {\n var version = metadata.version;\n\n if (typeof version === 'number') {\n this.v1 = version === 1;\n this.v2 = version === 2;\n this.v3 = version === 3;\n this.v4 = version === 4;\n } else {\n if (!version) {\n this.v1 = true;\n } else if (compare(version, V3) === -1) {\n this.v2 = true;\n } else if (compare(version, V4) === -1) {\n this.v3 = true;\n } else {\n this.v4 = true;\n }\n }\n} // const ISO_COUNTRY_CODE = /^[A-Z]{2}$/\n// function isCountryCode(countryCode) {\n// \treturn ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode)\n// }","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function') {\n return;\n }\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\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}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { createMemoryHistory, createLocation, locationsAreEqual, createPath } from 'history';\nimport warning from 'tiny-warning';\nimport createContext from 'mini-create-react-context';\nimport invariant from 'tiny-invariant';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport pathToRegexp from 'path-to-regexp';\nimport { isValidElementType } from 'react-is';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport hoistStatics from 'hoist-non-react-statics'; // TODO: Replace with React.createContext once we can assume React 16+\n\nvar createNamedContext = function createNamedContext(name) {\n var context = createContext();\n context.displayName = name;\n return context;\n};\n\nvar historyContext =\n/*#__PURE__*/\ncreateNamedContext(\"Router-History\"); // TODO: Replace with React.createContext once we can assume React 16+\n\nvar createNamedContext$1 = function createNamedContext(name) {\n var context = createContext();\n context.displayName = name;\n return context;\n};\n\nvar context =\n/*#__PURE__*/\ncreateNamedContext$1(\"Router\");\n/**\n * The public API for putting history on context.\n */\n\nvar Router =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Router, _React$Component);\n\n Router.computeRootMatch = function computeRootMatch(pathname) {\n return {\n path: \"/\",\n url: \"/\",\n params: {},\n isExact: pathname === \"/\"\n };\n };\n\n function Router(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.state = {\n location: props.history.location\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 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 is mounted.\n\n _this._isMounted = false;\n _this._pendingLocation = null;\n\n if (!props.staticContext) {\n _this.unlisten = props.history.listen(function (location) {\n if (_this._isMounted) {\n _this.setState({\n location: location\n });\n } else {\n _this._pendingLocation = location;\n }\n });\n }\n\n return _this;\n }\n\n var _proto = Router.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({\n location: this._pendingLocation\n });\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.unlisten) this.unlisten();\n };\n\n _proto.render = function render() {\n return React.createElement(context.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 }, React.createElement(historyContext.Provider, {\n children: this.props.children || null,\n value: this.props.history\n }));\n };\n\n return Router;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\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 process.env.NODE_ENV !== \"production\" ? warning(prevProps.history === this.props.history, \"You cannot change \") : void 0;\n };\n}\n/**\n * The public API for a that stores location in memory.\n */\n\n\nvar MemoryRouter =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(MemoryRouter, _React$Component);\n\n function MemoryRouter() {\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.history = createMemoryHistory(_this.props);\n return _this;\n }\n\n var _proto = MemoryRouter.prototype;\n\n _proto.render = function render() {\n return React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return MemoryRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\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 process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\") : void 0;\n };\n}\n\nvar Lifecycle =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Lifecycle, _React$Component);\n\n function Lifecycle() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Lifecycle.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n };\n\n _proto.render = function render() {\n return null;\n };\n\n return Lifecycle;\n}(React.Component);\n/**\n * The public API for prompting the user before navigating away from a screen.\n */\n\n\nfunction Prompt(_ref) {\n var message = _ref.message,\n _ref$when = _ref.when,\n when = _ref$when === void 0 ? true : _ref$when;\n return React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n if (!when || context.staticContext) return null;\n var method = context.history.block;\n return React.createElement(Lifecycle, {\n onMount: function onMount(self) {\n self.release = method(message);\n },\n onUpdate: function onUpdate(self, prevProps) {\n if (prevProps.message !== message) {\n self.release();\n self.release = method(message);\n }\n },\n onUnmount: function onUnmount(self) {\n self.release();\n },\n message: message\n });\n });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n var messageType = PropTypes.oneOfType([PropTypes.func, PropTypes.string]);\n Prompt.propTypes = {\n when: PropTypes.bool,\n message: messageType.isRequired\n };\n}\n\nvar cache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n var generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\n\n\nfunction generatePath(path, params) {\n if (path === void 0) {\n path = \"/\";\n }\n\n if (params === void 0) {\n params = {};\n }\n\n return path === \"/\" ? path : compilePath(path)(params, {\n pretty: true\n });\n}\n/**\n * The public API for navigating programmatically with a component.\n */\n\n\nfunction Redirect(_ref) {\n var computedMatch = _ref.computedMatch,\n to = _ref.to,\n _ref$push = _ref.push,\n push = _ref$push === void 0 ? false : _ref$push;\n return React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var history = context.history,\n staticContext = context.staticContext;\n var method = push ? history.push : history.replace;\n var location = createLocation(computedMatch ? typeof to === \"string\" ? generatePath(to, computedMatch.params) : _extends({}, to, {\n pathname: generatePath(to.pathname, computedMatch.params)\n }) : to); // When rendering in a static context,\n // set the new location immediately.\n\n if (staticContext) {\n method(location);\n return null;\n }\n\n return React.createElement(Lifecycle, {\n onMount: function onMount() {\n method(location);\n },\n onUpdate: function onUpdate(self, prevProps) {\n var prevLocation = createLocation(prevProps.to);\n\n if (!locationsAreEqual(prevLocation, _extends({}, location, {\n key: prevLocation.key\n }))) {\n method(location);\n }\n },\n to: to\n });\n });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nvar cache$1 = {};\nvar cacheLimit$1 = 10000;\nvar cacheCount$1 = 0;\n\nfunction compilePath$1(path, options) {\n var cacheKey = \"\" + options.end + options.strict + options.sensitive;\n var pathCache = cache$1[cacheKey] || (cache$1[cacheKey] = {});\n if (pathCache[path]) return pathCache[path];\n var keys = [];\n var regexp = pathToRegexp(path, keys, options);\n var result = {\n regexp: regexp,\n keys: keys\n };\n\n if (cacheCount$1 < cacheLimit$1) {\n pathCache[path] = result;\n cacheCount$1++;\n }\n\n return result;\n}\n/**\n * Public API for matching a URL pathname to a path.\n */\n\n\nfunction matchPath(pathname, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = {\n path: options\n };\n }\n\n var _options = options,\n path = _options.path,\n _options$exact = _options.exact,\n exact = _options$exact === void 0 ? false : _options$exact,\n _options$strict = _options.strict,\n strict = _options$strict === void 0 ? false : _options$strict,\n _options$sensitive = _options.sensitive,\n sensitive = _options$sensitive === void 0 ? false : _options$sensitive;\n var paths = [].concat(path);\n return paths.reduce(function (matched, path) {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n var _compilePath = compilePath$1(path, {\n end: exact,\n strict: strict,\n sensitive: sensitive\n }),\n regexp = _compilePath.regexp,\n keys = _compilePath.keys;\n\n var match = regexp.exec(pathname);\n if (!match) return null;\n var url = match[0],\n values = match.slice(1);\n var isExact = pathname === url;\n if (exact && !isExact) return null;\n return {\n path: path,\n // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url,\n // the matched portion of the URL\n isExact: isExact,\n // whether or not we matched exactly\n params: keys.reduce(function (memo, key, index) {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n var value = children(props);\n process.env.NODE_ENV !== \"production\" ? warning(value !== undefined, \"You returned `undefined` from the `children` function of \" + (\", but you \") + \"should have returned a React element or `null`\") : void 0;\n return value || null;\n}\n/**\n * The public API for matching a single path and rendering.\n */\n\n\nvar Route =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Route, _React$Component);\n\n function Route() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Route.prototype;\n\n _proto.render = function render() {\n var _this = this;\n\n return React.createElement(context.Consumer, null, function (context$1) {\n !context$1 ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var location = _this.props.location || context$1.location;\n var match = _this.props.computedMatch ? _this.props.computedMatch // already computed the match for us\n : _this.props.path ? matchPath(location.pathname, _this.props) : context$1.match;\n\n var props = _extends({}, context$1, {\n location: location,\n match: match\n });\n\n var _this$props = _this.props,\n children = _this$props.children,\n component = _this$props.component,\n render = _this$props.render; // Preact uses an empty array as children by\n // default, so use null if that's the case.\n\n if (Array.isArray(children) && children.length === 0) {\n children = null;\n }\n\n return React.createElement(context.Provider, {\n value: props\n }, props.match ? children ? typeof children === \"function\" ? process.env.NODE_ENV !== \"production\" ? evalChildrenDev(children, props, _this.props.path) : children(props) : children : component ? React.createElement(component, props) : render ? render(props) : null : typeof children === \"function\" ? process.env.NODE_ENV !== \"production\" ? evalChildrenDev(children, props, _this.props.path) : children(props) : null);\n });\n };\n\n return Route;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: function component(props, propName) {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\"Invalid prop 'component' supplied to 'Route': the prop is not a valid React component\");\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.children && !isEmptyChildren(this.props.children) && this.props.component), \"You should not use and in the same route; will be ignored\") : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.children && !isEmptyChildren(this.props.children) && this.props.render), \"You should not use and in the same route; will be ignored\") : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.component && this.props.render), \"You should not use and in the same route; will be ignored\") : void 0;\n };\n\n Route.prototype.componentDidUpdate = function (prevProps) {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.location && !prevProps.location), ' 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.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(!this.props.location && prevProps.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.') : void 0;\n };\n}\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n return _extends({}, location, {\n pathname: addLeadingSlash(basename) + location.pathname\n });\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n var base = addLeadingSlash(basename);\n if (location.pathname.indexOf(base) !== 0) return location;\n return _extends({}, 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 function () {\n process.env.NODE_ENV !== \"production\" ? invariant(false, \"You cannot %s with \", methodName) : invariant(false);\n };\n}\n\nfunction noop() {}\n/**\n * The public top-level API for a \"static\" , 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 */\n\n\nvar StaticRouter =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(StaticRouter, _React$Component);\n\n function StaticRouter() {\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\n _this.handlePush = function (location) {\n return _this.navigateTo(location, \"PUSH\");\n };\n\n _this.handleReplace = function (location) {\n return _this.navigateTo(location, \"REPLACE\");\n };\n\n _this.handleListen = function () {\n return noop;\n };\n\n _this.handleBlock = function () {\n return noop;\n };\n\n return _this;\n }\n\n var _proto = StaticRouter.prototype;\n\n _proto.navigateTo = function navigateTo(location, action) {\n var _this$props = this.props,\n _this$props$basename = _this$props.basename,\n basename = _this$props$basename === void 0 ? \"\" : _this$props$basename,\n _this$props$context = _this$props.context,\n context = _this$props$context === void 0 ? {} : _this$props$context;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n };\n\n _proto.render = function render() {\n var _this$props2 = this.props,\n _this$props2$basename = _this$props2.basename,\n basename = _this$props2$basename === void 0 ? \"\" : _this$props2$basename,\n _this$props2$context = _this$props2.context,\n context = _this$props2$context === void 0 ? {} : _this$props2$context,\n _this$props2$location = _this$props2.location,\n location = _this$props2$location === void 0 ? \"/\" : _this$props2$location,\n rest = _objectWithoutPropertiesLoose(_this$props2, [\"basename\", \"context\", \"location\"]);\n\n var history = {\n createHref: function createHref(path) {\n return addLeadingSlash(basename + createURL(path));\n },\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 return React.createElement(Router, _extends({}, rest, {\n history: history,\n staticContext: context\n }));\n };\n\n return StaticRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\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 process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { StaticRouter as Router }`.\") : void 0;\n };\n}\n/**\n * The public API for rendering the first that matches.\n */\n\n\nvar Switch =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Switch, _React$Component);\n\n function Switch() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Switch.prototype;\n\n _proto.render = function render() {\n var _this = this;\n\n return React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var location = _this.props.location || context.location;\n var element, match; // 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 s that render the same\n // component at different URLs.\n\n React.Children.forEach(_this.props.children, function (child) {\n if (match == null && React.isValidElement(child)) {\n element = child;\n var path = child.props.path || child.props.from;\n match = path ? matchPath(location.pathname, _extends({}, child.props, {\n path: path\n })) : context.match;\n }\n });\n return match ? React.cloneElement(element, {\n location: location,\n computedMatch: match\n }) : null;\n });\n };\n\n return Switch;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function (prevProps) {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.location && !prevProps.location), ' 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.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(!this.props.location && prevProps.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.') : void 0;\n };\n}\n/**\n * A public higher-order component to access the imperative API\n */\n\n\nfunction withRouter(Component) {\n var displayName = \"withRouter(\" + (Component.displayName || Component.name) + \")\";\n\n var C = function C(props) {\n var wrappedComponentRef = props.wrappedComponentRef,\n remainingProps = _objectWithoutPropertiesLoose(props, [\"wrappedComponentRef\"]);\n\n return React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <\" + displayName + \" /> outside a \") : invariant(false) : void 0;\n return React.createElement(Component, _extends({}, remainingProps, context, {\n ref: wrappedComponentRef\n }));\n });\n };\n\n C.displayName = displayName;\n C.WrappedComponent = Component;\n\n if (process.env.NODE_ENV !== \"production\") {\n C.propTypes = {\n wrappedComponentRef: PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.object])\n };\n }\n\n return hoistStatics(C, Component);\n}\n\nvar useContext = React.useContext;\n\nfunction useHistory() {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useHistory()\") : invariant(false) : void 0;\n }\n\n return useContext(historyContext);\n}\n\nfunction useLocation() {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useLocation()\") : invariant(false) : void 0;\n }\n\n return useContext(context).location;\n}\n\nfunction useParams() {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useParams()\") : invariant(false) : void 0;\n }\n\n var match = useContext(context).match;\n return match ? match.params : {};\n}\n\nfunction useRouteMatch(path) {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useRouteMatch()\") : invariant(false) : void 0;\n }\n\n var location = useLocation();\n var match = useContext(context).match;\n return path ? matchPath(location.pathname, path) : match;\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n if (typeof window !== \"undefined\") {\n var global = window;\n var key = \"__react_router_build__\";\n var buildNames = {\n cjs: \"CommonJS\",\n esm: \"ES modules\",\n umd: \"UMD\"\n };\n\n if (global[key] && global[key] !== \"esm\") {\n var initialBuildName = buildNames[global[key]];\n var secondaryBuildName = buildNames[\"esm\"]; // TODO: Add link to article that explains in detail how to avoid\n // loading 2 different builds.\n\n throw new Error(\"You are loading the \" + secondaryBuildName + \" build of React Router \" + (\"on a page that is already running the \" + initialBuildName + \" \") + \"build, so things won't work right.\");\n }\n\n global[key] = \"esm\";\n }\n}\n\nexport { MemoryRouter, Prompt, Redirect, Route, Router, StaticRouter, Switch, historyContext as __HistoryContext, context as __RouterContext, generatePath, matchPath, useHistory, useLocation, useParams, useRouteMatch, withRouter };","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function noop() {}","/** PURE_IMPORTS_START _noop PURE_IMPORTS_END */\nimport { noop } from './noop';\nexport function pipe() {\n var fns = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (!fns) {\n return noop;\n }\n\n if (fns.length === 1) {\n return fns[0];\n }\n\n return function piped(input) {\n return fns.reduce(function (prev, fn) {\n return fn(prev);\n }, input);\n };\n}","/** PURE_IMPORTS_START _util_canReportError,_util_toSubscriber,_symbol_observable,_util_pipe,_config PURE_IMPORTS_END */\nimport { canReportError } from './util/canReportError';\nimport { toSubscriber } from './util/toSubscriber';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\n\nvar Observable =\n/*@__PURE__*/\nfunction () {\n function Observable(subscribe) {\n this._isScalar = false;\n\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var operator = this.operator;\n var sink = toSubscriber(observerOrNext, error, complete);\n\n if (operator) {\n sink.add(operator.call(sink, this.source));\n } else {\n sink.add(this.source || config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable ? this._subscribe(sink) : this._trySubscribe(sink));\n }\n\n if (config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n\n return sink;\n };\n\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n } catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n\n if (canReportError(sink)) {\n sink.error(err);\n } else {\n console.warn(err);\n }\n }\n };\n\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscription;\n subscription = _this.subscribe(function (value) {\n try {\n next(value);\n } catch (err) {\n reject(err);\n\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n });\n };\n\n Observable.prototype._subscribe = function (subscriber) {\n var source = this.source;\n return source && source.subscribe(subscriber);\n };\n\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n\n Observable.prototype.pipe = function () {\n var operations = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n\n if (operations.length === 0) {\n return this;\n }\n\n return pipeFromArray(operations)(this);\n };\n\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n\n _this.subscribe(function (x) {\n return value = x;\n }, function (err) {\n return reject(err);\n }, function () {\n return resolve(value);\n });\n });\n };\n\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n\n return Observable;\n}();\n\nexport { Observable };\n\nfunction getPromiseCtor(promiseCtor) {\n if (!promiseCtor) {\n promiseCtor = config.Promise || Promise;\n }\n\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n\n return promiseCtor;\n}","/** PURE_IMPORTS_START _Subscriber,_symbol_rxSubscriber,_Observer PURE_IMPORTS_END */\nimport { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { empty as emptyObserver } from '../Observer';\nexport function toSubscriber(nextOrObserver, error, complete) {\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber) {\n return nextOrObserver;\n }\n\n if (nextOrObserver[rxSubscriberSymbol]) {\n return nextOrObserver[rxSubscriberSymbol]();\n }\n }\n\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber(emptyObserver);\n }\n\n return new Subscriber(nextOrObserver, error, complete);\n}","/** PURE_IMPORTS_START _Subscriber PURE_IMPORTS_END */\nimport { Subscriber } from '../Subscriber';\nexport function canReportError(observer) {\n while (observer) {\n var _a = observer,\n closed_1 = _a.closed,\n destination = _a.destination,\n isStopped = _a.isStopped;\n\n if (closed_1 || isStopped) {\n return false;\n } else if (destination && destination instanceof Subscriber) {\n observer = destination;\n } else {\n observer = null;\n }\n }\n\n return true;\n}","/** PURE_IMPORTS_START tslib,_util_isFunction,_Observer,_Subscription,_internal_symbol_rxSubscriber,_config,_util_hostReportError PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { empty as emptyObserver } from './Observer';\nimport { Subscription } from './Subscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\n\nvar Subscriber =\n/*@__PURE__*/\nfunction (_super) {\n tslib_1.__extends(Subscriber, _super);\n\n function Subscriber(destinationOrNext, error, complete) {\n var _this = _super.call(this) || this;\n\n _this.syncErrorValue = null;\n _this.syncErrorThrown = false;\n _this.syncErrorThrowable = false;\n _this.isStopped = false;\n\n switch (arguments.length) {\n case 0:\n _this.destination = emptyObserver;\n break;\n\n case 1:\n if (!destinationOrNext) {\n _this.destination = emptyObserver;\n break;\n }\n\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n _this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n _this.destination = destinationOrNext;\n destinationOrNext.add(_this);\n } else {\n _this.syncErrorThrowable = true;\n _this.destination = new SafeSubscriber(_this, destinationOrNext);\n }\n\n break;\n }\n\n default:\n _this.syncErrorThrowable = true;\n _this.destination = new SafeSubscriber(_this, destinationOrNext, error, complete);\n break;\n }\n\n return _this;\n }\n\n Subscriber.prototype[rxSubscriberSymbol] = function () {\n return this;\n };\n\n Subscriber.create = function (next, error, complete) {\n var subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n };\n\n Subscriber.prototype.next = function (value) {\n if (!this.isStopped) {\n this._next(value);\n }\n };\n\n Subscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n this.isStopped = true;\n\n this._error(err);\n }\n };\n\n Subscriber.prototype.complete = function () {\n if (!this.isStopped) {\n this.isStopped = true;\n\n this._complete();\n }\n };\n\n Subscriber.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n\n this.isStopped = true;\n\n _super.prototype.unsubscribe.call(this);\n };\n\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n\n Subscriber.prototype._error = function (err) {\n this.destination.error(err);\n this.unsubscribe();\n };\n\n Subscriber.prototype._complete = function () {\n this.destination.complete();\n this.unsubscribe();\n };\n\n Subscriber.prototype._unsubscribeAndRecycle = function () {\n var _parentOrParents = this._parentOrParents;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n };\n\n return Subscriber;\n}(Subscription);\n\nexport { Subscriber };\n\nvar SafeSubscriber =\n/*@__PURE__*/\nfunction (_super) {\n tslib_1.__extends(SafeSubscriber, _super);\n\n function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n\n _this._parentSubscriber = _parentSubscriber;\n var next;\n var context = _this;\n\n if (isFunction(observerOrNext)) {\n next = observerOrNext;\n } else if (observerOrNext) {\n next = observerOrNext.next;\n error = observerOrNext.error;\n complete = observerOrNext.complete;\n\n if (observerOrNext !== emptyObserver) {\n context = Object.create(observerOrNext);\n\n if (isFunction(context.unsubscribe)) {\n _this.add(context.unsubscribe.bind(context));\n }\n\n context.unsubscribe = _this.unsubscribe.bind(_this);\n }\n }\n\n _this._context = context;\n _this._next = next;\n _this._error = error;\n _this._complete = complete;\n return _this;\n }\n\n SafeSubscriber.prototype.next = function (value) {\n if (!this.isStopped && this._next) {\n var _parentSubscriber = this._parentSubscriber;\n\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n } else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n };\n\n SafeSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n var useDeprecatedSynchronousErrorHandling = config.useDeprecatedSynchronousErrorHandling;\n\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n\n this.unsubscribe();\n } else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n\n this.unsubscribe();\n }\n } else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n\n hostReportError(err);\n } else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n } else {\n hostReportError(err);\n }\n\n this.unsubscribe();\n }\n }\n };\n\n SafeSubscriber.prototype.complete = function () {\n var _this = this;\n\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n\n if (this._complete) {\n var wrappedComplete = function wrappedComplete() {\n return _this._complete.call(_this._context);\n };\n\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n\n this.unsubscribe();\n } else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n\n this.unsubscribe();\n }\n } else {\n this.unsubscribe();\n }\n }\n };\n\n SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) {\n try {\n fn.call(this._context, value);\n } catch (err) {\n this.unsubscribe();\n\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n } else {\n hostReportError(err);\n }\n }\n };\n\n SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) {\n if (!config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n\n try {\n fn.call(this._context, value);\n } catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n } else {\n hostReportError(err);\n return true;\n }\n }\n\n return false;\n };\n\n SafeSubscriber.prototype._unsubscribe = function () {\n var _parentSubscriber = this._parentSubscriber;\n this._context = null;\n this._parentSubscriber = null;\n\n _parentSubscriber.unsubscribe();\n };\n\n return SafeSubscriber;\n}(Subscriber);\n\nexport { SafeSubscriber };","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var isArray =\n/*@__PURE__*/\nfunction () {\n return Array.isArray || function (x) {\n return x && typeof x.length === 'number';\n };\n}();","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar UnsubscriptionErrorImpl =\n/*@__PURE__*/\nfunction () {\n function UnsubscriptionErrorImpl(errors) {\n Error.call(this);\n this.message = errors ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) {\n return i + 1 + \") \" + err.toString();\n }).join('\\n ') : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n }\n\n UnsubscriptionErrorImpl.prototype =\n /*@__PURE__*/\n Object.create(Error.prototype);\n return UnsubscriptionErrorImpl;\n}();\n\nexport var UnsubscriptionError = UnsubscriptionErrorImpl;","/** PURE_IMPORTS_START _util_isArray,_util_isObject,_util_isFunction,_util_UnsubscriptionError PURE_IMPORTS_END */\nimport { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\n\nvar Subscription =\n/*@__PURE__*/\nfunction () {\n function Subscription(unsubscribe) {\n this.closed = false;\n this._parentOrParents = null;\n this._subscriptions = null;\n\n if (unsubscribe) {\n this._unsubscribe = unsubscribe;\n }\n }\n\n Subscription.prototype.unsubscribe = function () {\n var errors;\n\n if (this.closed) {\n return;\n }\n\n var _a = this,\n _parentOrParents = _a._parentOrParents,\n _unsubscribe = _a._unsubscribe,\n _subscriptions = _a._subscriptions;\n\n this.closed = true;\n this._parentOrParents = null;\n this._subscriptions = null;\n\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n } else if (_parentOrParents !== null) {\n for (var index = 0; index < _parentOrParents.length; ++index) {\n var parent_1 = _parentOrParents[index];\n parent_1.remove(this);\n }\n }\n\n if (isFunction(_unsubscribe)) {\n try {\n _unsubscribe.call(this);\n } catch (e) {\n errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n\n if (isArray(_subscriptions)) {\n var index = -1;\n var len = _subscriptions.length;\n\n while (++index < len) {\n var sub = _subscriptions[index];\n\n if (isObject(sub)) {\n try {\n sub.unsubscribe();\n } catch (e) {\n errors = errors || [];\n\n if (e instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n } else {\n errors.push(e);\n }\n }\n }\n }\n }\n\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n };\n\n Subscription.prototype.add = function (teardown) {\n var subscription = teardown;\n\n if (!teardown) {\n return Subscription.EMPTY;\n }\n\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(teardown);\n\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n return subscription;\n } else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n } else if (!(subscription instanceof Subscription)) {\n var tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n\n break;\n\n default:\n {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n\n var _parentOrParents = subscription._parentOrParents;\n\n if (_parentOrParents === null) {\n subscription._parentOrParents = this;\n } else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n return subscription;\n }\n\n subscription._parentOrParents = [_parentOrParents, this];\n } else if (_parentOrParents.indexOf(this) === -1) {\n _parentOrParents.push(this);\n } else {\n return subscription;\n }\n\n var subscriptions = this._subscriptions;\n\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n } else {\n subscriptions.push(subscription);\n }\n\n return subscription;\n };\n\n Subscription.prototype.remove = function (subscription) {\n var subscriptions = this._subscriptions;\n\n if (subscriptions) {\n var subscriptionIndex = subscriptions.indexOf(subscription);\n\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n };\n\n Subscription.EMPTY = function (empty) {\n empty.closed = true;\n return empty;\n }(new Subscription());\n\n return Subscription;\n}();\n\nexport { Subscription };\n\nfunction flattenUnsubscriptionErrors(errors) {\n return errors.reduce(function (errs, err) {\n return errs.concat(err instanceof UnsubscriptionError ? err.errors : err);\n }, []);\n}","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","/**\n * @hidden\n */\nexport var classNames = function classNames() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return args.filter(function (arg) {\n return arg !== true && !!arg;\n }).map(function (arg) {\n return Array.isArray(arg) ? classNames.apply(void 0, arg) : typeof arg === 'object' ? Object.keys(arg).map(function (key, idx) {\n return arg[idx] || arg[key] && key || null;\n }).filter(function (el) {\n return el !== null;\n }).join(' ') : arg;\n }).filter(function (arg) {\n return !!arg;\n }).join(' ');\n};","/**\n * @hidden\n */\nvar noop = function noop() {};\n\nexport { noop };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from './classNames';\n/**\n * @hidden\n */\n\nvar FloatingLabel =\n/** @class */\nfunction (_super) {\n __extends(FloatingLabel, _super);\n\n function FloatingLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.state = {\n focused: false\n };\n\n _this.handleFocus = function (_) {\n _this.setState({\n focused: true\n });\n };\n\n _this.handleBlur = function (_) {\n _this.setState({\n focused: false\n });\n };\n\n return _this;\n }\n\n FloatingLabel.prototype.render = function () {\n var _a = this.props,\n label = _a.label,\n id = _a.id,\n className = _a.className,\n value = _a.value,\n placeholder = _a.placeholder,\n valid = _a.valid,\n style = _a.style;\n var childClassNames = classNames({\n 'k-textbox-container': true,\n 'k-state-focused': this.state.focused,\n 'k-state-empty': !(value || placeholder),\n 'k-state-invalid': !valid && valid !== undefined,\n 'k-rtl': this.props.dir === 'rtl'\n }, className);\n return React.createElement(\"span\", {\n className: childClassNames,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n style: style,\n dir: this.props.dir\n }, this.props.children, label ? id ? React.createElement(\"label\", {\n htmlFor: id,\n className: \"k-label\"\n }, label) : React.createElement(\"span\", {\n className: \"k-label\"\n }, label) : null);\n };\n\n FloatingLabel.propTypes = {\n label: PropTypes.string,\n id: PropTypes.string,\n value: PropTypes.string,\n placeholder: PropTypes.string,\n valid: PropTypes.bool\n };\n return FloatingLabel;\n}(React.Component);\n\nexport default FloatingLabel;","/**\n * @hidden\n */\nvar isServerRendering = function isServerRendering() {\n return typeof window === 'undefined';\n};\n\nexport { isServerRendering };","var proxy = function proxy(a, b) {\n return function (e) {\n return b(a(e));\n };\n};\n\nvar bind = function bind(el, event, callback) {\n return el.addEventListener && el.addEventListener(event, callback);\n};\n\nvar unbind = function unbind(el, event, callback) {\n return el && el.removeEventListener && el.removeEventListener(event, callback);\n};\n\nvar noop = function noop() {\n /* empty */\n};\n\nvar preventDefault = function preventDefault(e) {\n return e.preventDefault();\n};\n\nvar touchRegExp = /touch/; // 300ms is the usual mouse interval;\n// // However, an underpowered mobile device under a heavy load may queue mouse events for a longer period.\n\nvar IGNORE_MOUSE_TIMEOUT = 2000;\n\nfunction normalizeEvent(e) {\n if (e.type.match(touchRegExp)) {\n return {\n pageX: e.changedTouches[0].pageX,\n pageY: e.changedTouches[0].pageY,\n clientX: e.changedTouches[0].clientX,\n clientY: e.changedTouches[0].clientY,\n type: e.type,\n originalEvent: e,\n isTouch: true\n };\n }\n\n return {\n pageX: e.pageX,\n pageY: e.pageY,\n clientX: e.clientX,\n clientY: e.clientY,\n offsetX: e.offsetX,\n offsetY: e.offsetY,\n type: e.type,\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey,\n altKey: e.altKey,\n originalEvent: e\n };\n}\n\nexport var Draggable = function Draggable(ref) {\n var this$1 = this;\n var press = ref.press;\n if (press === void 0) press = noop;\n var drag = ref.drag;\n if (drag === void 0) drag = noop;\n var release = ref.release;\n if (release === void 0) release = noop;\n var mouseOnly = ref.mouseOnly;\n if (mouseOnly === void 0) mouseOnly = false;\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._ignoreMouse = false;\n this._mouseOnly = mouseOnly;\n this._touchAction;\n\n this._touchstart = function (e) {\n if (e.touches.length === 1) {\n this$1._pressHandler(e);\n }\n };\n\n this._touchmove = function (e) {\n if (e.touches.length === 1) {\n this$1._dragHandler(e);\n }\n };\n\n this._touchend = function (e) {\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 if (e.touches.length === 0 && e.changedTouches.length === 1) {\n this$1._releaseHandler(e);\n\n this$1._ignoreMouse = true;\n setTimeout(this$1._restoreMouse, IGNORE_MOUSE_TIMEOUT);\n }\n };\n\n this._restoreMouse = function () {\n this$1._ignoreMouse = false;\n };\n\n this._mousedown = function (e) {\n var which = e.which;\n\n if (which && which > 1 || this$1._ignoreMouse) {\n return;\n }\n\n bind(document, \"mousemove\", this$1._mousemove);\n bind(document, \"mouseup\", this$1._mouseup);\n\n this$1._pressHandler(e);\n };\n\n this._mousemove = function (e) {\n this$1._dragHandler(e);\n };\n\n this._mouseup = function (e) {\n unbind(document, \"mousemove\", this$1._mousemove);\n unbind(document, \"mouseup\", this$1._mouseup);\n\n this$1._releaseHandler(e);\n };\n\n this._pointerdown = function (e) {\n if (e.isPrimary && e.button === 0) {\n bind(document, \"pointermove\", this$1._pointermove);\n bind(document, \"pointerup\", this$1._pointerup);\n bind(document, \"pointercancel\", this$1._pointerup);\n bind(document, \"contextmenu\", preventDefault);\n this$1._touchAction = e.target.style.touchAction;\n e.target.style.touchAction = \"none\";\n\n this$1._pressHandler(e);\n }\n };\n\n this._pointermove = function (e) {\n if (e.isPrimary) {\n this$1._dragHandler(e);\n }\n };\n\n this._pointerup = function (e) {\n if (e.isPrimary) {\n unbind(document, \"pointermove\", this$1._pointermove);\n unbind(document, \"pointerup\", this$1._pointerup);\n unbind(document, \"pointercancel\", this$1._pointerup);\n unbind(document, \"contextmenu\", preventDefault);\n e.target.style.touchAction = this$1._touchAction;\n\n this$1._releaseHandler(e);\n }\n };\n};\n\nDraggable.supportPointerEvent = function supportPointerEvent() {\n return typeof window !== 'undefined' && window.PointerEvent;\n};\n\nDraggable.prototype.bindTo = function bindTo(element) {\n if (element === this._element) {\n return;\n }\n\n if (this._element) {\n this._unbindFromCurrent();\n }\n\n this._element = element;\n\n this._bindToCurrent();\n};\n\nDraggable.prototype._bindToCurrent = function _bindToCurrent() {\n var element = this._element;\n\n if (this._usePointers()) {\n bind(element, \"pointerdown\", this._pointerdown);\n return;\n }\n\n bind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n bind(element, \"touchstart\", this._touchstart);\n bind(element, \"touchmove\", this._touchmove);\n bind(element, \"touchend\", this._touchend);\n }\n};\n\nDraggable.prototype._unbindFromCurrent = function _unbindFromCurrent() {\n var element = this._element;\n\n if (this._usePointers()) {\n unbind(element, \"pointerdown\", this._pointerdown);\n unbind(document, \"pointermove\", this._pointermove);\n unbind(document, \"pointerup\", this._pointerup);\n unbind(document, \"contextmenu\", preventDefault);\n unbind(document, \"pointercancel\", this._pointerup);\n return;\n }\n\n unbind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n unbind(element, \"touchstart\", this._touchstart);\n unbind(element, \"touchmove\", this._touchmove);\n unbind(element, \"touchend\", this._touchend);\n }\n};\n\nDraggable.prototype._usePointers = function _usePointers() {\n return !this._mouseOnly && Draggable.supportPointerEvent();\n};\n\nDraggable.prototype.destroy = function destroy() {\n this._unbindFromCurrent();\n\n this._element = null;\n}; // Re-export as \"default\" field to address a bug\n// where the ES Module is imported by CommonJS code.\n//\n// See https://github.com/telerik/kendo-angular/issues/1314\n\n\nDraggable.default = Draggable; // Rollup won't output exports['default'] otherwise\n\nexport default Draggable;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport KendoDraggable from '@telerik/kendo-draggable';\n/**\n * @hidden\n */\n\nvar Draggable =\n/** @class */\nfunction (_super) {\n __extends(Draggable, _super);\n\n function Draggable() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n\n\n _this.element = null;\n _this.draggable = new KendoDraggable({\n press: function press(event) {\n if (_this.element && _this.props.onPress) {\n _this.props.onPress.call(undefined, {\n target: _this,\n event: event,\n element: _this.element\n });\n }\n },\n drag: function drag(event) {\n if (_this.element && _this.props.onDrag) {\n _this.props.onDrag.call(undefined, {\n target: _this,\n event: event,\n element: _this.element\n });\n }\n },\n release: function release(event) {\n if (_this.element && _this.props.onRelease) {\n _this.props.onRelease.call(undefined, {\n target: _this,\n event: event\n });\n }\n }\n });\n\n _this.assingRef = function (element) {\n _this.element = element;\n };\n\n return _this;\n }\n\n Draggable.prototype.componentDidMount = function () {\n if (this.element) {\n this.draggable.bindTo(this.element);\n }\n };\n\n Draggable.prototype.componentWillUnmount = function () {\n this.draggable.destroy();\n };\n\n Draggable.prototype.render = function () {\n return React.cloneElement(React.Children.only(this.props.children), {\n ref: this.assingRef\n });\n };\n\n Draggable.propTypes = {\n children: PropTypes.element.isRequired\n };\n return Draggable;\n}(React.Component);\n\nexport { Draggable };","import { FIELD_REGEX } from './constants';\nvar getterCache = {};\n\ngetterCache.undefined = function () {\n return undefined;\n};\n/**\n * @hidden\n */\n\n\nexport 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, fieldName) {\n fields.push(index !== undefined ? index : indexAccessor || fieldName);\n });\n\n getterCache[field] = function (obj) {\n var result = obj;\n\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}","import { FIELD_REGEX } from './constants';\nvar setterCache = {};\n\nsetterCache.undefined = function (obj) {\n return obj;\n};\n/**\n * @hidden\n */\n\n\nexport function setter(field) {\n if (setterCache[field]) {\n return setterCache[field];\n }\n\n var fields = [];\n field.replace(FIELD_REGEX, function (_match, index, indexAccessor, fieldName) {\n fields.push(index !== undefined ? index : indexAccessor || fieldName);\n });\n\n setterCache[field] = function (obj, value) {\n var root = obj;\n var depth = fields.length - 1;\n\n for (var idx = 0; idx < depth && root; idx++) {\n root = root[fields[idx]] = root[fields[idx]] || {};\n }\n\n root[fields[depth]] = value;\n };\n\n return setterCache[field];\n}","/**\n * @hidden\n */\nvar outerHeight = function outerHeight(element) {\n if (!element) {\n return 0;\n }\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 */\n\n\nvar outerWidth = function outerWidth(element) {\n if (!element) {\n return 0;\n }\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 */\n\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 */\n\nexport default {\n outerHeight: outerHeight,\n outerWidth: outerWidth,\n styles: styles\n};","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\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;\n\nvar AnimationChild =\n/** @class */\nfunction (_super) {\n __extends(AnimationChild, _super);\n\n function AnimationChild() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(AnimationChild.prototype, \"element\", {\n /**\n * The element that is being animated.\n */\n get: function get() {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n AnimationChild.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n children = _a.children,\n style = _a.style,\n appear = _a.appear,\n enter = _a.enter,\n exit = _a.exit,\n transitionName = _a.transitionName,\n transitionEnterDuration = _a.transitionEnterDuration,\n transitionExitDuration = _a.transitionExitDuration,\n className = _a.className,\n _onEnter = _a.onEnter,\n _onEntering = _a.onEntering,\n _onEntered = _a.onEntered,\n _onExit = _a.onExit,\n _onExiting = _a.onExiting,\n _onExited = _a.onExited,\n mountOnEnter = _a.mountOnEnter,\n unmountOnExit = _a.unmountOnExit,\n animationEnteringStyle = _a.animationEnteringStyle,\n animationEnteredStyle = _a.animationEnteredStyle,\n animationExitingStyle = _a.animationExitingStyle,\n animationExitedStyle = _a.animationExitedStyle,\n other = __rest(_a, [\"children\", \"style\", \"appear\", \"enter\", \"exit\", \"transitionName\", \"transitionEnterDuration\", \"transitionExitDuration\", \"className\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"mountOnEnter\", \"unmountOnExit\", \"animationEnteringStyle\", \"animationEnteredStyle\", \"animationExitingStyle\", \"animationExitedStyle\"]);\n\n var childAnimationContainerClassNames = classNames(className, styles['child-animation-container']);\n\n var defaultStyle = __assign({\n transitionDelay: '0ms'\n }, style);\n\n var animationStyle = {\n entering: __assign({\n transitionDuration: transitionEnterDuration + \"ms\"\n }, animationEnteringStyle),\n entered: __assign({}, animationEnteredStyle),\n exiting: __assign({\n transitionDuration: transitionExitDuration + \"ms\"\n }, 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 onEnter(e) {\n if (_onEnter) {\n _onEnter.call(undefined, {\n animatedElement: e,\n target: _this\n });\n }\n },\n onEntering: function onEntering(e) {\n if (_onEntering) {\n _onEntering.call(undefined, {\n animatedElement: e,\n target: _this\n });\n }\n },\n onEntered: function onEntered(e) {\n if (_onEntered) {\n _onEntered.call(undefined, {\n animatedElement: e,\n target: _this\n });\n }\n },\n onExit: function onExit(e) {\n if (_onExit) {\n _onExit.call(undefined, {\n animatedElement: e,\n target: _this\n });\n }\n },\n onExiting: function onExiting(e) {\n if (_onExiting) {\n _onExiting.call(undefined, {\n animatedElement: e,\n target: _this\n });\n }\n },\n onExited: function onExited(e) {\n if (_onExited) {\n _onExited.call(undefined, {\n animatedElement: e,\n target: _this\n });\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\", {\n style: __assign({}, defaultStyle, animationStyle[status]),\n className: childAnimationContainerClassNames,\n ref: function ref(div) {\n _this._element = div;\n }\n }, children);\n });\n };\n /**\n * @hidden\n */\n\n\n AnimationChild.propTypes = {\n in: PropTypes.bool,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\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\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 animationEnteringStyle: {},\n animationEnteredStyle: {},\n animationExitingStyle: {},\n animationExitedStyle: {}\n };\n return AnimationChild;\n}(React.Component);\n\nexport { AnimationChild };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\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 util from './util';\nvar styles = util.styles; // tslint:enable:max-line-length\n\nvar Animation =\n/** @class */\nfunction (_super) {\n __extends(Animation, _super);\n\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n\n\n Animation.prototype.render = function () {\n var _a = this.props,\n id = _a.id,\n style = _a.style,\n children = _a.children,\n component = _a.component,\n className = _a.className,\n childFactory = _a.childFactory,\n stackChildren = _a.stackChildren,\n componentChildStyle = _a.componentChildStyle,\n componentChildClassName = _a.componentChildClassName,\n other = __rest(_a, [\"id\", \"style\", \"children\", \"component\", \"className\", \"childFactory\", \"stackChildren\", \"componentChildStyle\", \"componentChildClassName\"]);\n\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) {\n return React.createElement(AnimationChild, __assign({}, other, {\n style: componentChildStyle,\n className: componentChildClassName\n }), child);\n });\n return React.createElement(TransitionGroup, __assign({}, transitionProps), content);\n };\n /**\n * @hidden\n */\n\n\n Animation.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\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\n Animation.defaultProps = {\n component: 'div'\n };\n return Animation;\n}(React.Component);\n\nexport { Animation };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation'; // tslint:enable:max-line-length\n\nvar Fade =\n/** @class */\nfunction (_super) {\n __extends(Fade, _super);\n\n function Fade() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n\n\n Fade.prototype.render = function () {\n var _a = this.props,\n children = _a.children,\n other = __rest(_a, [\"children\"]);\n\n var animationProps = {\n transitionName: \"fade\"\n };\n return React.createElement(Animation, __assign({}, animationProps, other), children);\n };\n /**\n * @hidden\n */\n\n\n Fade.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n childFactory: PropTypes.any,\n className: PropTypes.string,\n component: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.any\n };\n /**\n * @hidden\n */\n\n Fade.defaultProps = {\n appear: false,\n enter: true,\n exit: false,\n transitionEnterDuration: 500,\n transitionExitDuration: 500\n };\n return Fade;\n}(React.Component);\n\nexport { Fade };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation'; // tslint:enable:max-line-length\n\nvar Expand =\n/** @class */\nfunction (_super) {\n __extends(Expand, _super);\n\n function Expand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n\n\n Expand.prototype.render = function () {\n var _a = this.props,\n direction = _a.direction,\n children = _a.children,\n other = __rest(_a, [\"direction\", \"children\"]);\n\n var animationProps = {\n transitionName: \"expand-\" + direction\n };\n return React.createElement(Animation, __assign({}, animationProps, other), children);\n };\n /**\n * @hidden\n */\n\n\n Expand.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n childFactory: PropTypes.any,\n className: PropTypes.string,\n direction: PropTypes.oneOf(['horizontal', 'vertical']),\n component: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.any\n };\n /**\n * @hidden\n */\n\n Expand.defaultProps = {\n appear: false,\n enter: true,\n exit: true,\n transitionEnterDuration: 300,\n transitionExitDuration: 300,\n direction: 'vertical'\n };\n return Expand;\n}(React.Component);\n\nexport { Expand };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation';\nvar EXITING_ANIMATION_STYLE = {\n position: 'absolute',\n top: '0',\n left: '0'\n}; // tslint:enable:max-line-length\n\nvar Push =\n/** @class */\nfunction (_super) {\n __extends(Push, _super);\n\n function Push() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n\n\n Push.prototype.render = function () {\n var _a = this.props,\n children = _a.children,\n direction = _a.direction,\n other = __rest(_a, [\"children\", \"direction\"]);\n\n return React.createElement(Animation, __assign({}, other, {\n transitionName: \"push-\" + direction,\n animationExitingStyle: this.props.stackChildren ? EXITING_ANIMATION_STYLE : undefined\n }), children);\n };\n /**\n * @hidden\n */\n\n\n Push.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n childFactory: PropTypes.any,\n className: PropTypes.string,\n direction: PropTypes.oneOf(['up', 'down', 'left', 'right']),\n component: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.any,\n stackChildren: PropTypes.bool\n };\n /**\n * @hidden\n */\n\n Push.defaultProps = {\n appear: false,\n enter: true,\n exit: true,\n transitionEnterDuration: 300,\n transitionExitDuration: 300,\n direction: 'right',\n stackChildren: false\n };\n return Push;\n}(React.Component);\n\nexport { Push };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation'; // tslint:enable:max-line-length\n\nvar Slide =\n/** @class */\nfunction (_super) {\n __extends(Slide, _super);\n\n function Slide() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n\n\n Slide.prototype.render = function () {\n var _a = this.props,\n direction = _a.direction,\n children = _a.children,\n other = __rest(_a, [\"direction\", \"children\"]);\n\n var animationProps = {\n transitionName: \"slide-\" + direction\n };\n return React.createElement(Animation, __assign({}, animationProps, other), children);\n };\n /**\n * @hidden\n */\n\n\n Slide.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n childFactory: PropTypes.any,\n className: PropTypes.string,\n direction: PropTypes.oneOf(['up', 'down', 'left', 'right']),\n component: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.any\n };\n /**\n * @hidden\n */\n\n Slide.defaultProps = {\n appear: false,\n enter: true,\n exit: true,\n transitionEnterDuration: 300,\n transitionExitDuration: 300,\n direction: 'down'\n };\n return Slide;\n}(React.Component);\n\nexport { Slide };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation';\nvar EXITING_ANIMATION_STYLE = {\n position: 'absolute',\n top: '0',\n left: '0'\n}; // tslint:enable:max-line-length\n\nvar Zoom =\n/** @class */\nfunction (_super) {\n __extends(Zoom, _super);\n\n function Zoom() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n\n\n Zoom.prototype.render = function () {\n var _a = this.props,\n children = _a.children,\n direction = _a.direction,\n other = __rest(_a, [\"children\", \"direction\"]);\n\n return React.createElement(Animation, __assign({}, other, {\n transitionName: \"zoom-\" + direction,\n animationExitingStyle: this.props.stackChildren ? EXITING_ANIMATION_STYLE : undefined\n }), children);\n };\n /**\n * @hidden\n */\n\n\n Zoom.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n childFactory: PropTypes.any,\n className: PropTypes.string,\n direction: PropTypes.oneOf(['in', 'out']),\n component: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.any,\n stackChildren: PropTypes.bool\n };\n /**\n * @hidden\n */\n\n Zoom.defaultProps = {\n appear: false,\n enter: true,\n exit: true,\n transitionEnterDuration: 300,\n transitionExitDuration: 300,\n direction: 'out',\n stackChildren: false\n };\n return Zoom;\n}(React.Component);\n\nexport { Zoom };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\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';\n\nvar Reveal =\n/** @class */\nfunction (_super) {\n __extends(Reveal, _super);\n\n function Reveal() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n\n\n _this.state = {\n maxHeight: undefined,\n maxWidth: undefined\n };\n\n _this.componentWillEnter = function (event) {\n var onEnter = _this.props.onEnter;\n\n _this.updateContainerDimensions(event.animatedElement, function () {\n if (onEnter) {\n onEnter.call(undefined, event);\n }\n });\n };\n\n _this.componentIsEntering = function (event) {\n var onEntering = _this.props.onEntering;\n\n _this.updateContainerDimensions(event.animatedElement, function () {\n if (onEntering) {\n onEntering.call(undefined, event);\n }\n });\n };\n\n _this.componentWillExit = function (event) {\n var onExit = _this.props.onExit;\n\n _this.updateContainerDimensions(event.animatedElement, function () {\n if (onExit) {\n onExit.call(undefined, event);\n }\n });\n };\n\n _this.updateContainerDimensions = function (node, done) {\n if (done === void 0) {\n done = noop;\n }\n\n var content = node.firstChild;\n\n if (content) {\n var newHeight = util.outerHeight(content);\n var newWidth = util.outerWidth(content);\n\n _this.setState({\n maxHeight: newHeight,\n maxWidth: newWidth\n }, done);\n }\n };\n\n return _this;\n }\n /**\n * @hidden\n */\n\n\n Reveal.prototype.render = function () {\n var _a = this.props,\n direction = _a.direction,\n children = _a.children,\n childFactory = _a.childFactory,\n other = __rest(_a, [\"direction\", \"children\", \"childFactory\"]);\n\n var _b = this.state,\n maxHeight = _b.maxHeight,\n maxWidth = _b.maxWidth;\n var maxOffset;\n\n if (direction === 'vertical') {\n maxOffset = {\n maxHeight: maxHeight ? maxHeight + \"px\" : null\n };\n } else {\n maxOffset = {\n maxWidth: maxWidth ? maxWidth + \"px\" : null\n };\n }\n\n var animationEnteringStyle = {\n maxHeight: maxOffset.maxHeight,\n maxWidth: maxOffset.maxWidth\n };\n\n var factory = function factory(child) {\n if (!child.props.in) {\n return React.cloneElement(child, __assign({}, child.props, {\n style: __assign({}, child.props.style, {\n maxHeight: maxOffset.maxHeight,\n maxWidth: maxOffset.maxWidth\n })\n }));\n }\n\n return child;\n };\n\n return React.createElement(Animation, __assign({}, other, {\n childFactory: childFactory ? childFactory : factory,\n onEnter: this.componentWillEnter,\n onEntering: this.componentIsEntering,\n onExit: this.componentWillExit,\n animationEnteringStyle: animationEnteringStyle,\n transitionName: \"reveal-\" + direction\n }), children);\n };\n /**\n * @hidden\n */\n\n\n Reveal.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n childFactory: PropTypes.any,\n className: PropTypes.string,\n direction: PropTypes.oneOf(['horizontal', 'vertical']),\n component: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.any\n };\n /**\n * @hidden\n */\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);\n\nexport { Reveal };","/**\n * @hidden\n */\nexport var classNames = function classNames() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return args.filter(function (arg) {\n return arg !== true && !!arg;\n }).map(function (arg) {\n return Array.isArray(arg) ? classNames.apply(void 0, arg) : typeof arg === 'object' ? Object.keys(arg).map(function (key, idx) {\n return arg[idx] || arg[key] && key || null;\n }).filter(function (el) {\n return el !== null;\n }).join(' ') : arg;\n }).filter(function (arg) {\n return !!arg;\n }).join(' ');\n};","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from './classNames';\n/**\n * @hidden\n */\n\nvar FloatingLabel =\n/** @class */\nfunction (_super) {\n __extends(FloatingLabel, _super);\n\n function FloatingLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.state = {\n focused: false\n };\n\n _this.handleFocus = function (_) {\n _this.setState({\n focused: true\n });\n };\n\n _this.handleBlur = function (_) {\n _this.setState({\n focused: false\n });\n };\n\n return _this;\n }\n\n FloatingLabel.prototype.render = function () {\n var _a = this.props,\n label = _a.label,\n id = _a.id,\n className = _a.className,\n value = _a.value,\n placeholder = _a.placeholder,\n valid = _a.valid,\n style = _a.style;\n var childClassNames = classNames({\n 'k-textbox-container': true,\n 'k-state-focused': this.state.focused,\n 'k-state-empty': !(value || placeholder),\n 'k-state-invalid': !valid && valid !== undefined,\n 'k-rtl': this.props.dir === 'rtl'\n }, className);\n return React.createElement(\"span\", {\n className: childClassNames,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n style: style,\n dir: this.props.dir\n }, this.props.children, label ? id ? React.createElement(\"label\", {\n htmlFor: id,\n className: \"k-label\"\n }, label) : React.createElement(\"span\", {\n className: \"k-label\"\n }, label) : null);\n };\n\n FloatingLabel.propTypes = {\n label: PropTypes.string,\n id: PropTypes.string,\n value: PropTypes.string,\n placeholder: PropTypes.string,\n valid: PropTypes.bool\n };\n return FloatingLabel;\n}(React.Component);\n\nexport default FloatingLabel;","/**\n * @hidden\n */\nvar isServerRendering = function isServerRendering() {\n return typeof window === 'undefined';\n};\n\nexport { isServerRendering };","var proxy = function proxy(a, b) {\n return function (e) {\n return b(a(e));\n };\n};\n\nvar bind = function bind(el, event, callback) {\n return el.addEventListener && el.addEventListener(event, callback);\n};\n\nvar unbind = function unbind(el, event, callback) {\n return el && el.removeEventListener && el.removeEventListener(event, callback);\n};\n\nvar noop = function noop() {\n /* empty */\n};\n\nvar preventDefault = function preventDefault(e) {\n return e.preventDefault();\n};\n\nvar touchRegExp = /touch/; // 300ms is the usual mouse interval;\n// // However, an underpowered mobile device under a heavy load may queue mouse events for a longer period.\n\nvar IGNORE_MOUSE_TIMEOUT = 2000;\n\nfunction normalizeEvent(e) {\n if (e.type.match(touchRegExp)) {\n return {\n pageX: e.changedTouches[0].pageX,\n pageY: e.changedTouches[0].pageY,\n clientX: e.changedTouches[0].clientX,\n clientY: e.changedTouches[0].clientY,\n type: e.type,\n originalEvent: e,\n isTouch: true\n };\n }\n\n return {\n pageX: e.pageX,\n pageY: e.pageY,\n clientX: e.clientX,\n clientY: e.clientY,\n offsetX: e.offsetX,\n offsetY: e.offsetY,\n type: e.type,\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey,\n altKey: e.altKey,\n originalEvent: e\n };\n}\n\nexport var Draggable = function Draggable(ref) {\n var this$1 = this;\n var press = ref.press;\n if (press === void 0) press = noop;\n var drag = ref.drag;\n if (drag === void 0) drag = noop;\n var release = ref.release;\n if (release === void 0) release = noop;\n var mouseOnly = ref.mouseOnly;\n if (mouseOnly === void 0) mouseOnly = false;\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._ignoreMouse = false;\n this._mouseOnly = mouseOnly;\n this._touchAction;\n\n this._touchstart = function (e) {\n if (e.touches.length === 1) {\n this$1._pressHandler(e);\n }\n };\n\n this._touchmove = function (e) {\n if (e.touches.length === 1) {\n this$1._dragHandler(e);\n }\n };\n\n this._touchend = function (e) {\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 if (e.touches.length === 0 && e.changedTouches.length === 1) {\n this$1._releaseHandler(e);\n\n this$1._ignoreMouse = true;\n setTimeout(this$1._restoreMouse, IGNORE_MOUSE_TIMEOUT);\n }\n };\n\n this._restoreMouse = function () {\n this$1._ignoreMouse = false;\n };\n\n this._mousedown = function (e) {\n var which = e.which;\n\n if (which && which > 1 || this$1._ignoreMouse) {\n return;\n }\n\n bind(document, \"mousemove\", this$1._mousemove);\n bind(document, \"mouseup\", this$1._mouseup);\n\n this$1._pressHandler(e);\n };\n\n this._mousemove = function (e) {\n this$1._dragHandler(e);\n };\n\n this._mouseup = function (e) {\n unbind(document, \"mousemove\", this$1._mousemove);\n unbind(document, \"mouseup\", this$1._mouseup);\n\n this$1._releaseHandler(e);\n };\n\n this._pointerdown = function (e) {\n if (e.isPrimary && e.button === 0) {\n bind(document, \"pointermove\", this$1._pointermove);\n bind(document, \"pointerup\", this$1._pointerup);\n bind(document, \"pointercancel\", this$1._pointerup);\n bind(document, \"contextmenu\", preventDefault);\n this$1._touchAction = e.target.style.touchAction;\n e.target.style.touchAction = \"none\";\n\n this$1._pressHandler(e);\n }\n };\n\n this._pointermove = function (e) {\n if (e.isPrimary) {\n this$1._dragHandler(e);\n }\n };\n\n this._pointerup = function (e) {\n if (e.isPrimary) {\n unbind(document, \"pointermove\", this$1._pointermove);\n unbind(document, \"pointerup\", this$1._pointerup);\n unbind(document, \"pointercancel\", this$1._pointerup);\n unbind(document, \"contextmenu\", preventDefault);\n e.target.style.touchAction = this$1._touchAction;\n\n this$1._releaseHandler(e);\n }\n };\n};\n\nDraggable.supportPointerEvent = function supportPointerEvent() {\n return typeof window !== 'undefined' && window.PointerEvent;\n};\n\nDraggable.prototype.bindTo = function bindTo(element) {\n if (element === this._element) {\n return;\n }\n\n if (this._element) {\n this._unbindFromCurrent();\n }\n\n this._element = element;\n\n this._bindToCurrent();\n};\n\nDraggable.prototype._bindToCurrent = function _bindToCurrent() {\n var element = this._element;\n\n if (this._usePointers()) {\n bind(element, \"pointerdown\", this._pointerdown);\n return;\n }\n\n bind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n bind(element, \"touchstart\", this._touchstart);\n bind(element, \"touchmove\", this._touchmove);\n bind(element, \"touchend\", this._touchend);\n }\n};\n\nDraggable.prototype._unbindFromCurrent = function _unbindFromCurrent() {\n var element = this._element;\n\n if (this._usePointers()) {\n unbind(element, \"pointerdown\", this._pointerdown);\n unbind(document, \"pointermove\", this._pointermove);\n unbind(document, \"pointerup\", this._pointerup);\n unbind(document, \"contextmenu\", preventDefault);\n unbind(document, \"pointercancel\", this._pointerup);\n return;\n }\n\n unbind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n unbind(element, \"touchstart\", this._touchstart);\n unbind(element, \"touchmove\", this._touchmove);\n unbind(element, \"touchend\", this._touchend);\n }\n};\n\nDraggable.prototype._usePointers = function _usePointers() {\n return !this._mouseOnly && Draggable.supportPointerEvent();\n};\n\nDraggable.prototype.destroy = function destroy() {\n this._unbindFromCurrent();\n\n this._element = null;\n}; // Re-export as \"default\" field to address a bug\n// where the ES Module is imported by CommonJS code.\n//\n// See https://github.com/telerik/kendo-angular/issues/1314\n\n\nDraggable.default = Draggable; // Rollup won't output exports['default'] otherwise\n\nexport default Draggable;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport KendoDraggable from '@telerik/kendo-draggable';\n/**\n * @hidden\n */\n\nvar Draggable =\n/** @class */\nfunction (_super) {\n __extends(Draggable, _super);\n\n function Draggable() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n\n\n _this.element = null;\n _this.draggable = new KendoDraggable({\n press: function press(event) {\n if (_this.element && _this.props.onPress) {\n _this.props.onPress.call(undefined, {\n target: _this,\n event: event,\n element: _this.element\n });\n }\n },\n drag: function drag(event) {\n if (_this.element && _this.props.onDrag) {\n _this.props.onDrag.call(undefined, {\n target: _this,\n event: event,\n element: _this.element\n });\n }\n },\n release: function release(event) {\n if (_this.element && _this.props.onRelease) {\n _this.props.onRelease.call(undefined, {\n target: _this,\n event: event\n });\n }\n }\n });\n\n _this.assingRef = function (element) {\n _this.element = element;\n };\n\n return _this;\n }\n\n Draggable.prototype.componentDidMount = function () {\n if (this.element) {\n this.draggable.bindTo(this.element);\n }\n };\n\n Draggable.prototype.componentWillUnmount = function () {\n this.draggable.destroy();\n };\n\n Draggable.prototype.render = function () {\n return React.cloneElement(React.Children.only(this.props.children), {\n ref: this.assingRef\n });\n };\n\n Draggable.propTypes = {\n children: PropTypes.element.isRequired\n };\n return Draggable;\n}(React.Component);\n\nexport { Draggable };","import { FIELD_REGEX } from './constants';\nvar getterCache = {};\n\ngetterCache.undefined = function () {\n return undefined;\n};\n/**\n * @hidden\n */\n\n\nexport 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, fieldName) {\n fields.push(index !== undefined ? index : indexAccessor || fieldName);\n });\n\n getterCache[field] = function (obj) {\n var result = obj;\n\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}","import { FIELD_REGEX } from './constants';\nvar setterCache = {};\n\nsetterCache.undefined = function (obj) {\n return obj;\n};\n/**\n * @hidden\n */\n\n\nexport function setter(field) {\n if (setterCache[field]) {\n return setterCache[field];\n }\n\n var fields = [];\n field.replace(FIELD_REGEX, function (_match, index, indexAccessor, fieldName) {\n fields.push(index !== undefined ? index : indexAccessor || fieldName);\n });\n\n setterCache[field] = function (obj, value) {\n var root = obj;\n var depth = fields.length - 1;\n\n for (var idx = 0; idx < depth && root; idx++) {\n root = root[fields[idx]] = root[fields[idx]] || {};\n }\n\n root[fields[depth]] = value;\n };\n\n return setterCache[field];\n}","import { parents, siblingContainer } from '@progress/kendo-popup-common';\n/**\n * @hidden\n */\n\nexport var eitherRect = function eitherRect(rect, offset) {\n if (!rect) {\n return {\n height: 0,\n left: offset.left,\n top: offset.top,\n width: 0\n };\n }\n\n return rect;\n};\n/**\n * @hidden\n */\n\nexport var replaceOffset = function replaceOffset(rect, offset) {\n if (!offset) {\n return rect;\n }\n\n var result = {\n height: rect.height,\n left: offset.left,\n top: offset.top,\n width: rect.width\n };\n return result;\n};\n/**\n * @hidden\n */\n\nexport var removeStackingOffset = function removeStackingOffset(rect, stackingOffset) {\n if (!stackingOffset) {\n return rect;\n }\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 return result;\n};\n/**\n * @hidden\n */\n\nexport var isDifferentOffset = function isDifferentOffset(oldOffset, newOffset) {\n var oldLeft = oldOffset.left,\n oldTop = oldOffset.top;\n var newLeft = newOffset.left,\n newTop = newOffset.top;\n return Math.abs(oldLeft - newLeft) >= 1 || Math.abs(oldTop - newTop) >= 1;\n};\n/**\n * @hidden\n */\n\nexport var isDocumentAvailable = function isDocumentAvailable() {\n return typeof document !== 'undefined' && !!document.body;\n};\n/**\n * @hidden\n */\n\nexport var isWindowAvailable = function isWindowAvailable() {\n return typeof window !== 'undefined';\n};\n/**\n * @hidden\n */\n\nexport var hasBoundingRect = function hasBoundingRect(elem) {\n return !!elem.getBoundingClientRect;\n};\n/**\n * @hidden\n */\n\nexport var OVERFLOW_REGEXP = /auto|scroll/;\n/**\n * @hidden\n */\n\nvar overflowStyle = function overflowStyle(element) {\n var styles = window.getComputedStyle(element);\n return \"\" + styles.overflow + styles.overflowX + styles.overflowY;\n};\n/**\n * @hidden\n */\n\n\nexport var scrollableParents = function scrollableParents(element) {\n var parentElements = [];\n\n if (!isDocumentAvailable() || !isWindowAvailable()) {\n return parentElements;\n }\n\n var parent = element.parentElement;\n\n while (parent) {\n if (OVERFLOW_REGEXP.test(overflowStyle(parent))) {\n parentElements.push(parent);\n }\n\n parent = parent.parentElement;\n }\n\n parentElements.push(window);\n return parentElements;\n};\n/**\n * @hidden\n */\n\nexport var FRAME_DURATION = 1000 / 60; // 1000ms divided by 60fps\n\n/**\n * @hidden\n */\n\nexport var hasRelativeStackingContext = function hasRelativeStackingContext() {\n if (!isDocumentAvailable()) {\n return false;\n }\n\n var top = 10;\n var parent = document.createElement('div');\n parent.style.transform = 'matrix(10, 0, 0, 10, 0, 0)';\n parent.innerHTML = \"
child
\";\n document.body.appendChild(parent);\n var isDifferent = parent.children[0].getBoundingClientRect().top !== top;\n document.body.removeChild(parent);\n return isDifferent;\n};\n/**\n * @hidden\n */\n\nexport var HAS_RELATIVE_STACKING_CONTEXT = hasRelativeStackingContext();\n/**\n * @hidden\n */\n\nexport var zIndex = function zIndex(anchor, container) {\n if (!anchor || !isDocumentAvailable() || !isWindowAvailable()) {\n return null;\n }\n\n var sibling = siblingContainer(anchor, container);\n\n if (!sibling) {\n return null;\n }\n\n var result = [anchor].concat(parents(anchor, sibling)).reduce(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 }, 0);\n return result ? result + 1 : null;\n};\n/**\n * @hidden\n */\n\nexport var CollisionType = {\n fit: 'fit',\n flip: 'flip'\n};\n/**\n * @hidden\n */\n\nexport var AlignPoint = {\n left: 'left',\n center: 'center',\n right: 'right',\n bottom: 'bottom',\n top: 'top'\n};\n/**\n * @hidden\n */\n\nexport var throttle = function throttle(func, wait, options) {\n if (options === void 0) {\n options = {};\n }\n\n var timeout, context, args, result;\n var previous = 0;\n options = options || {};\n\n var later = function later() {\n previous = options.leading === false ? 0 : new Date().getTime();\n timeout = null;\n result = func.apply(context, args);\n\n if (!timeout) {\n context = args = null;\n }\n };\n\n var throttled = function throttled() {\n var now = new Date().getTime();\n\n if (!previous && options.leading === false) {\n previous = now;\n }\n\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n\n previous = now;\n result = func.apply(context, args);\n\n if (!timeout) {\n context = args = null;\n }\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n\n return result;\n };\n\n return throttled;\n};","import { eitherRect, removeStackingOffset } from '../util';\n/**\n * @hidden\n */\n\nvar AlignService =\n/** @class */\nfunction () {\n function AlignService(_dom) {\n this._dom = _dom;\n }\n\n AlignService.prototype.alignElement = function (settings) {\n var anchor = settings.anchor,\n element = settings.element,\n anchorAlign = settings.anchorAlign,\n elementAlign = settings.elementAlign,\n offset = settings.offset;\n var fixedMode = !this._dom.hasOffsetParent(element);\n var anchorRect = fixedMode ? this.absoluteRect(anchor, element, offset) : this.relativeRect(anchor, element, offset);\n return this._dom.align({\n anchorAlign: anchorAlign,\n anchorRect: anchorRect,\n elementAlign: elementAlign,\n elementRect: this._dom.offset(element)\n });\n };\n\n AlignService.prototype.absoluteRect = function (anchor, element, offset) {\n var dom = this._dom;\n var rect = eitherRect(dom.offset(anchor), offset);\n var stackingOffset = dom.stackingElementOffset(element);\n var removedOffset = removeStackingOffset(rect, stackingOffset);\n var stackingScroll = dom.stackingElementScroll(element);\n var withScroll = dom.addScroll(removedOffset, stackingScroll);\n var scrollPosition = this.elementScrollPosition(anchor, element);\n var result = dom.removeScroll(withScroll, scrollPosition);\n result.left += window.scrollX || window.pageXOffset;\n result.top += window.scrollY || window.pageYOffset;\n return result;\n };\n\n AlignService.prototype.elementScrollPosition = function (anchor, element) {\n return anchor ? {\n x: 0,\n y: 0\n } : this._dom.scrollPosition(element);\n };\n\n AlignService.prototype.relativeRect = function (anchor, element, offset) {\n return eitherRect(this._dom.position(anchor, element), offset);\n };\n\n return AlignService;\n}();\n\nexport { AlignService };","import { align, applyLocationOffset, boundingOffset, getWindowViewPort, isBodyOffset, offset, positionWithScroll, restrictToView, addScroll, removeScroll, scrollPosition, siblingContainer } from '@progress/kendo-popup-common';\nimport { isDocumentAvailable, isWindowAvailable, HAS_RELATIVE_STACKING_CONTEXT, scrollableParents, zIndex } from '../util';\n/**\n * @hidden\n */\n\nvar DOMService =\n/** @class */\nfunction () {\n function DOMService() {}\n\n DOMService.prototype.addOffset = function (current, addition) {\n return {\n left: current.left + addition.left,\n top: current.top + addition.top\n };\n };\n\n DOMService.prototype.align = function (settings) {\n return align(settings);\n };\n\n DOMService.prototype.boundingOffset = function (el) {\n return boundingOffset(el);\n };\n\n DOMService.prototype.getWindow = function () {\n return isWindowAvailable() ? window : null;\n };\n\n DOMService.prototype.isBodyOffset = function (el) {\n return isBodyOffset(el);\n };\n\n DOMService.prototype.hasOffsetParent = function (el) {\n if (!el) {\n return false;\n }\n\n var offsetParentEl = el.offsetParent;\n return offsetParentEl && !(offsetParentEl.nodeName === 'BODY' && window.getComputedStyle(offsetParentEl).position === 'static');\n };\n\n DOMService.prototype.offset = function (el) {\n if (!el) {\n return null;\n }\n\n return offset(el);\n };\n\n DOMService.prototype.staticOffset = function (element) {\n if (!element) {\n return null;\n }\n\n var _a = element.style,\n left = _a.left,\n top = _a.top;\n element.style.left = '0px';\n element.style.top = '0px';\n var currentOffset = offset(element);\n element.style.left = left;\n element.style.top = top;\n return currentOffset;\n };\n\n DOMService.prototype.position = function (element, popup) {\n if (!element || !popup) {\n return null;\n }\n\n var parentSibling = siblingContainer(element, popup);\n return positionWithScroll(element, parentSibling);\n };\n\n DOMService.prototype.relativeOffset = function (el, currentLocation) {\n return applyLocationOffset(this.offset(el), currentLocation, this.isBodyOffset(el));\n };\n\n DOMService.prototype.addScroll = function (rect, scroll) {\n return addScroll(rect, scroll);\n };\n\n DOMService.prototype.removeScroll = function (rect, scroll) {\n return removeScroll(rect, scroll);\n };\n\n DOMService.prototype.restrictToView = function (settings) {\n return restrictToView(settings);\n };\n\n DOMService.prototype.scrollPosition = function (el) {\n return scrollPosition(el);\n };\n\n DOMService.prototype.scrollableParents = function (el) {\n return scrollableParents(el);\n };\n\n DOMService.prototype.stackingElementOffset = function (el) {\n var relativeContextElement = this.getRelativeContextElement(el);\n\n if (!relativeContextElement) {\n return null;\n }\n\n return offset(relativeContextElement);\n };\n\n DOMService.prototype.stackingElementScroll = function (el) {\n var relativeContextElement = this.getRelativeContextElement(el);\n\n if (!relativeContextElement) {\n return {\n x: 0,\n y: 0\n };\n }\n\n return {\n x: relativeContextElement.scrollLeft,\n y: relativeContextElement.scrollTop\n };\n };\n\n DOMService.prototype.stackingElementViewPort = function (el) {\n var relativeContextElement = this.getRelativeContextElement(el);\n\n if (!relativeContextElement) {\n return null;\n }\n\n return {\n height: relativeContextElement.scrollHeight,\n width: relativeContextElement.scrollWidth\n };\n };\n\n DOMService.prototype.getRelativeContextElement = function (el) {\n if (!el || !HAS_RELATIVE_STACKING_CONTEXT) {\n return null;\n }\n\n var parent = el.parentElement;\n\n while (parent) {\n if (window.getComputedStyle(parent).transform !== 'none') {\n return parent;\n }\n\n parent = parent.parentElement;\n }\n\n return null;\n };\n\n DOMService.prototype.useRelativePosition = function (el) {\n return !!this.getRelativeContextElement(el);\n };\n\n DOMService.prototype.windowViewPort = function (el) {\n return getWindowViewPort(el);\n };\n\n DOMService.prototype.zIndex = function (anchor, container) {\n return zIndex(anchor, container);\n };\n\n DOMService.prototype.zoomLevel = function () {\n if (!isDocumentAvailable() || !isWindowAvailable()) {\n return 1;\n }\n\n return parseFloat((document.documentElement.clientWidth / window.innerWidth).toFixed(2));\n };\n\n DOMService.prototype.isZoomed = function () {\n return this.zoomLevel() > 1;\n };\n\n return DOMService;\n}();\n\nexport { DOMService };","import { eitherRect, replaceOffset } from '../util';\n/**\n * @hidden\n */\n\nvar PositionService =\n/** @class */\nfunction () {\n function PositionService(_dom) {\n this._dom = _dom;\n }\n\n PositionService.prototype.positionElement = function (settings) {\n var anchor = settings.anchor,\n currentLocation = settings.currentLocation,\n element = settings.element,\n anchorAlign = settings.anchorAlign,\n elementAlign = settings.elementAlign,\n collisions = settings.collisions;\n var dom = this._dom;\n var viewPort = settings.viewPort || dom.stackingElementViewPort(element) || dom.windowViewPort(element);\n var anchorRect = eitherRect(dom.offset(anchor), currentLocation);\n var initialElementRect = replaceOffset(dom.staticOffset(element), currentLocation);\n var elementRect = this.elementRect(element, initialElementRect);\n var result = dom.restrictToView({\n anchorAlign: anchorAlign,\n anchorRect: anchorRect,\n collisions: collisions,\n elementAlign: elementAlign,\n elementRect: elementRect,\n viewPort: viewPort\n });\n return {\n flipped: result.flipped,\n offset: dom.addOffset(initialElementRect, result.offset)\n };\n };\n\n PositionService.prototype.elementRect = function (element, rect) {\n return this._dom.removeScroll(rect, this._dom.scrollPosition(element));\n };\n\n return PositionService;\n}();\n\nexport { PositionService };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as PropTypes from 'prop-types';\nimport * as ReactDOMServer from 'react-dom/server';\nimport { Slide } from '@progress/kendo-react-animation';\nimport { classNames } from '@progress/kendo-react-common';\nimport { CollisionType, AlignPoint, throttle, FRAME_DURATION, isWindowAvailable } from './util';\nimport { AlignService } from './services/alignService';\nimport { DOMService } from './services/domService';\nimport { PositionService } from './services/positionService';\nvar DEFAULT_OFFSET = {\n left: -1000,\n top: 0\n};\nvar ANIMATION_CONTAINER = 'k-animation-container';\nvar ANIMATION_CONTAINER_SHOWN = 'k-animation-container-shown';\nvar K_POPUP = 'k-popup';\n\nvar getHtmlElement = function getHtmlElement(source) {\n return ReactDOM.findDOMNode(source);\n};\n\nvar Popup =\n/** @class */\nfunction (_super) {\n __extends(Popup, _super);\n\n function Popup(props) {\n var _this = _super.call(this, props) || this;\n\n _this._exitingAnimation = false;\n _this._prevShow = false;\n\n _this.onOpened = function () {\n var element = getHtmlElement(_this);\n\n if (_this.props.show) {\n element.classList.add(ANIMATION_CONTAINER_SHOWN);\n }\n\n _this.attachRepositionHandlers(element);\n\n if (_this.props.open) {\n _this.props.open.call(undefined, {\n target: _this\n });\n }\n };\n\n _this.onClosing = function () {\n if (!_this.props.show) {\n var element = getHtmlElement(_this);\n element.classList.remove(ANIMATION_CONTAINER_SHOWN);\n }\n\n _this.detachRepositionHandlers();\n };\n\n _this.onClosed = function () {\n if (_this._exitingAnimation) {\n _this._exitingAnimation = false;\n\n _this.forceUpdate();\n }\n\n if (_this.props.close) {\n _this.props.close.call(undefined, {\n target: _this\n });\n }\n };\n\n _this.position = function (settings, element, anchorElement) {\n var anchorAlign = settings.anchorAlign,\n popupAlign = settings.popupAlign,\n collision = settings.collision,\n offset = settings.offset;\n\n var alignedOffset = _this._alignService.alignElement({\n anchor: anchorElement,\n element: element,\n elementAlign: popupAlign,\n anchorAlign: anchorAlign,\n offset: offset\n });\n\n var result = _this._positionService.positionElement({\n anchor: anchorElement,\n anchorAlign: anchorAlign,\n collisions: collision,\n element: element,\n currentLocation: alignedOffset,\n elementAlign: popupAlign\n });\n\n return result;\n };\n\n _this._flipped = false;\n _this._offset = _this.props.offset;\n _this._prevShow = props.show;\n _this._domService = new DOMService();\n _this._alignService = new AlignService(_this._domService);\n _this._positionService = new PositionService(_this._domService);\n _this.onOpened = _this.onOpened.bind(_this);\n _this.onClosing = _this.onClosing.bind(_this);\n _this.reposition = throttle(_this.reposition.bind(_this), FRAME_DURATION);\n return _this;\n }\n /**\n * @hidden\n */\n\n\n Popup.prototype.componentDidUpdate = function () {\n this._prevShow = this.props.show;\n };\n /**\n * @hidden\n */\n\n\n Popup.prototype.componentWillUnmount = function () {\n this.detachRepositionHandlers();\n };\n /**\n * @hidden\n */\n\n\n Popup.prototype.render = function () {\n var _a = this.props,\n children = _a.children,\n className = _a.className,\n popupClass = _a.popupClass,\n show = _a.show,\n id = _a.id,\n _b = _a.appendTo,\n appendTo = _b === void 0 ? isWindowAvailable() ? document.body : undefined : _b;\n\n if (show) {\n var newPosition = this.calculatePosition(this.props, appendTo);\n this._offset = newPosition.offset;\n this._flipped = !!newPosition.flipped;\n }\n\n var direction = this._flipped && show ? 'up' : 'down';\n var _c = this.transitionDuration,\n transitionEnterDuration = _c.transitionEnterDuration,\n transitionExitDuration = _c.transitionExitDuration;\n var style = Object.assign({}, {\n position: 'absolute'\n }, this.props.style || {}, __assign({}, this._offset));\n this._exitingAnimation = this._exitingAnimation || this._prevShow && !show;\n\n if ((show || this._exitingAnimation) && appendTo) {\n var popup = React.createElement(Slide, {\n componentChildClassName: classNames(popupClass, K_POPUP),\n className: classNames(className),\n id: id,\n onEntered: this.onOpened,\n onExiting: this.onClosing,\n onExited: this.onClosed,\n direction: direction,\n style: style,\n transitionEnterDuration: transitionEnterDuration,\n transitionExitDuration: transitionExitDuration,\n appear: true\n }, show ? children : null);\n return ReactDOM.createPortal(popup, appendTo);\n }\n\n return null;\n };\n\n Object.defineProperty(Popup.prototype, \"transitionDuration\", {\n get: function get() {\n var animate = this.props.animate;\n var transitionEnterDuration = 0;\n var transitionExitDuration = 0;\n\n if (animate) {\n if (animate === true) {\n // Inherit the default duration of the Animation component.\n transitionEnterDuration = transitionExitDuration = undefined;\n } else {\n transitionEnterDuration = animate.openDuration;\n transitionExitDuration = animate.closeDuration;\n }\n }\n\n return {\n transitionEnterDuration: transitionEnterDuration,\n transitionExitDuration: transitionExitDuration\n };\n },\n enumerable: true,\n configurable: true\n });\n\n Popup.prototype.calculatePosition = function (props, appendTo) {\n if (!appendTo || !isWindowAvailable()) {\n return {\n flipped: false,\n offset: props.offset\n };\n }\n\n var root = document.createElement('div');\n appendTo.appendChild(root);\n var style = Object.assign({}, props.style || {}, __assign({\n visibility: 'hidden'\n }, DEFAULT_OFFSET));\n var innerClasses = {\n className: classNames(props.popupClass, K_POPUP, 'k-child-animation-container')\n };\n var popup = React.createElement(\"div\", {\n className: classNames(ANIMATION_CONTAINER, ANIMATION_CONTAINER_SHOWN, props.className),\n style: style\n }, React.Children.map(props.children, function (child, index) {\n return React.createElement(\"div\", __assign({\n key: index\n }, innerClasses), child);\n }));\n root.innerHTML = ReactDOMServer.renderToStaticMarkup(popup);\n var newPosition = this.position(props, root.firstChild, props.anchor);\n root.parentNode.removeChild(root);\n return newPosition;\n };\n\n Popup.prototype.attachRepositionHandlers = function (element) {\n var _this = this;\n\n this.detachRepositionHandlers();\n this._scrollableParents = this._domService.scrollableParents(this.props.anchor || element);\n\n this._scrollableParents.map(function (p) {\n return p.addEventListener('scroll', _this.reposition);\n });\n\n window.addEventListener('resize', this.reposition);\n };\n\n Popup.prototype.detachRepositionHandlers = function () {\n var _this = this;\n\n if (this._scrollableParents) {\n this._scrollableParents.map(function (p) {\n return p.removeEventListener('scroll', _this.reposition);\n });\n\n this._scrollableParents = undefined;\n }\n\n window.removeEventListener('resize', this.reposition);\n };\n\n Popup.prototype.reposition = function () {\n this.forceUpdate();\n };\n /**\n * @hidden\n */\n\n\n Popup.propTypes = {\n anchor: function anchor(props) {\n var anchor = props.anchor;\n\n if (anchor && typeof anchor.nodeType !== 'number') {\n return new Error('Invalid prop `anchor` supplied to `Kendo React Popup`. Validation failed.');\n }\n },\n appendTo: function appendTo(props) {\n var element = props.appendTo;\n\n if (element && typeof element.nodeType !== 'number') {\n return new Error('Invalid prop `appendTo` supplied to `Kendo React Popup`. Validation failed.');\n }\n },\n className: PropTypes.string,\n id: PropTypes.string,\n popupClass: PropTypes.string,\n collision: PropTypes.shape({\n horizontal: PropTypes.oneOf([CollisionType.fit, CollisionType.flip]),\n vertical: PropTypes.oneOf([CollisionType.fit, CollisionType.flip])\n }),\n anchorAlign: PropTypes.shape({\n horizontal: PropTypes.oneOf([AlignPoint.left, AlignPoint.center, AlignPoint.right]),\n vertical: PropTypes.oneOf([AlignPoint.top, AlignPoint.center, AlignPoint.bottom])\n }),\n popupAlign: PropTypes.shape({\n horizontal: PropTypes.oneOf([AlignPoint.left, AlignPoint.center, AlignPoint.right]),\n vertical: PropTypes.oneOf([AlignPoint.top, AlignPoint.center, AlignPoint.bottom])\n }),\n offset: PropTypes.shape({\n left: PropTypes.number,\n top: PropTypes.number\n }),\n children: PropTypes.oneOfType([PropTypes.element, PropTypes.node]),\n show: PropTypes.bool,\n animate: PropTypes.oneOfType([PropTypes.bool, PropTypes.shape({\n openDuration: PropTypes.number,\n closeDuration: PropTypes.number\n })])\n };\n /**\n * @hidden\n */\n\n Popup.defaultProps = {\n collision: {\n horizontal: CollisionType.fit,\n vertical: CollisionType.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 };\n return Popup;\n}(React.Component);\n\nexport default Popup;","import Popup from './Popup';\nexport { Popup };","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar _enable_super_gross_mode_that_will_cause_bad_things = false;\nexport var config = {\n Promise: undefined,\n\n set useDeprecatedSynchronousErrorHandling(value) {\n if (value) {\n var error =\n /*@__PURE__*/\n new Error();\n /*@__PURE__*/\n\n console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n } else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n /*@__PURE__*/\n console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n }\n\n};","'use strict';\n\nvar bind = require('./helpers/bind');\n\nvar isBuffer = require('is-buffer');\n/*global toString:true*/\n// utils is a library of generic helper functions non-specific to axios\n\n\nvar toString = Object.prototype.toString;\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 */\n\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\n\n\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\n\n\nfunction isFormData(val) {\n return typeof FormData !== 'undefined' && val instanceof FormData;\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 */\n\n\nfunction isArrayBufferView(val) {\n var result;\n\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n result = ArrayBuffer.isView(val);\n } else {\n result = val && val.buffer && val.buffer instanceof ArrayBuffer;\n }\n\n return result;\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 */\n\n\nfunction isString(val) {\n return typeof val === 'string';\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 */\n\n\nfunction isNumber(val) {\n return typeof val === 'number';\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 */\n\n\nfunction isUndefined(val) {\n return typeof val === 'undefined';\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 */\n\n\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\n\n\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\n\n\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\n\n\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\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 */\n\n\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\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 */\n\n\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\n\n\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof 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 */\n\n\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\n\n\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || navigator.product === 'NativeScript' || navigator.product === 'NS')) {\n return false;\n }\n\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\n\n\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n } // Force an array if not already something iterable\n\n\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 * 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 */\n\n\nfunction merge()\n/* obj1, obj2, obj3, ... */\n{\n var result = {};\n\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\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\n return result;\n}\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\n\n\nfunction deepMerge()\n/* obj1, obj2, obj3, ... */\n{\n var result = {};\n\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (typeof val === 'object') {\n result[key] = deepMerge({}, val);\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\n return result;\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 */\n\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\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 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 deepMerge: deepMerge,\n extend: extend,\n trim: trim\n};","/**\n * @hidden\n */\nexport var classNames = function classNames() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return args.filter(function (arg) {\n return arg !== true && !!arg;\n }).map(function (arg) {\n return Array.isArray(arg) ? classNames.apply(void 0, arg) : typeof arg === 'object' ? Object.keys(arg).map(function (key, idx) {\n return arg[idx] || arg[key] && key || null;\n }).filter(function (el) {\n return el !== null;\n }).join(' ') : arg;\n }).filter(function (arg) {\n return !!arg;\n }).join(' ');\n};","/* tslint:disable:no-bitwise */\n\n/**\n * @hidden\n */\nvar guid = function guid() {\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);\n }\n\n return id;\n};\n\nexport { guid };","/**\n * @hidden\n */\nvar 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};\nexport { Keys };","/**\n * @hidden\n */\nvar noop = function noop() {};\n\nexport { noop };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from './classNames';\n/**\n * @hidden\n */\n\nvar FloatingLabel =\n/** @class */\nfunction (_super) {\n __extends(FloatingLabel, _super);\n\n function FloatingLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.state = {\n focused: false\n };\n\n _this.handleFocus = function (_) {\n _this.setState({\n focused: true\n });\n };\n\n _this.handleBlur = function (_) {\n _this.setState({\n focused: false\n });\n };\n\n return _this;\n }\n\n FloatingLabel.prototype.render = function () {\n var _a = this.props,\n label = _a.label,\n id = _a.id,\n className = _a.className,\n value = _a.value,\n placeholder = _a.placeholder,\n valid = _a.valid,\n style = _a.style;\n var childClassNames = classNames({\n 'k-textbox-container': true,\n 'k-state-focused': this.state.focused,\n 'k-state-empty': !(value || placeholder),\n 'k-state-invalid': !valid && valid !== undefined,\n 'k-rtl': this.props.dir === 'rtl'\n }, className);\n return React.createElement(\"span\", {\n className: childClassNames,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n style: style,\n dir: this.props.dir\n }, this.props.children, label ? id ? React.createElement(\"label\", {\n htmlFor: id,\n className: \"k-label\"\n }, label) : React.createElement(\"span\", {\n className: \"k-label\"\n }, label) : null);\n };\n\n FloatingLabel.propTypes = {\n label: PropTypes.string,\n id: PropTypes.string,\n value: PropTypes.string,\n placeholder: PropTypes.string,\n valid: PropTypes.bool\n };\n return FloatingLabel;\n}(React.Component);\n\nexport default FloatingLabel;","/**\n * @hidden\n * Dispatches a new event bsed 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 default 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 * @hidden\n */\nvar isServerRendering = function isServerRendering() {\n return typeof window === 'undefined';\n};\n\nexport { isServerRendering };","var proxy = function proxy(a, b) {\n return function (e) {\n return b(a(e));\n };\n};\n\nvar bind = function bind(el, event, callback) {\n return el.addEventListener && el.addEventListener(event, callback);\n};\n\nvar unbind = function unbind(el, event, callback) {\n return el && el.removeEventListener && el.removeEventListener(event, callback);\n};\n\nvar noop = function noop() {\n /* empty */\n};\n\nvar preventDefault = function preventDefault(e) {\n return e.preventDefault();\n};\n\nvar touchRegExp = /touch/; // 300ms is the usual mouse interval;\n// // However, an underpowered mobile device under a heavy load may queue mouse events for a longer period.\n\nvar IGNORE_MOUSE_TIMEOUT = 2000;\n\nfunction normalizeEvent(e) {\n if (e.type.match(touchRegExp)) {\n return {\n pageX: e.changedTouches[0].pageX,\n pageY: e.changedTouches[0].pageY,\n clientX: e.changedTouches[0].clientX,\n clientY: e.changedTouches[0].clientY,\n type: e.type,\n originalEvent: e,\n isTouch: true\n };\n }\n\n return {\n pageX: e.pageX,\n pageY: e.pageY,\n clientX: e.clientX,\n clientY: e.clientY,\n offsetX: e.offsetX,\n offsetY: e.offsetY,\n type: e.type,\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey,\n altKey: e.altKey,\n originalEvent: e\n };\n}\n\nexport var Draggable = function Draggable(ref) {\n var this$1 = this;\n var press = ref.press;\n if (press === void 0) press = noop;\n var drag = ref.drag;\n if (drag === void 0) drag = noop;\n var release = ref.release;\n if (release === void 0) release = noop;\n var mouseOnly = ref.mouseOnly;\n if (mouseOnly === void 0) mouseOnly = false;\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._ignoreMouse = false;\n this._mouseOnly = mouseOnly;\n this._touchAction;\n\n this._touchstart = function (e) {\n if (e.touches.length === 1) {\n this$1._pressHandler(e);\n }\n };\n\n this._touchmove = function (e) {\n if (e.touches.length === 1) {\n this$1._dragHandler(e);\n }\n };\n\n this._touchend = function (e) {\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 if (e.touches.length === 0 && e.changedTouches.length === 1) {\n this$1._releaseHandler(e);\n\n this$1._ignoreMouse = true;\n setTimeout(this$1._restoreMouse, IGNORE_MOUSE_TIMEOUT);\n }\n };\n\n this._restoreMouse = function () {\n this$1._ignoreMouse = false;\n };\n\n this._mousedown = function (e) {\n var which = e.which;\n\n if (which && which > 1 || this$1._ignoreMouse) {\n return;\n }\n\n bind(document, \"mousemove\", this$1._mousemove);\n bind(document, \"mouseup\", this$1._mouseup);\n\n this$1._pressHandler(e);\n };\n\n this._mousemove = function (e) {\n this$1._dragHandler(e);\n };\n\n this._mouseup = function (e) {\n unbind(document, \"mousemove\", this$1._mousemove);\n unbind(document, \"mouseup\", this$1._mouseup);\n\n this$1._releaseHandler(e);\n };\n\n this._pointerdown = function (e) {\n if (e.isPrimary && e.button === 0) {\n bind(document, \"pointermove\", this$1._pointermove);\n bind(document, \"pointerup\", this$1._pointerup);\n bind(document, \"pointercancel\", this$1._pointerup);\n bind(document, \"contextmenu\", preventDefault);\n this$1._touchAction = e.target.style.touchAction;\n e.target.style.touchAction = \"none\";\n\n this$1._pressHandler(e);\n }\n };\n\n this._pointermove = function (e) {\n if (e.isPrimary) {\n this$1._dragHandler(e);\n }\n };\n\n this._pointerup = function (e) {\n if (e.isPrimary) {\n unbind(document, \"pointermove\", this$1._pointermove);\n unbind(document, \"pointerup\", this$1._pointerup);\n unbind(document, \"pointercancel\", this$1._pointerup);\n unbind(document, \"contextmenu\", preventDefault);\n e.target.style.touchAction = this$1._touchAction;\n\n this$1._releaseHandler(e);\n }\n };\n};\n\nDraggable.supportPointerEvent = function supportPointerEvent() {\n return typeof window !== 'undefined' && window.PointerEvent;\n};\n\nDraggable.prototype.bindTo = function bindTo(element) {\n if (element === this._element) {\n return;\n }\n\n if (this._element) {\n this._unbindFromCurrent();\n }\n\n this._element = element;\n\n this._bindToCurrent();\n};\n\nDraggable.prototype._bindToCurrent = function _bindToCurrent() {\n var element = this._element;\n\n if (this._usePointers()) {\n bind(element, \"pointerdown\", this._pointerdown);\n return;\n }\n\n bind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n bind(element, \"touchstart\", this._touchstart);\n bind(element, \"touchmove\", this._touchmove);\n bind(element, \"touchend\", this._touchend);\n }\n};\n\nDraggable.prototype._unbindFromCurrent = function _unbindFromCurrent() {\n var element = this._element;\n\n if (this._usePointers()) {\n unbind(element, \"pointerdown\", this._pointerdown);\n unbind(document, \"pointermove\", this._pointermove);\n unbind(document, \"pointerup\", this._pointerup);\n unbind(document, \"contextmenu\", preventDefault);\n unbind(document, \"pointercancel\", this._pointerup);\n return;\n }\n\n unbind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n unbind(element, \"touchstart\", this._touchstart);\n unbind(element, \"touchmove\", this._touchmove);\n unbind(element, \"touchend\", this._touchend);\n }\n};\n\nDraggable.prototype._usePointers = function _usePointers() {\n return !this._mouseOnly && Draggable.supportPointerEvent();\n};\n\nDraggable.prototype.destroy = function destroy() {\n this._unbindFromCurrent();\n\n this._element = null;\n}; // Re-export as \"default\" field to address a bug\n// where the ES Module is imported by CommonJS code.\n//\n// See https://github.com/telerik/kendo-angular/issues/1314\n\n\nDraggable.default = Draggable; // Rollup won't output exports['default'] otherwise\n\nexport default Draggable;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport KendoDraggable from '@telerik/kendo-draggable';\n/**\n * @hidden\n */\n\nvar Draggable =\n/** @class */\nfunction (_super) {\n __extends(Draggable, _super);\n\n function Draggable() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n\n\n _this.element = null;\n _this.draggable = new KendoDraggable({\n press: function press(event) {\n if (_this.element && _this.props.onPress) {\n _this.props.onPress.call(undefined, {\n target: _this,\n event: event,\n element: _this.element\n });\n }\n },\n drag: function drag(event) {\n if (_this.element && _this.props.onDrag) {\n _this.props.onDrag.call(undefined, {\n target: _this,\n event: event,\n element: _this.element\n });\n }\n },\n release: function release(event) {\n if (_this.element && _this.props.onRelease) {\n _this.props.onRelease.call(undefined, {\n target: _this,\n event: event\n });\n }\n }\n });\n\n _this.assingRef = function (element) {\n _this.element = element;\n };\n\n return _this;\n }\n\n Draggable.prototype.componentDidMount = function () {\n if (this.element) {\n this.draggable.bindTo(this.element);\n }\n };\n\n Draggable.prototype.componentWillUnmount = function () {\n this.draggable.destroy();\n };\n\n Draggable.prototype.render = function () {\n return React.cloneElement(React.Children.only(this.props.children), {\n ref: this.assingRef\n });\n };\n\n Draggable.propTypes = {\n children: PropTypes.element.isRequired\n };\n return Draggable;\n}(React.Component);\n\nexport { Draggable };","import { FIELD_REGEX } from './constants';\nvar getterCache = {};\n\ngetterCache.undefined = function () {\n return undefined;\n};\n/**\n * @hidden\n */\n\n\nexport 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, fieldName) {\n fields.push(index !== undefined ? index : indexAccessor || fieldName);\n });\n\n getterCache[field] = function (obj) {\n var result = obj;\n\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}","import { FIELD_REGEX } from './constants';\nvar setterCache = {};\n\nsetterCache.undefined = function (obj) {\n return obj;\n};\n/**\n * @hidden\n */\n\n\nexport function setter(field) {\n if (setterCache[field]) {\n return setterCache[field];\n }\n\n var fields = [];\n field.replace(FIELD_REGEX, function (_match, index, indexAccessor, fieldName) {\n fields.push(index !== undefined ? index : indexAccessor || fieldName);\n });\n\n setterCache[field] = function (obj, value) {\n var root = obj;\n var depth = fields.length - 1;\n\n for (var idx = 0; idx < depth && root; idx++) {\n root = root[fields[idx]] = root[fields[idx]] || {};\n }\n\n root[fields[depth]] = value;\n };\n\n return setterCache[field];\n}","/**\n * @hidden\n */\nexport var isPresent = function isPresent(value) {\n return value !== null && value !== undefined;\n};\n/**\n * @hidden\n *\n * Fits the contender number into the specified bounds.\n * If the number is NaN or null, the minimum is returned.\n *\n * @param contender Represents the number you want to fit into the specified bounds.\n * @param min The inclusive lower bound number.\n * @param max The inclusive upper bound number.\n */\n\nexport var fitIntoBounds = function fitIntoBounds(contender, min, max) {\n if (!isPresent(contender) || isNaN(contender)) {\n return min;\n }\n\n return contender <= min ? min : contender >= max ? max : contender;\n};","var ObserversMixin = {\n extend: function extend(proto) {\n var this$1 = this;\n\n for (var method in this$1) {\n if (method !== \"extend\") {\n proto[method] = this$1[method];\n }\n }\n },\n observers: function observers() {\n this._observers = this._observers || [];\n return this._observers;\n },\n addObserver: function addObserver(element) {\n if (!this._observers) {\n this._observers = [element];\n } else {\n this._observers.push(element);\n }\n\n return this;\n },\n removeObserver: function removeObserver(element) {\n var observers = this.observers();\n var index = observers.indexOf(element);\n\n if (index !== -1) {\n observers.splice(index, 1);\n }\n\n return this;\n },\n 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\n if (observer[methodName]) {\n observer[methodName](event);\n }\n }\n }\n\n return this;\n },\n optionsChange: function optionsChange(e) {\n if (e === void 0) e = {};\n e.element = this;\n this.trigger(\"optionsChange\", e);\n },\n geometryChange: function geometryChange() {\n this.trigger(\"geometryChange\", {\n element: this\n });\n },\n suspend: function suspend() {\n this._suspended = (this._suspended || 0) + 1;\n return this;\n },\n resume: function resume() {\n this._suspended = Math.max((this._suspended || 0) - 1, 0);\n return this;\n },\n _observerField: function _observerField(field, value) {\n if (this[field]) {\n this[field].removeObserver(this);\n }\n\n this[field] = value;\n value.addObserver(this);\n }\n};\nexport default ObserversMixin;","var wnd = typeof window !== \"undefined\" ? window : {};\n\nvar animationFrame = wnd.requestAnimationFrame || wnd.webkitRequestAnimationFrame || wnd.mozRequestAnimationFrame || wnd.oRequestAnimationFrame || wnd.msRequestAnimationFrame || function (callback) {\n setTimeout(callback, 1000 / 60);\n};\n\nexport default function animationFrameProxy(callback) {\n animationFrame.call(wnd, callback);\n}","var Class = function Class() {};\n\nexport default Class;","var ampRegExp = /&/g;\nvar ltRegExp = //g;\nexport default function htmlEncode(value) {\n return String(value).replace(ampRegExp, \"&\").replace(ltRegExp, \"<\").replace(gtRegExp, \">\").replace(quoteRegExp, \""\").replace(aposRegExp, \"'\");\n}","import Class from './class';\n\nvar 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.bind = function bind(eventName, handlers, one) {\n var arguments$1 = arguments;\n var this$1 = this;\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\n return this;\n }\n\n var loop = function loop(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\n _handler = function handler() {\n // eslint-disable-line no-loop-func\n this$1.unbind(eventName$1, _handler);\n original.apply(this$1, arguments$1);\n };\n\n _handler.original = original;\n }\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++) {\n loop(idx);\n }\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 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 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 var events = this._events[eventName];\n\n if (events) {\n var length = events.length;\n e.sender = this;\n e._defaultPrevented = false;\n e.preventDefault = preventDefault;\n e.isDefaultPrevented = isDefaultPrevented;\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;","var support = {};\n\nif (typeof window !== 'undefined') {\n support.browser = function (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 var browser;\n\n for (var agent in browserRxs) {\n if (browserRxs.hasOwnProperty(agent)) {\n var 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 break;\n }\n }\n }\n\n return browser;\n }(window.navigator.userAgent);\n}\n\nexport default support;","function now() {\n return new Date().getTime();\n}\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 throttled() {\n var elapsed = now() - lastExecTime;\n var args = arguments;\n\n var exec = function exec() {\n fn.apply(null, args);\n lastExecTime = now();\n }; // first execution\n\n\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}","var namedColors = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"00ffff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000000\",\n blanchedalmond: \"ffebcd\",\n blue: \"0000ff\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"00ffff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgrey: \"a9a9a9\",\n darkgreen: \"006400\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"ff00ff\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n grey: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgrey: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"778899\",\n lightslategrey: \"778899\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"00ff00\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"ff00ff\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370d8\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"d87093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n red: \"ff0000\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"ffffff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ffff00\",\n yellowgreen: \"9acd32\"\n};\nexport default namedColors;","import Class from '../class';\nimport support from '../support';\nimport namedColors from './named-colors';\nvar browser = support.browser;\n\nvar _matchNamedColor = function matchNamedColor(color) {\n var colorNames = Object.keys(namedColors);\n colorNames.push(\"transparent\");\n var regexp = new RegExp(\"^(\" + colorNames.join(\"|\") + \")(\\\\W|$)\", \"i\");\n\n _matchNamedColor = function matchNamedColor(color) {\n return regexp.exec(color);\n };\n\n return regexp.exec(color);\n};\n\nvar BaseColor = function (Class) {\n function BaseColor() {\n Class.call(this);\n }\n\n if (Class) BaseColor.__proto__ = Class;\n BaseColor.prototype = Object.create(Class && Class.prototype);\n BaseColor.prototype.constructor = BaseColor;\n\n BaseColor.prototype.toHSV = function toHSV() {\n return this;\n };\n\n BaseColor.prototype.toRGB = function toRGB() {\n return this;\n };\n\n BaseColor.prototype.toHex = function toHex() {\n return this.toBytes().toHex();\n };\n\n BaseColor.prototype.toBytes = function toBytes() {\n return this;\n };\n\n BaseColor.prototype.toCss = function toCss() {\n return \"#\" + this.toHex();\n };\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\n return this.toCssRgba();\n };\n\n BaseColor.prototype.equals = function equals(c) {\n return c === this || c !== null && 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 return Math.sqrt(Math.pow((c1.r - c2.r) * 0.30, 2) + Math.pow((c1.g - c2.g) * 0.59, 2) + Math.pow((c1.b - c2.b) * 0.11, 2));\n };\n\n BaseColor.prototype.clone = function clone() {\n var c = this.toBytes();\n\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 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\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\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,\n s,\n 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\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n\n case g:\n h = (b - r) / d + 2;\n break;\n\n case b:\n h = (r - g) / d + 4;\n break;\n\n default:\n 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() {\n return hex(this.r, 2) + hex(this.g, 2) + hex(this.b, 2);\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 var result = n.toString(16);\n\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 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 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:\n r = v;\n g = t;\n b = p;\n break;\n\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n\n default:\n r = v;\n g = p;\n b = q;\n 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 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\nexport { RGB, Bytes, HSV, HSL };\nexport default function parseColor(value, safe) {\n var m, ret;\n\n if (value == null || value === \"none\") {\n return null;\n }\n\n if (value instanceof BaseColor) {\n return value;\n }\n\n var color = value.toLowerCase();\n\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\n color.match = [m[1]];\n return color;\n }\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), parseInt(m[2], 16), 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), parseInt(m[2] + m[2], 16), parseInt(m[3] + m[3], 16), 1);\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), parseInt(m[2], 10), 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), parseInt(m[2], 10), 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, parseFloat(m[2]) / 100, 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, parseFloat(m[2]) / 100, parseFloat(m[3]) / 100, parseFloat(m[4]));\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}","import Class from '../class';\nimport namedColors from './named-colors';\nimport { Bytes, RGB, HSV, HSL } from './parse-color';\nvar DARK_TRESHOLD = 180;\n\nvar Color = function (Class) {\n function Color(value) {\n var this$1 = this;\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 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 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 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 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 process(parts) {\n return [parseInt(parts[1], 10), parseInt(parts[2], 10), parseInt(parts[3], 10)];\n }\n}, {\n re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n process: function process(parts) {\n return [parseInt(parts[1], 16), parseInt(parts[2], 16), parseInt(parts[3], 16)];\n }\n}, {\n re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n process: function process(parts) {\n return [parseInt(parts[1] + parts[1], 16), parseInt(parts[2] + parts[2], 16), parseInt(parts[3] + parts[3], 16)];\n }\n}];\nColor.namedColors = namedColors;\nexport default Color;","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 */\nvar literals = {\n 1: \"i\",\n 10: \"x\",\n 100: \"c\",\n 2: \"ii\",\n 20: \"xx\",\n 200: \"cc\",\n 3: \"iii\",\n 30: \"xxx\",\n 300: \"ccc\",\n 4: \"iv\",\n 40: \"xl\",\n 400: \"cd\",\n 5: \"v\",\n 50: \"l\",\n 500: \"d\",\n 6: \"vi\",\n 60: \"lx\",\n 600: \"dc\",\n 7: \"vii\",\n 70: \"lxx\",\n 700: \"dcc\",\n 8: \"viii\",\n 80: \"lxxx\",\n 800: \"dccc\",\n 9: \"ix\",\n 90: \"xc\",\n 900: \"cm\",\n 1000: \"m\"\n};\nexport default function arabicToRoman(n) {\n var values = [1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1];\n var roman = \"\";\n\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\n return roman;\n}","export default function createPromise() {\n var resolveFn, rejectFn;\n var promise = new Promise(function (resolve, reject) {\n resolveFn = function resolveFn(data) {\n promise._state = \"resolved\";\n resolve(data);\n return promise;\n };\n\n rejectFn = function rejectFn(data) {\n promise._state = \"rejected\";\n reject(data);\n return promise;\n };\n });\n promise._state = \"pending\";\n promise.resolve = resolveFn;\n promise.reject = rejectFn;\n\n promise.state = function () {\n return promise._state;\n };\n\n return promise;\n}","var UNDEFINED = \"undefined\";\nexport default function defined(value) {\n return typeof value !== UNDEFINED;\n}","var defId = 1;\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;\nexport { DEG_TO_RAD, MAX_NUM, MIN_NUM };","import { DEG_TO_RAD } from './constants';\nexport default function deg(radians) {\n return radians / DEG_TO_RAD;\n}","var KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar fromCharCode = String.fromCharCode;\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\nexport default function encodeBase64(input) {\n var output = \"\";\n var i = 0;\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 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 + KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) + KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n\n return output;\n}","import defined from './defined';\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}","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n// mergeSort is stable.\nexport default function mergeSort(a, cmp) {\n if (a.length < 2) {\n return a.slice();\n }\n\n function merge(a, b) {\n var r = [],\n ai = 0,\n bi = 0,\n i = 0;\n\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\n if (ai < a.length) {\n r.push.apply(r, a.slice(ai));\n }\n\n if (bi < b.length) {\n r.push.apply(r, b.slice(bi));\n }\n\n return r;\n }\n\n return function sort(a) {\n if (a.length <= 1) {\n return a;\n }\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}","import { DEG_TO_RAD } from './constants';\nexport default function rad(degrees) {\n return degrees * DEG_TO_RAD;\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 defined from './defined';\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\n for (var idx = 0; idx < eventNames.length; idx++) {\n element.addEventListener(eventNames[idx], events[eventName], false);\n }\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\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 } else {\n var size$1 = elementStyles(element, ['width', 'height']);\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\n for (var idx = 0; idx < eventNames.length; idx++) {\n element.removeEventListener(eventNames[idx], events[name], false);\n }\n }\n}","import { Class } from '../common';\n\nvar LRUCache = function (Class) {\n function LRUCache(size) {\n Class.call(this);\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 = {\n key: key,\n 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 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\n for (var key in object) {\n parts.push(key + object[key]);\n }\n\n return parts.sort().join(\"\");\n} // Computes FNV-1 hash\n// See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function\n\n\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 {\n width: 0,\n height: 0,\n baseline: 0\n };\n}\n\nvar DEFAULT_OPTIONS = {\n baselineMarkerSize: 1\n};\nvar defaultMeasureBox;\n\nif (typeof document !== \"undefined\") {\n defaultMeasureBox = document.createElement(\"div\");\n defaultMeasureBox.style.cssText = \"position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;\" + \"padding: 0 !important; margin: 0 !important; border: 0 !important;\" + \"line-height: normal !important; visibility: hidden !important; white-space: pre!important;\";\n}\n\nvar TextMetrics = function (Class) {\n function TextMetrics(options) {\n Class.call(this);\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 (!text) {\n return zeroSize();\n }\n\n var styleKey = objectKey(style);\n var cacheKey = hashKey(text + styleKey);\n\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\n var baselineMarker = this._baselineMarker().cloneNode(false);\n\n for (var key in style) {\n var value = style[key];\n\n if (typeof value !== \"undefined\") {\n measureBox.style[key] = value;\n }\n }\n\n var textStr = options.normalizeText !== false ? normalizeText(text) : String(text);\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 return size;\n };\n\n TextMetrics.prototype._baselineMarker = function _baselineMarker() {\n var marker = document.createElement(\"div\");\n marker.style.cssText = \"display: inline-block; vertical-align: baseline;width: \" + this.options.baselineMarkerSize + \"px; height: \" + this.options.baselineMarkerSize + \"px;overflow: hidden;\";\n return marker;\n };\n\n return TextMetrics;\n}(Class);\n\nTextMetrics.current = new TextMetrics();\nexport default TextMetrics;","import TextMetrics from './text-metrics';\nexport default function measureText(text, style, measureBox) {\n return TextMetrics.current.measure(text, style, measureBox);\n}","import ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\nimport { defined } from '../util';\nvar toString = {}.toString;\n\nvar OptionsStore = function (Class) {\n function OptionsStore(options, prefix) {\n var this$1 = this;\n if (prefix === void 0) prefix = \"\";\n Class.call(this);\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 (Class) OptionsStore.__proto__ = Class;\n OptionsStore.prototype = Object.create(Class && Class.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\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 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 var obj = parentObj[fieldName];\n\n if (!obj) {\n obj = new OptionsStore({}, prefix);\n obj.addObserver(this$1);\n parentObj[fieldName] = obj;\n }\n\n parentObj = obj;\n }\n\n fieldName = parts[0];\n }\n\n parentObj._clear(fieldName);\n\n parentObj[fieldName] = value;\n };\n\n OptionsStore.prototype._clear = function _clear(field) {\n var current = this[field];\n\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}(Class);\n\nObserversMixin.extend(OptionsStore.prototype);\nexport default OptionsStore;","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\nexport default function defineAccessors(fn, fields) {\n for (var i = 0; i < fields.length; i++) {\n var name = fields[i];\n var capitalized = name.charAt(0).toUpperCase() + name.substring(1, name.length);\n fn[\"set\" + capitalized] = setAccessor(name);\n fn[\"get\" + capitalized] = getAccessor(name);\n }\n}","import { Class } from '../common';\nimport { defined, rad, round } from '../util';\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 Class.call(this);\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(this.a * matrix.a + this.c * matrix.b, this.b * matrix.a + this.d * matrix.b, this.a * matrix.c + this.c * matrix.d, this.b * matrix.c + this.d * matrix.d, this.a * matrix.e + this.c * matrix.f + this.e, this.b * matrix.e + this.d * matrix.f + this.f);\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, (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 && this.c === other.c && this.d === other.d && 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 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 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 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();\nexport default Matrix;","export default function toMatrix(transformation) {\n if (transformation && typeof transformation.matrix === \"function\") {\n return transformation.matrix();\n }\n\n return transformation;\n}","import defineAccessors from '../accessors/define-accessors';\nimport ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\nimport { defined, MIN_NUM, MAX_NUM, round } from '../util';\nimport Matrix from './matrix';\nimport toMatrix from './to-matrix';\n\nvar Point = function (Class) {\n function Point(x, y) {\n Class.call(this);\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 var staticAccessors = {\n ZERO: {\n configurable: true\n }\n };\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 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 this.geometryChange();\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 this.x *= scaleX;\n this.y *= scaleY;\n this.geometryChange();\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 this.x = matrix.a * x + matrix.c * y + matrix.e;\n this.y = matrix.b * x + matrix.d * y + matrix.f;\n this.geometryChange();\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 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 this.geometryChange();\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 return [x, y];\n };\n\n Point.prototype.toString = function toString(digits, separator) {\n if (separator === void 0) separator = \" \";\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 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 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 return Point;\n}(Class);\n\ndefineAccessors(Point.prototype, [\"x\", \"y\"]);\nObserversMixin.extend(Point.prototype);\nexport default Point;","import defineAccessors from '../accessors/define-accessors';\nimport ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\nimport { defined, round } from '../util';\n\nvar Size = function (Class) {\n function Size(width, height) {\n Class.call(this);\n this.width = width || 0;\n this.height = height || 0;\n }\n\n if (Class) Size.__proto__ = Class;\n Size.prototype = Object.create(Class && Class.prototype);\n Size.prototype.constructor = Size;\n var staticAccessors = {\n ZERO: {\n configurable: true\n }\n };\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 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 return Size;\n}(Class);\n\ndefineAccessors(Size.prototype, [\"width\", \"height\"]);\nObserversMixin.extend(Size.prototype);\nexport default Size;","import ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\nimport Point from './point';\nimport Size from './size';\n\nvar Rect = function (Class) {\n function Rect(origin, size) {\n if (origin === void 0) origin = new Point();\n if (size === void 0) size = new Size();\n Class.call(this);\n this.setOrigin(origin);\n this.setSize(size);\n }\n\n if (Class) Rect.__proto__ = Class;\n Rect.prototype = Object.create(Class && Class.prototype);\n Rect.prototype.constructor = Rect;\n\n Rect.prototype.clone = function clone() {\n return new Rect(this.origin.clone(), this.size.clone());\n };\n\n Rect.prototype.equals = function equals(other) {\n return other && other.origin.equals(this.origin) && other.size.equals(this.size);\n };\n\n Rect.prototype.setOrigin = function setOrigin(value) {\n this._observerField(\"origin\", Point.create(value));\n\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getOrigin = function getOrigin() {\n return this.origin;\n };\n\n Rect.prototype.setSize = function setSize(value) {\n this._observerField(\"size\", Size.create(value));\n\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 return Rect.fromPoints(tl, tr, br, bl);\n };\n\n Rect.prototype.transformCopy = function transformCopy(m) {\n return Rect.fromPoints(this.topLeft().transform(m), this.bottomRight().transform(m));\n };\n\n Rect.prototype.expand = function expand(x, y) {\n if (y === void 0) y = x;\n this.size.width += 2 * x;\n this.size.height += 2 * y;\n this.origin.translate(-x, -y);\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 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(bottomRight.x - topLeft.x, bottomRight.y - topLeft.y);\n return new Rect(topLeft, size);\n };\n\n Rect.union = function union(a, b) {\n return Rect.fromPoints(Point.min(a.topLeft(), b.topLeft()), Point.max(a.bottomRight(), b.bottomRight()));\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 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 && rect2.left <= rect1.right && rect1.top <= rect2.bottom && rect2.top <= rect1.bottom) {\n return Rect.fromPoints(new Point(Math.max(rect1.left, rect2.left), Math.max(rect1.top, rect2.top)), new Point(Math.min(rect1.right, rect2.right), Math.min(rect1.bottom, rect2.bottom)));\n }\n };\n\n return Rect;\n}(Class);\n\nObserversMixin.extend(Rect.prototype);\nexport default Rect;","import ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\nimport toMatrix from './to-matrix';\nimport Matrix from './matrix';\nimport Point from './point';\n\nvar Transformation = function (Class) {\n function Transformation(matrix) {\n if (matrix === void 0) matrix = Matrix.unit();\n Class.call(this);\n this._matrix = matrix;\n }\n\n if (Class) Transformation.__proto__ = Class;\n Transformation.prototype = Object.create(Class && Class.prototype);\n Transformation.prototype.constructor = Transformation;\n\n Transformation.prototype.clone = function clone() {\n return new Transformation(this._matrix.clone());\n };\n\n Transformation.prototype.equals = function equals(other) {\n return other && 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\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 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\n return this;\n };\n\n Transformation.prototype.rotate = function rotate(angle, origin) {\n var originPoint = Point.create(origin) || Point.ZERO;\n this._matrix = this._matrix.multiplyCopy(Matrix.rotate(angle, originPoint.x, originPoint.y));\n\n this._optionsChange();\n\n return this;\n };\n\n Transformation.prototype.multiply = function multiply(transformation) {\n var matrix = toMatrix(transformation);\n this._matrix = this._matrix.multiplyCopy(matrix);\n\n this._optionsChange();\n\n return this;\n };\n\n Transformation.prototype.matrix = function matrix(value) {\n if (value) {\n this._matrix = value;\n\n this._optionsChange();\n\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}(Class);\n\nObserversMixin.extend(Transformation.prototype);\nexport default Transformation;","import Transformation from './transformation';\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 OptionsStore from '../core/options-store';\nimport ObserversMixin from '../mixins/observers-mixin';\nimport Rect from '../geometry/rect';\nimport Matrix from '../geometry/matrix';\nimport createTransform from '../geometry/transform';\nimport toMatrix from '../geometry/to-matrix';\nimport { Class } from '../common';\nimport { defined, definitionId, isTransparent, valueOrDefault } from '../util';\n\nvar Element = function (Class) {\n function Element(options) {\n Class.call(this);\n\n this._initOptions(options);\n }\n\n if (Class) Element.__proto__ = Class;\n Element.prototype = Object.create(Class && Class.prototype);\n Element.prototype.constructor = Element;\n\n Element.prototype._initOptions = function _initOptions(options) {\n if (options === void 0) options = {};\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\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 var elementTransform = this.transform();\n var elementMatrix = toMatrix(elementTransform);\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\n if (defined(value)) {\n if (value && !value.id) {\n value.id = definitionId();\n }\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.clippedBBox = function clippedBBox(transformation) {\n var bbox = this._clippedBBox(transformation);\n\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\n if (transform) {\n transformedPoint = point.transformCopy(transform.matrix().invert());\n }\n\n return this._hasFill() && this._containsPoint(transformedPoint) || this._isOnPath && this._hasStroke() && this._isOnPath(transformedPoint);\n }\n\n return false;\n };\n\n Element.prototype._hasFill = function _hasFill() {\n var fill = this.options.fill;\n return fill && !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 return Element;\n}(Class);\n\nElement.prototype.nodeType = \"Element\";\nObserversMixin.extend(Element.prototype);\nexport default Element;","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\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 defineAccessors from '../accessors/define-accessors';\nimport ObserversMixin from '../mixins/observers-mixin';\nimport Point from './point';\nimport Rect from './rect';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\nimport { Class } from '../common';\nimport { rad } from '../util';\nvar PI_DIV_2 = Math.PI / 2;\n\nvar Circle = function (Class) {\n function Circle(center, radius) {\n if (center === void 0) center = new Point();\n if (radius === void 0) radius = 0;\n Class.call(this);\n this.setCenter(center);\n this.setRadius(radius);\n }\n\n if (Class) Circle.__proto__ = Class;\n Circle.prototype = Object.create(Class && Class.prototype);\n Circle.prototype.constructor = Circle;\n\n Circle.prototype.setCenter = function setCenter(value) {\n this._observerField(\"center\", Point.create(value));\n\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 && other.center.equals(this.center) && 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 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\n var currentPointY = this$1._pointAt(extremeAngles.y + i * PI_DIV_2).transformCopy(matrix);\n\n var 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 Circle.prototype._pointAt = function _pointAt(angle) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n return new Point(center.x + radius * Math.cos(angle), center.y + radius * Math.sin(angle));\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) + 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 return radius - width <= pointDistance && pointDistance <= radius + width;\n };\n\n return Circle;\n}(Class);\n\ndefineAccessors(Circle.prototype, [\"radius\"]);\nObserversMixin.extend(Circle.prototype);\nexport default Circle;","import { defined } from '../util';\nvar GRADIENT = \"Gradient\";\nvar Paintable = {\n extend: function extend(proto) {\n proto.fill = this.fill;\n proto.stroke = this.stroke;\n },\n 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\n if (defined(opacity)) {\n newFill.opacity = opacity;\n }\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 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};\nexport default Paintable;","import Matrix from '../geometry/matrix';\nimport toMatrix from '../geometry/to-matrix';\nvar IDENTITY_MATRIX_HASH = Matrix.IDENTITY.toString();\nvar Measurable = {\n extend: function extend(proto) {\n proto.bbox = this.bbox;\n proto.geometryChange = this.geometryChange;\n },\n 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\n if (strokeWidth && bbox) {\n bbox.expand(strokeWidth / 2);\n }\n\n return bbox;\n },\n geometryChange: function geometryChange() {\n delete this._bboxCache;\n this.trigger(\"geometryChange\", {\n element: this\n });\n }\n};\nexport default Measurable;","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\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n}\n\nexport default function defineGeometryAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = geometryAccessor(names[i]);\n }\n}","import GeometryCircle from '../geometry/circle';\nimport Paintable from '../mixins/paintable';\nimport Measurable from '../mixins/measurable';\nimport defineGeometryAccessors from '../accessors/define-geometry-accessors';\nimport Element from './element';\nimport { defined } from '../util';\nvar DEFAULT_STROKE = \"#000\";\n\nvar Circle = function (Element) {\n function Circle(geometry, options) {\n if (geometry === void 0) geometry = new GeometryCircle();\n if (options === void 0) options = {};\n Element.call(this, options);\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE);\n }\n }\n\n if (Element) Circle.__proto__ = Element;\n Circle.prototype = Object.create(Element && Element.prototype);\n Circle.prototype.constructor = Circle;\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 return Circle;\n}(Element);\n\nCircle.prototype.nodeType = \"Circle\";\nPaintable.extend(Circle.prototype);\nMeasurable.extend(Circle.prototype);\ndefineGeometryAccessors(Circle.prototype, [\"geometry\"]);\nexport default Circle;","import { PRECISION } from '../constants';\nimport { round } from '../../util';\nexport default function close(a, b, tolerance) {\n if (tolerance === void 0) tolerance = PRECISION;\n return round(Math.abs(a - b), tolerance) === 0;\n}","var PRECISION = 10;\nexport { PRECISION };","import close from './close';\nexport default function closeOrLess(a, b, tolerance) {\n return a < b || close(a, b, tolerance);\n}","import defineAccessors from '../accessors/define-accessors';\nimport ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\nimport { deg, rad, round } from '../util';\nimport closeOrLess from './math/close-or-less';\nimport lineIntersection from './math/line-intersection';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\nimport { PRECISION } from './constants';\nimport Point from './point';\nimport Rect from './rect';\nimport transform from './transform';\nvar MAX_INTERVAL = 45;\nvar pow = Math.pow;\n\nvar Arc = function (Class) {\n function Arc(center, options) {\n if (center === void 0) center = new Point();\n if (options === void 0) options = {};\n Class.call(this);\n this.setCenter(center);\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 (Class) Arc.__proto__ = Class;\n Arc.prototype = Object.create(Class && Class.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\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 return new Point(center.x + this.radiusX * Math.cos(radian), center.y + this.radiusY * Math.sin(radian));\n };\n\n Arc.prototype.curvePoints = function curvePoints() {\n var this$1 = this;\n var startAngle = this.startAngle;\n var dir = this.anticlockwise ? -1 : 1;\n var curvePoints = [this.pointAt(startAngle)];\n\n var interval = this._arcInterval();\n\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\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\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\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\n if (currentAngleX < endAngle) {\n currentPointX = this$1.pointAt(currentAngleX).transformCopy(matrix);\n currentAngleX += 90;\n }\n\n var currentPointY = void 0;\n\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\n var p1Derivative = this._derivativeAt(startAngle);\n\n var p2Derivative = this._derivativeAt(endAngle);\n\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\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 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\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 / 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\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\n return containsPoint;\n };\n\n Arc.prototype._isOnPath = function _isOnPath(point, width) {\n var interval = this._arcInterval();\n\n var center = this.center;\n var angle = calculateAngle(center.x, center.y, this.radiusX, this.radiusY, point.x, point.y);\n\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n return inAngleRange && this.pointAt(angle).distanceTo(point) <= width;\n };\n\n Arc.fromPoints = function fromPoints(start, end, rx, ry, largeArc, swipe, rotation) {\n // 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 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}(Class);\n\ndefineAccessors(Arc.prototype, [\"radiusX\", \"radiusY\", \"startAngle\", \"endAngle\", \"anticlockwise\"]);\nObserversMixin.extend(Arc.prototype);\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 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;\n if (rotation === void 0) rotation = 0;\n var radians = rad(rotation);\n var cosine = Math.cos(radians);\n var sine = Math.sin(radians);\n var xT = cosine * (x1 - x2) / 2 + sine * (y1 - y2) / 2;\n var yT = -sine * (x1 - x2) / 2 + cosine * (y1 - y2) / 2;\n var sign = largeArc !== swipe ? 1 : -1;\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 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 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)); // due to rounding errors the value could become NaN even after radii correction\n\n if (isNaN(constT)) {\n constT = 0;\n }\n\n var cxT = constT * (rx * yT) / ry;\n var cyT = -constT * (ry * xT) / rx;\n var cx = cosine * cxT - sine * cyT + (x1 + x2) / 2;\n var cy = sine * cxT + cosine * cyT + (y1 + y2) / 2;\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 var startAngle = (uY >= 0 ? 1 : -1) * deg(Math.acos(uX / Math.sqrt(uX * uX + uY * uY)));\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\n var endAngle = startAngle + angle;\n var signEndAngle = endAngle >= 0 ? 1 : -1;\n endAngle = Math.abs(endAngle) % 360 * signEndAngle;\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;","import Point from '../point';\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 ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\nvar push = [].push;\nvar pop = [].pop;\nvar splice = [].splice;\nvar shift = [].shift;\nvar slice = [].slice;\nvar unshift = [].unshift;\n\nvar ElementsArray = function (Class) {\n function ElementsArray(array) {\n if (array === void 0) array = [];\n Class.call(this);\n this.length = 0;\n\n this._splice(0, array.length, array);\n }\n\n if (Class) ElementsArray.__proto__ = Class;\n ElementsArray.prototype = Object.create(Class && Class.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\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\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 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\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\n this._setObserver(elements);\n\n return result;\n };\n\n ElementsArray.prototype._add = function _add(elements) {\n this._setObserver(elements);\n\n this._change();\n };\n\n ElementsArray.prototype._remove = function _remove(elements) {\n this._clearObserver(elements);\n\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}(Class);\n\nObserversMixin.extend(ElementsArray.prototype);\nexport default ElementsArray;","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 { 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\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n}\n\nexport default function definePointAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = pointAccessor(names[i]);\n }\n}","import { deg } from '../../util';\nimport transform from '../transform';\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 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] + 3 * Math.pow(t1, 2) * t * points[1][field] + 3 * Math.pow(t, 2) * t1 * points[2][field] + 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], 3 * (points[0][field] - 2 * points[1][field] + points[2][field]), 3 * (-points[0][field] + points[1][field]), points[0][field]];\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 Class.call(this);\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, 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 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 [(-b + squareRoot) / (2 * a), (-b - squareRoot) / (2 * a)];\n} //Cardano's formula\n\n\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 z1 = x1.add(x2).multiplyConstant(-1 / 2);\n z2 = x1.add(x2.negate()).multiplyConstant(Math.sqrt(3) / 2);\n y2 = z1.add(i.multiply(z2));\n y3 = z1.add(i.negate().multiply(z2));\n var result = [];\n\n if (y1.isReal()) {\n result.push(round(y1.real + b3a, PRECISION));\n }\n\n if (y2.isReal()) {\n result.push(round(y2.real + b3a, PRECISION));\n }\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';\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\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\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 ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\nimport definePointAccessors from '../accessors/define-point-accessors';\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';\n\nvar Segment = function (Class) {\n function Segment(anchor, controlIn, controlOut) {\n Class.call(this);\n this.anchor(anchor || new Point());\n this.controlIn(controlIn);\n this.controlOut(controlOut);\n }\n\n if (Class) Segment.__proto__ = Class;\n Segment.prototype = Object.create(Class && Class.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(segmentAnchor, this.controlOut().transformCopy(matrix), toSegment.controlIn().transformCopy(matrix), toSegmentAnchor);\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\n var extremesX = this._curveExtremesFor(points, \"x\");\n\n var extremesY = this._curveExtremesFor(points, \"y\");\n\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 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(points[0][field], points[1][field], points[2][field], points[3][field]);\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\n if (min < 0 || min > 1) {\n min = 0;\n }\n\n var max = Math.min(Math.max(t1, t2), 1);\n\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\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\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\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 } //the approach is not entirely correct but is close and the alternatives are solving a 6th degree polynomial or testing the segment points\n\n\n var points = [p1, p2, p3, p4];\n\n if (hasRootsInRange(points, point, \"x\", \"y\", width) || hasRootsInRange(points, point, \"y\", \"x\", width)) {\n return true;\n }\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\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\n return isOnPath;\n };\n\n return Segment;\n}(Class);\n\ndefinePointAccessors(Segment.prototype, [\"anchor\", \"controlIn\", \"controlOut\"]);\nObserversMixin.extend(Segment.prototype);\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;","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\nimport close from './close';\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\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\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 Rect from '../../geometry/rect';\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\n if (element.visible()) {\n var elementBoundingBox = applyTransform ? element.bbox(transformation) : element.rawBBox();\n\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 Rect from '../../geometry/rect';\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\n if (element.visible()) {\n var elementBoundingBox = element.clippedBBox(transformation);\n\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 Path from './path';\nimport Paintable from '../mixins/paintable';\nimport Measurable from '../mixins/measurable';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\nimport { defined, last } from '../util';\n\nvar MultiPath = function (Element) {\n function MultiPath(options) {\n Element.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 (Element) MultiPath.__proto__ = Element;\n MultiPath.prototype = Object.create(Element && Element.prototype);\n MultiPath.prototype.constructor = MultiPath;\n\n MultiPath.prototype.moveTo = function moveTo(x, y) {\n var path = new Path();\n path.moveTo(x, y);\n this.paths.push(path);\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\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\n return false;\n };\n\n MultiPath.prototype._clippedBBox = function _clippedBBox(transformation) {\n return elementsClippedBoundingBox(this.paths, this.currentTransform(transformation));\n };\n\n return MultiPath;\n}(Element);\n\nMultiPath.prototype.nodeType = \"MultiPath\";\nPaintable.extend(MultiPath.prototype);\nMeasurable.extend(MultiPath.prototype);\nexport default MultiPath;","import Point from '../geometry/point';\nimport { last } from '../util';\nvar ShapeMap = {\n l: function l(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 position.x = point.x;\n position.y = point.y;\n }\n },\n c: function c(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\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 position.x = point.x;\n position.y = point.y;\n }\n },\n v: function v(path, options) {\n var value = options.isRelative ? 0 : options.position.x;\n toLineParamaters(options.parameters, true, value);\n this.l(path, options);\n },\n h: function h(path, options) {\n var value = options.isRelative ? 0 : options.position.y;\n toLineParamaters(options.parameters, false, value);\n this.l(path, options);\n },\n a: function a(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\n if (position.x !== endPoint.x || position.y !== endPoint.y) {\n path.arcTo(endPoint, radiusX, radiusY, largeArc, swipe, rotation);\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n },\n s: function s(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 path.curveTo(controlOut, controlIn, endPoint);\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n q: function q(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 path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n t: function t(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().translateWith(position.scaleCopy(-1 / 3)).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\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 path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\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 { Class } from '../common';\nimport MultiPath from '../shapes/multi-path';\nimport Point from '../geometry/point';\nimport ShapeMap from './shape-map';\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\nvar PathParser = function (Class) {\n function PathParser() {\n Class.apply(this, arguments);\n }\n\n if (Class) PathParser.__proto__ = Class;\n PathParser.prototype = Object.create(Class && Class.prototype);\n PathParser.prototype.constructor = PathParser;\n\n PathParser.prototype.parse = function parse(str, options) {\n var multiPath = new MultiPath(options);\n var position = new Point();\n var previousCommand;\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 multiPath.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](multiPath, {\n parameters: parameters,\n position: position,\n isRelative: isRelative,\n previousCommand: previousCommand\n });\n\n if (closePath && closePath.toLowerCase() === CLOSE) {\n multiPath.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 return multiPath;\n };\n\n return PathParser;\n}(Class);\n\nPathParser.current = new PathParser();\nexport default PathParser;","import GeometryElementsArray from './geometry-elements-array';\nimport Element from './element';\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 PathParser from '../parsing/path-parser';\n\nvar Path = function (Element) {\n function Path(options) {\n Element.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 (Element) Path.__proto__ = Element;\n Path.prototype = Object.create(Element && Element.prototype);\n Path.prototype.constructor = Path;\n\n Path.prototype.moveTo = function moveTo(x, y) {\n this.suspend();\n this.segments.elements([]);\n this.resume();\n this.lineTo(x, y);\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 this.segments.push(segment);\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 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), 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, end, rx, ry, largeArc, swipe, rotation);\n\n this._addArcSegments(arc);\n }\n\n return this;\n };\n\n Path.prototype._addArcSegments = function _addArcSegments(arc) {\n var this$1 = this;\n this.suspend();\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 return this;\n };\n\n Path.prototype.rawBBox = function rawBBox() {\n return this._bbox();\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\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\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.fromRect = function fromRect(rect, options) {\n return new Path(options).moveTo(rect.topLeft()).lineTo(rect.topRight()).lineTo(rect.bottomRight()).lineTo(rect.bottomLeft()).close();\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\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.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 return Path;\n}(Element);\n\nPath.prototype.nodeType = \"Path\";\nPaintable.extend(Path.prototype);\nMeasurable.extend(Path.prototype);\n\nPath.parse = function (str, options) {\n return PathParser.current.parse(str, options);\n};\n\nexport default Path;","import GeometryArc from '../geometry/arc';\nimport Element from './element';\nimport Path from './path';\nimport Paintable from '../mixins/paintable';\nimport Measurable from '../mixins/measurable';\nimport defineGeometryAccessors from '../accessors/define-geometry-accessors';\nimport { defined } from '../util';\nvar DEFAULT_STROKE = \"#000\";\n\nvar Arc = function (Element) {\n function Arc(geometry, options) {\n if (geometry === void 0) geometry = new GeometryArc();\n if (options === void 0) options = {};\n Element.call(this, options);\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE);\n }\n }\n\n if (Element) Arc.__proto__ = Element;\n Arc.prototype = Object.create(Element && Element.prototype);\n Arc.prototype.constructor = Arc;\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 return Arc;\n}(Element);\n\nArc.prototype.nodeType = \"Arc\";\nPaintable.extend(Arc.prototype);\nMeasurable.extend(Arc.prototype);\ndefineGeometryAccessors(Arc.prototype, [\"geometry\"]);\nexport default Arc;","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 definePointAccessors from '../accessors/define-point-accessors';\nimport { defined, measureText } from '../util';\nvar DEFAULT_FONT = \"12px sans-serif\";\nvar DEFAULT_FILL = \"#000\";\n\nvar Text = function (Element) {\n function Text(content, position, options) {\n if (position === void 0) position = new Point();\n if (options === void 0) options = {};\n Element.call(this, options);\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 (Element) Text.__proto__ = Element;\n Text.prototype = Object.create(Element && Element.prototype);\n Text.prototype.constructor = Text;\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 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 return Text;\n}(Element);\n\nText.prototype.nodeType = \"Text\";\nPaintable.extend(Text.prototype);\ndefinePointAccessors(Text.prototype, [\"position\"]);\nexport default Text;","import defineGeometryAccessors from '../accessors/define-geometry-accessors';\nimport Element from './element';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport { defined } from '../util';\n\nvar Image = function (Element) {\n function Image(src, rect, options) {\n if (rect === void 0) rect = new Rect();\n if (options === void 0) options = {};\n Element.call(this, options);\n this.src(src);\n this.rect(rect);\n }\n\n if (Element) Image.__proto__ = Element;\n Image.prototype = Object.create(Element && Element.prototype);\n Image.prototype.constructor = Image;\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 return Image;\n}(Element);\n\nImage.prototype.nodeType = \"Image\";\ndefineGeometryAccessors(Image.prototype, [\"rect\"]);\nexport default Image;","var Traversable = {\n extend: function extend(proto, childrenField) {\n proto.traverse = function (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};\nexport default Traversable;","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\nvar Group = function (Element) {\n function Group(options) {\n Element.call(this, options);\n this.children = [];\n }\n\n if (Element) Group.__proto__ = Element;\n Group.prototype = Object.create(Element && Element.prototype);\n Group.prototype.constructor = Group;\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\n this._reparent(arguments, this);\n\n this.childrenChange(\"add\", arguments);\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 this.childrenChange(\"add\", [element], index);\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\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\n this._reparent(items, null);\n\n this.childrenChange(\"remove\", items, 0);\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\n for (var idx = 0; idx < children.length; idx++) {\n if (children[idx].containsPoint(point, transform)) {\n return true;\n }\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\n if (parent && parent !== this$1 && parent.remove) {\n parent.remove(child);\n }\n\n child.parent = newParent;\n }\n };\n\n return Group;\n}(Element);\n\nGroup.prototype.nodeType = \"Group\";\nTraversable.extend(Group.prototype, \"children\");\nexport default Group;","import createTransform from '../geometry/transform';\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 transofrm.matrix(matrix);\n element.transform(transofrm);\n}","export default function alignStart(size, rect, align, axis, sizeField) {\n var start;\n\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}","export default function alignStartReverse(size, rect, align, axis, sizeField) {\n var start;\n\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';\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 forEach(elements, callback) {\n elements.forEach(callback);\n};\n\nvar forEachReverse = function forEachReverse(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\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\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\n var ref = this._initGroups();\n\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 arrangeElements(bbox, idx) {\n var element = group.elements[idx];\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 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\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\n transform.scale(scale, scale);\n this.transform(transform);\n }\n };\n\n Layout.prototype._initGroups = function _initGroups() {\n var this$1 = this;\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\n var group = this._newGroup();\n\n var groups = [];\n\n var addGroup = function addGroup() {\n groups.push(group);\n groupsSize += group.lineSize + lineSpacing;\n };\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\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\n addGroup();\n group = this$1._newGroup();\n } else {\n addGroup();\n group = this$1._newGroup();\n\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 defineGeometryAccessors from '../accessors/define-geometry-accessors';\nimport Element from './element';\nimport Paintable from '../mixins/paintable';\nimport Measurable from '../mixins/measurable';\nimport GeometryRect from '../geometry/rect';\nimport { defined } from '../util';\n\nvar Rect = function (Element) {\n function Rect(geometry, options) {\n if (geometry === void 0) geometry = new GeometryRect();\n if (options === void 0) options = {};\n Element.call(this, options);\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(\"#000\");\n }\n }\n\n if (Element) Rect.__proto__ = Element;\n Rect.prototype = Object.create(Element && Element.prototype);\n Rect.prototype.constructor = Rect;\n\n Rect.prototype._bbox = function _bbox(matrix) {\n return this._geometry.bbox(matrix);\n };\n\n Rect.prototype.rawBBox = function rawBBox() {\n return this._geometry.bbox();\n };\n\n Rect.prototype._containsPoint = function _containsPoint(point) {\n return this._geometry.containsPoint(point);\n };\n\n Rect.prototype._isOnPath = function _isOnPath(point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n\n return Rect;\n}(Element);\n\nRect.prototype.nodeType = \"Rect\";\nPaintable.extend(Rect.prototype);\nMeasurable.extend(Rect.prototype);\ndefineGeometryAccessors(Rect.prototype, [\"geometry\"]);\nexport default Rect;","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\nexport default function defineOptionsAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = optionsAccessor(names[i]);\n }\n}","import defineOptionsAccessors from '../accessors/define-options-accessors';\nimport OptionsStore from '../core/options-store';\nimport ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\nimport { defined } from '../util';\n\nvar GradientStop = function (Class) {\n function GradientStop(offset, color, opacity) {\n Class.call(this);\n this.options = new OptionsStore({\n offset: offset,\n color: color,\n opacity: defined(opacity) ? opacity : 1\n });\n this.options.addObserver(this);\n }\n\n if (Class) GradientStop.__proto__ = Class;\n GradientStop.prototype = Object.create(Class && Class.prototype);\n GradientStop.prototype.constructor = GradientStop;\n\n GradientStop.create = function create(arg) {\n if (defined(arg)) {\n var stop;\n\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}(Class);\n\ndefineOptionsAccessors(GradientStop.prototype, [\"offset\", \"color\", \"opacity\"]);\nObserversMixin.extend(GradientStop.prototype);\nexport default GradientStop;","import ObserversMixin from '../mixins/observers-mixin';\nimport StopsArray from './stops-array';\nimport GradientStop from './gradient-stop';\nimport { Class } from '../common';\nimport { defined, definitionId } from '../util';\n\nvar Gradient = function (Class) {\n function Gradient(options) {\n if (options === void 0) options = {};\n Class.call(this);\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 (Class) Gradient.__proto__ = Class;\n Gradient.prototype = Object.create(Class && Class.prototype);\n Gradient.prototype.constructor = Gradient;\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 var result = [];\n\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\n if (index >= 0) {\n this.stops.splice(index, 1);\n }\n };\n\n return Gradient;\n}(Class);\n\nGradient.prototype.nodeType = \"Gradient\";\nObserversMixin.extend(Gradient.prototype);\nObject.assign(Gradient.prototype, {\n optionsChange: function optionsChange(e) {\n this.trigger(\"optionsChange\", {\n field: \"gradient\" + (e ? \".\" + e.field : \"\"),\n value: this\n });\n },\n geometryChange: function geometryChange() {\n this.optionsChange();\n }\n});\nexport default Gradient;","import definePointAccessors from '../accessors/define-point-accessors';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\n\nvar LinearGradient = function (Gradient) {\n function LinearGradient(options) {\n if (options === void 0) options = {};\n Gradient.call(this, options);\n this.start(options.start || new Point());\n this.end(options.end || new Point(1, 0));\n }\n\n if (Gradient) LinearGradient.__proto__ = Gradient;\n LinearGradient.prototype = Object.create(Gradient && Gradient.prototype);\n LinearGradient.prototype.constructor = LinearGradient;\n return LinearGradient;\n}(Gradient);\n\ndefinePointAccessors(LinearGradient.prototype, [\"start\", \"end\"]);\nexport default LinearGradient;","import definePointAccessors from '../accessors/define-point-accessors';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\nimport { defined } from '../util';\n\nvar RadialGradient = function (Gradient) {\n function RadialGradient(options) {\n if (options === void 0) options = {};\n Gradient.call(this, options);\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 (Gradient) RadialGradient.__proto__ = Gradient;\n RadialGradient.prototype = Object.create(Gradient && Gradient.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}(Gradient);\n\ndefinePointAccessors(RadialGradient.prototype, [\"center\"]);\nexport default RadialGradient;","export function swing(position) {\n return 0.5 - Math.cos(position * Math.PI) / 2;\n}\nexport function linear(position) {\n return position;\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) * Math.sin((Number(position) - s) * (1.1 * Math.PI) / p) + diff + start;\n}","import { Class } from '../common';\n\nvar AnimationFactory = function (Class) {\n function AnimationFactory() {\n Class.call(this);\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 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\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 return AnimationFactory;\n}(Class);\n\nAnimationFactory.current = new AnimationFactory();\nexport default AnimationFactory;","import * as easingFunctions from './easing-functions';\nimport { limitValue } from '../util';\nimport { animationFrame, Class } from '../common';\nimport AnimationFactory from './animation-factory';\n\nvar now = Date.now || function () {\n return new Date().getTime();\n};\n\nvar Animation = function (Class) {\n function Animation(element, options) {\n Class.call(this);\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 Animation.prototype.setup = function setup() {};\n\n Animation.prototype.step = function step() {};\n\n Animation.prototype.play = function play() {\n var this$1 = this;\n var options = this.options;\n var duration = options.duration;\n var delay = options.delay;\n 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 loop() {\n if (this$1._stopped) {\n return;\n }\n\n var wallTime = now();\n var time = limitValue(wallTime - start, 0, duration);\n var position = time / duration;\n var easingPosition = easing(position, time, 0, 1, duration);\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 return Animation;\n}(Class);\n\nAnimation.prototype.options = {\n duration: 500,\n easing: \"swing\"\n};\n\nAnimation.create = function (type, element, options) {\n return AnimationFactory.current.create(type, element, options);\n};\n\nexport default Animation;","export default function limitValue(value, min, max) {\n return Math.max(Math.min(value, max), min);\n}","import { Class, logToConsole } from '../common';\n\nvar SurfaceFactory = function (Class) {\n function SurfaceFactory() {\n Class.call(this);\n this._items = [];\n }\n\n if (Class) SurfaceFactory.__proto__ = Class;\n SurfaceFactory.prototype = Object.create(Class && Class.prototype);\n SurfaceFactory.prototype.constructor = SurfaceFactory;\n\n SurfaceFactory.prototype.register = function register(name, type, order) {\n var items = this._items;\n var first = items[0];\n var entry = {\n name: name,\n type: type,\n order: order\n };\n\n if (!first || order < first.order) {\n items.unshift(entry);\n } else {\n items.push(entry);\n }\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\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(\"Warning: Unable to create Kendo UI Drawing Surface. Possible causes:\\n\" + \"- The browser does not support SVG and Canvas. User agent: \" + navigator.userAgent);\n };\n\n return SurfaceFactory;\n}(Class);\n\nSurfaceFactory.current = new SurfaceFactory();\nexport default SurfaceFactory;","/* eslint-disable no-console */\nexport default function logToConsole(message) {\n var console = window.console;\n\n if (typeof console != \"undefined\" && console.log) {\n console.log(message);\n }\n}","import Group from '../shapes/group';\nimport Point from '../geometry/point';\nimport SurfaceFactory from './surface-factory';\nimport { Observable } from '../common';\nimport { eventElement, eventCoordinates, elementStyles, elementSize, elementOffset } from '../util';\nvar events = [\"click\", \"mouseenter\", \"mouseleave\", \"mousemove\", \"resize\"];\n\nvar Surface = function (Observable) {\n function Surface(element, options) {\n Observable.call(this);\n this.options = Object.assign({}, options);\n this.element = element;\n this.element._kendoExportVisual = this.exportVisual.bind(this);\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 this._visual = new Group();\n elementSize(element, this.options);\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 var domNode = eventElement(e);\n var node;\n\n while (!node && domNode) {\n node = domNode._kendoNode;\n\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 this.currentSize(size);\n\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\n this._resize(size, force);\n\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 return function (e) {\n var node = this$1.eventTarget(e);\n\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 ref = elementStyles(element, [\"paddingLeft\", \"paddingTop\"]);\n var paddingLeft = ref.paddingLeft;\n var paddingTop = ref.paddingTop;\n var ref$1 = elementOffset(element);\n var left = ref$1.left;\n var top = ref$1.top;\n return {\n left: left + parseInt(paddingLeft, 10),\n top: top + parseInt(paddingTop, 10)\n };\n };\n\n Surface.prototype._surfacePoint = function _surfacePoint(e) {\n var offset = this._elementOffset();\n\n var coord = eventCoordinates(e);\n var x = coord.x - offset.left;\n var y = coord.y - offset.top;\n return new Point(x, y);\n };\n\n return Surface;\n}(Observable);\n\nSurface.create = function (element, options) {\n return SurfaceFactory.current.create(element, options);\n};\n\nSurface.support = {};\nexport default Surface;","export default function eventElement(e) {\n if (e === void 0) e = {};\n return e.touch ? e.touch.initialTouch : e.target;\n}","export default function elementOffset(element) {\n var box = element.getBoundingClientRect();\n var documentElement = document.documentElement;\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}","import defined from './defined';\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}","import { Class } from '../common';\n\nvar BaseNode = function (Class) {\n function BaseNode(srcElement) {\n Class.call(this);\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\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 var end = index + count;\n\n for (var i = index; i < end; i++) {\n this$1.childNodes[i].removeSelf();\n }\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';\nexport default function renderAttr(name, value) {\n return defined(value) && value !== null ? \" \" + name + \"=\\\"\" + value + \"\\\" \" : \"\";\n}","import renderAttr from './render-attribute';\nexport default function renderAllAttr(attrs) {\n var output = \"\";\n\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';\nexport default function renderStyle(attrs) {\n var output = \"\";\n\n for (var i = 0; i < attrs.length; i++) {\n var value = attrs[i][1];\n\n if (defined(value)) {\n output += attrs[i][0] + \":\" + value + \";\";\n }\n }\n\n if (output !== \"\") {\n return output;\n }\n}","var NODE_MAP = {};\nexport default NODE_MAP;","var SVG_NS = \"http://www.w3.org/2000/svg\";\nvar NONE = \"none\";\nexport { SVG_NS, NONE };","import { SVG_NS } from '../constants';\n\nvar renderSVG = function renderSVG(container, svg) {\n container.innerHTML = svg;\n};\n\nif (typeof document !== \"undefined\") {\n var testFragment = \"\";\n var testContainer = document.createElement(\"div\");\n var hasParser = typeof DOMParser !== \"undefined\";\n testContainer.innerHTML = testFragment;\n\n if (hasParser && testContainer.firstChild.namespaceURI !== SVG_NS) {\n renderSVG = function renderSVG(container, svg) {\n var parser = new DOMParser();\n var chartDoc = parser.parseFromString(svg, \"text/xml\");\n var importedDoc = document.adoptNode(chartDoc.documentElement);\n container.innerHTML = \"\";\n container.appendChild(importedDoc);\n };\n }\n}\n\nexport default renderSVG;","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 } from '../common';\nimport { defined } from '../util';\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\");\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\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 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 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\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, \"\" + this.render() + \"\");\n var element = container.firstChild.firstChild;\n\n if (element) {\n if (defined(pos)) {\n domElement.insertBefore(element, domElement.childNodes[pos] || null);\n } else {\n domElement.appendChild(element);\n }\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 var nodes = this.childNodes;\n\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\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\n if (parentNode) {\n parentNode.removeChild(this.element);\n }\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.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.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.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\n if (transform) {\n attrs.push([TRANSFORM, \"matrix(\" + transform.matrix().toString(6) + \")\"]);\n }\n\n return attrs;\n };\n\n Node.prototype.renderTransform = function renderTransform() {\n return renderAllAttr(this.mapTransform(this.srcElement.transform()));\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.createDefinitions = function createDefinitions() {\n var srcElement = this.srcElement;\n var definitions = this.definitions;\n\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\n if (definition && isDefinition(field, definition)) {\n definitions[field] = definition;\n hasDefinitions = true;\n }\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\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 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 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;","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 \"\";\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 [[\"stop-color\", srcElement.color()], [\"stop-opacity\", srcElement.opacity()]];\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 this.id = srcElement.id;\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 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\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 \"\" + this.renderChildren() + \"\";\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 = [[\"x1\", start.x], [\"y1\", start.y], [\"x2\", end.x], [\"y2\", end.y], this.mapSpace()];\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 \"\" + this.renderChildren() + \"\";\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 = [[\"cx\", center.x], [\"cy\", center.y], [\"r\", radius], this.mapSpace()];\n return attrs;\n };\n\n return RadialGradientNode;\n}(GradientNode);\n\nexport default RadialGradientNode;","import Node from './node';\n\nvar ClipNode = function (Node) {\n function ClipNode(srcElement) {\n Node.call(this);\n this.srcElement = srcElement;\n this.id = srcElement.id;\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.template = function template() {\n return \"\" + this.renderChildren() + \"\";\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 Node from './node';\nimport ClipNode from './clip-node';\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 \"\" + this.renderChildren() + \"\";\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\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 }\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\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\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\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 BaseSurface from '../core/surface';\nimport SurfaceFactory from '../core/surface-factory';\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';\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\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 this._root = new RootNode(Object.assign({\n rtl: elementStyles(element, 'direction').direction === RTL\n }, this.options));\n renderSVG(this.element, this._template());\n this._rootElement = this.element.firstElementChild;\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 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 Surface.prototype.destroy = function destroy() {\n if (this._root) {\n this._root.destroy();\n\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\n this._rootElement.setAttribute(\"viewBox\", viewBox);\n };\n\n Surface.prototype.draw = function draw(element) {\n BaseSurface.prototype.draw.call(this, element);\n\n this._root.load([element]);\n };\n\n Surface.prototype.clear = function clear() {\n BaseSurface.prototype.clear.call(this);\n\n this._root.clear();\n };\n\n Surface.prototype.svg = function svg() {\n return \"\" + 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 wrap.transform(transform().translate(-offset.x, -offset.y));\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() {\n return \"\" + this._root.render() + \"\";\n };\n\n return Surface;\n}(BaseSurface);\n\nSurface.prototype.type = \"svg\";\n\nif (typeof document !== \"undefined\" && document.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\")) {\n BaseSurface.support.svg = true;\n SurfaceFactory.current.register(\"svg\", Surface, 10);\n}\n\nexport default Surface;","import Node from './node';\nimport NODE_MAP from './node-map';\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 \"\" + this.renderChildren() + \"\";\n };\n\n GroupNode.prototype.optionsChange = function optionsChange(e) {\n if (e.field === \"transform\") {\n this.transformChange(e.value);\n }\n\n Node.prototype.optionsChange.call(this, e);\n };\n\n return GroupNode;\n}(Node);\n\nNODE_MAP.Group = GroupNode;\nexport default GroupNode;","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};\nvar SOLID = \"solid\";\nvar BUTT = \"butt\";\nexport { DASH_ARRAYS, SOLID, BUTT };","import Node from './node';\nimport { defined, isTransparent } from '../util';\nimport { DASH_ARRAYS, SOLID, BUTT } from '../core/constants';\nimport { NONE } from './constants';\nimport renderAllAttr from './utils/render-all-attributes';\nimport renderAttr from './utils/render-attribute';\nimport NODE_MAP from './node-map';\nvar ATTRIBUTE_MAP = {\n \"fill.opacity\": \"fill-opacity\",\n \"stroke.color\": \"stroke\",\n \"stroke.width\": \"stroke-width\",\n \"stroke.opacity\": \"stroke-opacity\"\n};\nvar SPACE = \" \";\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\n break;\n\n case \"fill.color\":\n this.allAttr(this.mapFill({\n color: e.value\n }));\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\n break;\n\n case \"transform\":\n this.transformChange(e.value);\n break;\n\n default:\n var name = ATTRIBUTE_MAP[e.field];\n\n if (name) {\n this.attr(name, e.value);\n }\n\n break;\n }\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.printPath(this.srcElement);\n };\n\n PathNode.prototype.printPath = function printPath(path) {\n var this$1 = this;\n var segments = path.segments;\n var length = segments.length;\n\n if (length > 0) {\n var parts = [];\n var output, currentType;\n\n for (var i = 1; i < length; i++) {\n var segmentType = this$1.segmentType(segments[i - 1], segments[i]);\n\n if (segmentType !== currentType) {\n currentType = segmentType;\n parts.push(segmentType);\n }\n\n if (segmentType === \"L\") {\n parts.push(this$1.printPoints(segments[i].anchor()));\n } else {\n parts.push(this$1.printPoints(segments[i - 1].controlOut(), segments[i].controlIn(), segments[i].anchor()));\n }\n }\n\n output = \"M\" + this.printPoints(segments[0].anchor()) + SPACE + parts.join(SPACE);\n\n if (path.options.closed) {\n output += \"Z\";\n }\n\n return output;\n }\n };\n\n PathNode.prototype.printPoints = function printPoints() {\n var points = arguments;\n var length = points.length;\n var result = [];\n\n for (var i = 0; i < length; i++) {\n result.push(points[i].toString(3));\n }\n\n return result.join(\" \");\n };\n\n PathNode.prototype.segmentType = function segmentType(segmentStart, segmentEnd) {\n return segmentStart.controlOut() && segmentEnd.controlIn() ? \"C\" : \"L\";\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(this.mapStroke(this.srcElement.options.stroke));\n };\n\n PathNode.prototype.renderDashType = function renderDashType(stroke) {\n var dashType = stroke.dashType;\n var width = stroke.width;\n 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 return dashType && dashType !== \"solid\" ? BUTT : lineCap;\n };\n\n PathNode.prototype.mapFill = function mapFill(fill) {\n var attrs = [];\n\n if (!(fill && fill.nodeType === \"Gradient\")) {\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(this.mapFill(this.srcElement.options.fill));\n };\n\n PathNode.prototype.template = function template() {\n return \"\";\n };\n\n return PathNode;\n}(Node);\n\nNODE_MAP.Path = PathNode;\nexport default PathNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\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.printPath(this.srcElement.toPath());\n };\n\n return ArcNode;\n}(PathNode);\n\nNODE_MAP.Arc = ArcNode;\nexport default ArcNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\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 \"\";\n };\n\n return CircleNode;\n}(PathNode);\n\nNODE_MAP.Circle = CircleNode;\nexport default CircleNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\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.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.template = function template() {\n return \"\";\n };\n\n return RectNode;\n}(PathNode);\n\nNODE_MAP.Rect = RectNode;\nexport default RectNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\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 return [[\"x\", tl.x], [\"y\", tl.y], [\"width\", rect.width() + \"px\"], [\"height\", rect.height() + \"px\"]];\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 \"\" + \"\";\n };\n\n return ImageNode;\n}(PathNode);\n\nNODE_MAP.Image = ImageNode;\nexport default ImageNode;","import PathNode from './path-node';\nimport renderStyle from './utils/render-style';\nimport renderAttr from './utils/render-attribute';\nimport NODE_MAP from './node-map';\nimport { htmlEncode, support } from '../common';\nimport { normalizeText } from '../text-metrics';\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 return text.replace(ENTITY_REGEX, function (match) {\n element.innerHTML = match;\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 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 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.template = function template() {\n return \"\" + this.renderContent() + \"\";\n };\n\n return TextNode;\n}(PathNode);\n\nNODE_MAP.Text = TextNode;\nexport default TextNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\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 var this$1 = this;\n var paths = this.srcElement.paths;\n\n if (paths.length > 0) {\n var result = [];\n\n for (var i = 0; i < paths.length; i++) {\n result.push(this$1.printPath(paths[i]));\n }\n\n return result.join(\" \");\n }\n };\n\n return MultiPathNode;\n}(PathNode);\n\nNODE_MAP.MultiPath = MultiPathNode;\nexport default MultiPathNode;","var NODE_MAP = {};\nexport default NODE_MAP;","export 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 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, controlIn.x, controlIn.y, 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}","import BaseNode from '../core/base-node';\nimport NODE_MAP from './node-map';\nimport renderPath from './utils/render-path';\nimport { defined } from '../util';\n\nvar Node = function (BaseNode) {\n function Node(srcElement) {\n BaseNode.call(this, srcElement);\n\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\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 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 renderPath(ctx, this.clip);\n ctx.clip();\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\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 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 this.invalidate();\n };\n\n Node.prototype.setOpacity = function setOpacity(ctx) {\n if (this.srcElement) {\n var opacity = this.srcElement.opacity();\n\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\n if (opactity && ctx.globalAlpha) {\n opactity *= ctx.globalAlpha;\n }\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';\nimport NODE_MAP from './node-map';\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.renderTo = function renderTo(ctx) {\n if (!this.visible()) {\n return;\n }\n\n ctx.save();\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n var childNodes = this.childNodes;\n\n for (var i = 0; i < childNodes.length; i++) {\n var child = childNodes[i];\n\n if (child.visible()) {\n child.renderTo(ctx);\n }\n }\n\n ctx.restore();\n };\n\n return GroupNode;\n}(Node);\n\nTraversable.extend(GroupNode.prototype, \"childNodes\");\nNODE_MAP.Group = GroupNode;\nexport default GroupNode;","import GroupNode from './group-node';\nimport Traversable from '../mixins/traversable';\nimport { animationFrame, throttle } from '../common';\nvar FRAME_DELAY = 1000 / 60;\n\nvar RootNode = function (GroupNode) {\n function RootNode(canvas, size) {\n GroupNode.call(this);\n this.canvas = canvas;\n this.size = size;\n this.ctx = canvas.getContext(\"2d\");\n\n var invalidateHandler = this._invalidate.bind(this);\n\n this.invalidate = throttle(function () {\n animationFrame(invalidateHandler);\n }, FRAME_DELAY);\n }\n\n if (GroupNode) RootNode.__proto__ = GroupNode;\n RootNode.prototype = Object.create(GroupNode && GroupNode.prototype);\n RootNode.prototype.constructor = RootNode;\n\n RootNode.prototype.destroy = function destroy() {\n GroupNode.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\n this._invalidate();\n };\n\n RootNode.prototype._rescale = function _rescale() {\n var ref = this;\n var canvas = ref.canvas;\n var size = ref.size;\n var scale = 1;\n\n if (typeof window.devicePixelRatio === 'number') {\n scale = window.devicePixelRatio;\n }\n\n canvas.width = size.width * scale;\n canvas.height = size.height * scale;\n this.ctx.scale(scale, scale);\n };\n\n RootNode.prototype._invalidate = function _invalidate() {\n if (!this.ctx) {\n return;\n }\n\n this._rescale();\n\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.renderTo(this.ctx);\n };\n\n return RootNode;\n}(GroupNode);\n\nTraversable.extend(RootNode.prototype, \"childNodes\");\nexport default RootNode;","import { Class } from '../common';\n\nvar QuadRoot = function (Class) {\n function QuadRoot() {\n Class.call(this);\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\n for (var idx = 0; idx < length; idx++) {\n if (shapes[idx].bbox.containsPoint(point)) {\n result.push(shapes[idx].shape);\n }\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 && 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\n for (var idx = 0; idx < length; idx++) {\n append(result, children[idx].pointShapes(point));\n }\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\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 children.push(new QuadNode(new Rect([rect.origin.x, rect.origin.y], [halfWidth, halfHeight])), new QuadNode(new Rect([center.x, rect.origin.y], [halfWidth, halfHeight])), new QuadNode(new Rect([rect.origin.x, center.y], [halfWidth, halfHeight])), new QuadNode(new Rect([center.x, center.y], [halfWidth, halfHeight])));\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';\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 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 var rootElements = this.rootElements;\n\n for (var idx = 0; idx < rootElements.length; idx++) {\n this$1.remove(rootElements[idx]);\n }\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 result.sort(zIndexComparer);\n\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\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 append(this.rootElements, elementsArray);\n\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 var element;\n\n while (elements.length > 0) {\n element = elements.pop();\n element.addObserver(this$1);\n\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\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\n if (!rootMap[x]) {\n rootMap[x] = {};\n }\n\n if (!rootMap[x][y]) {\n rootMap[x][y] = new QuadNode(new Rect([x * ROOT_SIZE, y * ROOT_SIZE], [ROOT_SIZE, ROOT_SIZE]));\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 element.removeObserver(this);\n\n if (element.nodeType === \"Group\") {\n var children = element.children;\n\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\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\n for (var x = Math.floor(rect.origin.x / ROOT_SIZE); x <= bottomX; x++) {\n sectors[0].push(x);\n }\n\n for (var y = Math.floor(rect.origin.y / ROOT_SIZE); y <= bottomY; y++) {\n sectors[1].push(y);\n }\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\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 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\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\n delete this._current;\n }\n};\n\nexport default SurfaceCursor;","import BaseSurface from '../core/surface';\nimport SurfaceFactory from '../core/surface-factory';\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\nvar Surface = function (BaseSurface) {\n function Surface(element, options) {\n BaseSurface.call(this, element, options);\n this.element.innerHTML = this._template(this);\n var canvas = this.element.firstElementChild;\n var size = elementSize(element);\n canvas.width = size.width;\n canvas.height = size.height;\n this._rootElement = canvas;\n this._root = new RootNode(canvas, size);\n this._mouseTrackHandler = this._trackMouse.bind(this);\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 Surface.prototype.destroy = function destroy() {\n BaseSurface.prototype.destroy.call(this);\n\n if (this._root) {\n this._root.destroy();\n\n this._root = null;\n }\n\n if (this._searchTree) {\n this._searchTree.clear();\n\n delete this._searchTree;\n }\n\n if (this._cursor) {\n this._cursor.destroy();\n\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\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\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\n var shape = this._searchTree.pointShape(point);\n\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 root.traverse(function (childNode) {\n if (childNode.loading) {\n loadingStates.push(childNode.loading);\n }\n });\n var promise = createPromise();\n\n var resolveDataURL = function resolveDataURL() {\n root._invalidate();\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 return promise;\n };\n\n Surface.prototype.suspendTracking = function suspendTracking() {\n BaseSurface.prototype.suspendTracking.call(this);\n\n if (this._searchTree) {\n this._searchTree.clear();\n\n delete this._searchTree;\n }\n };\n\n Surface.prototype.resumeTracking = function resumeTracking() {\n BaseSurface.prototype.resumeTracking.call(this);\n\n if (!this._searchTree) {\n this._searchTree = new ShapesQuadTree();\n var childNodes = this._root.childNodes;\n var rootElements = [];\n\n for (var idx = 0; idx < childNodes.length; idx++) {\n rootElements.push(childNodes[idx].srcElement);\n }\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 this._root.size = this._size;\n\n this._root.invalidate();\n };\n\n Surface.prototype._template = function _template() {\n return \"\";\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\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 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 return Surface;\n}(BaseSurface);\n\nSurface.prototype.type = \"canvas\";\n\nif (typeof document !== \"undefined\" && document.createElement(\"canvas\").getContext) {\n BaseSurface.support.canvas = true;\n SurfaceFactory.current.register(\"canvas\", Surface, 20);\n}\n\nexport default Surface;","export default function promiseAll(promises) {\n return Promise.all(promises);\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 } from '../core/constants';\nimport renderPath from './utils/render-path';\nimport NODE_MAP from './node-map';\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 color.a *= stop.opacity();\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 this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n ctx.beginPath();\n this.renderPoints(ctx, this.srcElement);\n this.setLineDash(ctx);\n this.setLineCap(ctx);\n this.setLineJoin(ctx);\n this.setFill(ctx);\n this.setStroke(ctx);\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 (!isTransparent(fill.color)) {\n ctx.fillStyle = fill.color;\n ctx.save();\n this.globalAlpha(ctx, fill.opacity);\n ctx.fill();\n ctx.restore();\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 ctx.save();\n\n if (!fill.userSpace()) {\n ctx.transform(bbox.width(), 0, 0, bbox.height(), bbox.origin.x, bbox.origin.y);\n }\n\n ctx.fillStyle = gradient;\n ctx.fill();\n ctx.restore();\n };\n\n PathNode.prototype.setStroke = function setStroke(ctx) {\n var stroke = this.srcElement.options.stroke;\n\n if (stroke && !isTransparent(stroke.color) && stroke.width > 0) {\n ctx.strokeStyle = stroke.color;\n ctx.lineWidth = valueOrDefault(stroke.width, 1);\n ctx.save();\n this.globalAlpha(ctx, stroke.opacity);\n ctx.stroke();\n ctx.restore();\n return true;\n }\n };\n\n PathNode.prototype.dashType = function dashType() {\n var stroke = this.srcElement.options.stroke;\n\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\n if (dashType && dashType !== SOLID) {\n var dashArray = DASH_ARRAYS[dashType];\n\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\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\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\nNODE_MAP.Path = PathNode;\nexport default PathNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\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\nNODE_MAP.Arc = ArcNode;\nexport default ArcNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\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 ctx.arc(center.x, center.y, radius, 0, Math.PI * 2);\n };\n\n return CircleNode;\n}(PathNode);\n\nNODE_MAP.Circle = CircleNode;\nexport default CircleNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\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 ref = this.srcElement.geometry();\n var origin = ref.origin;\n var size = ref.size;\n ctx.rect(origin.x, origin.y, size.width, size.height);\n };\n\n return RectNode;\n}(PathNode);\n\nNODE_MAP.Rect = RectNode;\nexport default RectNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\nimport { createPromise } from '../util';\n\nvar ImageNode = function (PathNode) {\n function ImageNode(srcElement, cors) {\n PathNode.call(this, srcElement);\n this.onLoad = this.onLoad.bind(this);\n this.onError = this.onError.bind(this);\n this.loading = createPromise();\n var img = this.img = new Image();\n\n if (cors && !/^data:/i.test(srcElement.src())) {\n img.crossOrigin = cors;\n }\n\n img.src = srcElement.src();\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 this.setTransform(ctx);\n this.setClip(ctx);\n this.drawImage(ctx);\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(\"Unable to load image '\" + this.img.src + \"'. Check for connectivity and verify CORS headers.\"));\n };\n\n ImageNode.prototype.drawImage = function drawImage(ctx) {\n var rect = this.srcElement.rect();\n var topLeft = rect.topLeft();\n ctx.drawImage(this.img, topLeft.x, topLeft.y, rect.width(), rect.height());\n };\n\n return ImageNode;\n}(PathNode);\n\nNODE_MAP.Image = ImageNode;\nexport default ImageNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\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 ctx.save();\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n ctx.beginPath();\n ctx.font = text.options.font;\n ctx.textAlign = 'left';\n\n if (this.setFill(ctx)) {\n ctx.fillText(text.content(), pos.x, pos.y + size.baseline);\n }\n\n if (this.setStroke(ctx)) {\n this.setLineDash(ctx);\n ctx.strokeText(text.content(), pos.x, pos.y + size.baseline);\n }\n\n ctx.restore();\n };\n\n return TextNode;\n}(PathNode);\n\nNODE_MAP.Text = TextNode;\nexport default TextNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\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\n for (var i = 0; i < paths.length; i++) {\n renderPath(ctx, paths[i]);\n }\n };\n\n return MultiPathNode;\n}(PathNode);\n\nNODE_MAP.MultiPath = MultiPathNode;\nexport default MultiPathNode;","import { support } from '../common';\n/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n// XXX: remove this junk (assume `true`) when we no longer have to support IE < 10\n// IE 9 (at least compatibility) reports having Uint8Array but the request response does not contain ArrayBuffer which results in missing table head error\n\nvar HAS_TYPED_ARRAYS = typeof Uint8Array !== 'undefined' && support.browser && (!support.browser.msie || support.browser.version > 9);\n\nvar BASE64 = function () {\n var keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n return {\n decode: function decode(str) {\n var input = str.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\"),\n i = 0,\n n = input.length,\n output = [];\n\n while (i < n) {\n var enc1 = keyStr.indexOf(input.charAt(i++));\n var enc2 = keyStr.indexOf(input.charAt(i++));\n var enc3 = keyStr.indexOf(input.charAt(i++));\n var enc4 = keyStr.indexOf(input.charAt(i++));\n var chr1 = enc1 << 2 | enc2 >>> 4;\n var chr2 = (enc2 & 15) << 4 | enc3 >>> 2;\n var chr3 = (enc3 & 3) << 6 | enc4;\n output.push(chr1);\n\n if (enc3 != 64) {\n output.push(chr2);\n }\n\n if (enc4 != 64) {\n output.push(chr3);\n }\n }\n\n return output;\n },\n encode: function encode(bytes) {\n var i = 0,\n n = bytes.length;\n var output = \"\";\n\n while (i < n) {\n var chr1 = bytes[i++];\n var chr2 = bytes[i++];\n var chr3 = bytes[i++];\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 (i - n == 2) {\n enc3 = enc4 = 64;\n } else if (i - n == 1) {\n enc4 = 64;\n }\n\n output += keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4);\n }\n\n return output;\n }\n };\n}();\n\nfunction BinaryStream(data) {\n var _offset = 0,\n _length = 0;\n\n if (data == null) {\n data = HAS_TYPED_ARRAYS ? new Uint8Array(256) : [];\n } else {\n _length = data.length;\n }\n\n var ensure = HAS_TYPED_ARRAYS ? function (len) {\n if (len >= data.length) {\n var tmp = new Uint8Array(Math.max(len + 256, data.length * 2));\n tmp.set(data, 0);\n data = tmp;\n }\n } : function () {};\n var get = HAS_TYPED_ARRAYS ? function () {\n return new Uint8Array(data.buffer, 0, _length);\n } : function () {\n return data;\n };\n var write = HAS_TYPED_ARRAYS ? function (bytes) {\n if (typeof bytes == \"string\") {\n return writeString(bytes);\n }\n\n var len = bytes.length;\n ensure(_offset + len);\n data.set(bytes, _offset);\n _offset += len;\n\n if (_offset > _length) {\n _length = _offset;\n }\n } : function (bytes) {\n if (typeof bytes == \"string\") {\n return writeString(bytes);\n }\n\n for (var i = 0; i < bytes.length; ++i) {\n writeByte(bytes[i]);\n }\n };\n var slice = HAS_TYPED_ARRAYS ? function (start, length) {\n if (data.buffer.slice) {\n return new Uint8Array(data.buffer.slice(start, start + length));\n } else {\n // IE10\n var x = new Uint8Array(length);\n x.set(new Uint8Array(data.buffer, start, length));\n return x;\n }\n } : function (start, length) {\n return data.slice(start, start + length);\n };\n\n function eof() {\n return _offset >= _length;\n }\n\n function readByte() {\n return _offset < _length ? data[_offset++] : 0;\n }\n\n function writeByte(b) {\n ensure(_offset);\n data[_offset++] = b & 0xFF;\n\n if (_offset > _length) {\n _length = _offset;\n }\n }\n\n function readShort() {\n return readByte() << 8 | readByte();\n }\n\n function writeShort(w) {\n writeByte(w >> 8);\n writeByte(w);\n }\n\n function readShort_() {\n var w = readShort();\n return w >= 0x8000 ? w - 0x10000 : w;\n }\n\n function writeShort_(w) {\n writeShort(w < 0 ? w + 0x10000 : w);\n }\n\n function readLong() {\n return readShort() * 0x10000 + readShort();\n }\n\n function writeLong(w) {\n writeShort(w >>> 16 & 0xFFFF);\n writeShort(w & 0xFFFF);\n }\n\n function readLong_() {\n var w = readLong();\n return w >= 0x80000000 ? w - 0x100000000 : w;\n }\n\n function writeLong_(w) {\n writeLong(w < 0 ? w + 0x100000000 : w);\n }\n\n function readFixed() {\n return readLong() / 0x10000;\n }\n\n function writeFixed(f) {\n writeLong(Math.round(f * 0x10000));\n }\n\n function readFixed_() {\n return readLong_() / 0x10000;\n }\n\n function writeFixed_(f) {\n writeLong_(Math.round(f * 0x10000));\n }\n\n function read(len) {\n return times(len, readByte);\n }\n\n function readString(len) {\n return String.fromCharCode.apply(String, read(len));\n }\n\n function writeString(str) {\n for (var i = 0; i < str.length; ++i) {\n writeByte(str.charCodeAt(i));\n }\n }\n\n function times(n, reader) {\n for (var ret = new Array(n), i = 0; i < n; ++i) {\n ret[i] = reader();\n }\n\n return ret;\n }\n\n var stream = {\n eof: eof,\n readByte: readByte,\n writeByte: writeByte,\n readShort: readShort,\n writeShort: writeShort,\n readLong: readLong,\n writeLong: writeLong,\n readFixed: readFixed,\n writeFixed: writeFixed,\n // signed numbers.\n readShort_: readShort_,\n writeShort_: writeShort_,\n readLong_: readLong_,\n writeLong_: writeLong_,\n readFixed_: readFixed_,\n writeFixed_: writeFixed_,\n read: read,\n write: write,\n readString: readString,\n writeString: writeString,\n times: times,\n get: get,\n slice: slice,\n offset: function offset(pos) {\n if (pos != null) {\n _offset = pos;\n return stream;\n }\n\n return _offset;\n },\n skip: function skip(nbytes) {\n _offset += nbytes;\n },\n toString: function toString() {\n throw new Error(\"FIX CALLER. BinaryStream is no longer convertible to string!\");\n },\n length: function length() {\n return _length;\n },\n saveExcursion: function saveExcursion(f) {\n var pos = _offset;\n\n try {\n return f();\n } finally {\n _offset = pos;\n }\n },\n writeBase64: function writeBase64(base64) {\n if (window.atob) {\n writeString(window.atob(base64));\n } else {\n write(BASE64.decode(base64));\n }\n },\n base64: function base64() {\n return BASE64.encode(get());\n }\n };\n return stream;\n}\n\nfunction ucs2decode(string) {\n var output = [],\n counter = 0,\n length = string.length,\n value,\n extra;\n\n while (counter < length) {\n value = string.charCodeAt(counter++);\n\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // high surrogate, and there is a next character\n extra = string.charCodeAt(counter++);\n\n if ((extra & 0xFC00) == 0xDC00) {\n // low surrogate\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // unmatched surrogate; only append this code unit, in case the next\n // code unit is the high surrogate of a surrogate pair\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n\n return output;\n}\n\nfunction ucs2encode(array) {\n return array.map(function (value) {\n var output = \"\";\n\n if (value > 0xFFFF) {\n value -= 0x10000;\n output += String.fromCharCode(value >>> 10 & 0x3FF | 0xD800);\n value = 0xDC00 | value & 0x3FF;\n }\n\n output += String.fromCharCode(value);\n return output;\n }).join(\"\");\n}\n\nfunction atobUint8Array(base64) {\n var data = window.atob(base64);\n var result = new Uint8Array(data.length);\n\n for (var idx = 0; idx < data.length; idx++) {\n result[idx] = data.charCodeAt(idx);\n }\n\n return result;\n}\n\nfunction createUint8Array(data) {\n var result = new Uint8Array(data.length);\n\n for (var idx = 0; idx < data.length; idx++) {\n result[idx] = data[idx];\n }\n\n return result;\n}\n\nfunction base64ToUint8Array(base64) {\n if (window.atob) {\n return atobUint8Array(base64);\n }\n\n return createUint8Array(BASE64.decode(base64));\n}\n\nexport { HAS_TYPED_ARRAYS, BASE64, BinaryStream, ucs2decode, ucs2encode, base64ToUint8Array };","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n/*****************************************************************************\\\n *\n * The code in this file, although written from scratch, is influenced by the\n * TrueType parser/encoder in PDFKit -- http://pdfkit.org/ (a CoffeeScript\n * library for producing PDF files).\n *\n * PDFKit is (c) Devon Govett 2014 and released under the MIT License.\n *\n\\*****************************************************************************/\nimport { BinaryStream, ucs2decode } from \"./utils\";\n\nfunction hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction sortedKeys(obj) {\n return Object.keys(obj).sort(function (a, b) {\n return a - b;\n }).map(parseFloat);\n} ///\n\n\nfunction Directory(data) {\n this.raw = data;\n this.scalerType = data.readLong();\n this.tableCount = data.readShort();\n this.searchRange = data.readShort();\n this.entrySelector = data.readShort();\n this.rangeShift = data.readShort();\n var tables = this.tables = {};\n\n for (var i = 0; i < this.tableCount; ++i) {\n var entry = {\n tag: data.readString(4),\n checksum: data.readLong(),\n offset: data.readLong(),\n length: data.readLong()\n };\n tables[entry.tag] = entry;\n }\n}\n\nDirectory.prototype = {\n readTable: function readTable(name, Ctor) {\n var def = this.tables[name];\n\n if (!def) {\n throw new Error(\"Table \" + name + \" not found in directory\");\n }\n\n return this[name] = def.table = new Ctor(this, def);\n },\n render: function render(tables) {\n var this$1 = this;\n var tableCount = Object.keys(tables).length;\n var maxpow2 = Math.pow(2, Math.floor(Math.log(tableCount) / Math.LN2));\n var searchRange = maxpow2 * 16;\n var entrySelector = Math.floor(Math.log(maxpow2) / Math.LN2);\n var rangeShift = tableCount * 16 - searchRange;\n var out = BinaryStream();\n out.writeLong(this.scalerType);\n out.writeShort(tableCount);\n out.writeShort(searchRange);\n out.writeShort(entrySelector);\n out.writeShort(rangeShift);\n var directoryLength = tableCount * 16;\n var offset = out.offset() + directoryLength;\n var headOffset = null;\n var tableData = BinaryStream();\n\n for (var tag in tables) {\n if (hasOwnProperty(tables, tag)) {\n var table = tables[tag];\n out.writeString(tag);\n out.writeLong(this$1.checksum(table));\n out.writeLong(offset);\n out.writeLong(table.length);\n tableData.write(table);\n\n if (tag == \"head\") {\n headOffset = offset;\n }\n\n offset += table.length;\n\n while (offset % 4) {\n tableData.writeByte(0);\n offset++;\n }\n }\n }\n\n out.write(tableData.get());\n var sum = this.checksum(out.get());\n var adjustment = 0xB1B0AFBA - sum;\n out.offset(headOffset + 8);\n out.writeLong(adjustment);\n return out.get();\n },\n checksum: function checksum(data) {\n data = BinaryStream(data);\n var sum = 0;\n\n while (!data.eof()) {\n sum += data.readLong();\n }\n\n return sum & 0xFFFFFFFF;\n }\n};\n\nfunction deftable(methods) {\n function Ctor(file, def) {\n this.definition = def;\n this.length = def.length;\n this.offset = def.offset;\n this.file = file;\n this.rawData = file.raw;\n this.parse(file.raw);\n }\n\n Ctor.prototype.raw = function () {\n return this.rawData.slice(this.offset, this.length);\n };\n\n for (var i in methods) {\n if (hasOwnProperty(methods, i)) {\n Ctor[i] = Ctor.prototype[i] = methods[i];\n }\n }\n\n return Ctor;\n}\n\nvar HeadTable = deftable({\n parse: function parse(data) {\n data.offset(this.offset);\n this.version = data.readLong();\n this.revision = data.readLong();\n this.checkSumAdjustment = data.readLong();\n this.magicNumber = data.readLong();\n this.flags = data.readShort();\n this.unitsPerEm = data.readShort();\n this.created = data.read(8);\n this.modified = data.read(8);\n this.xMin = data.readShort_();\n this.yMin = data.readShort_();\n this.xMax = data.readShort_();\n this.yMax = data.readShort_();\n this.macStyle = data.readShort();\n this.lowestRecPPEM = data.readShort();\n this.fontDirectionHint = data.readShort_();\n this.indexToLocFormat = data.readShort_();\n this.glyphDataFormat = data.readShort_();\n },\n render: function render(indexToLocFormat) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeLong(this.revision);\n out.writeLong(0); // checksum adjustment; shall be computed later\n\n out.writeLong(this.magicNumber);\n out.writeShort(this.flags);\n out.writeShort(this.unitsPerEm);\n out.write(this.created);\n out.write(this.modified);\n out.writeShort_(this.xMin);\n out.writeShort_(this.yMin);\n out.writeShort_(this.xMax);\n out.writeShort_(this.yMax);\n out.writeShort(this.macStyle);\n out.writeShort(this.lowestRecPPEM);\n out.writeShort_(this.fontDirectionHint);\n out.writeShort_(indexToLocFormat); // this will depend on the `loca` table\n\n out.writeShort_(this.glyphDataFormat);\n return out.get();\n }\n});\nvar LocaTable = deftable({\n parse: function parse(data) {\n data.offset(this.offset);\n var format = this.file.head.indexToLocFormat;\n\n if (format === 0) {\n this.offsets = data.times(this.length / 2, function () {\n return 2 * data.readShort();\n });\n } else {\n this.offsets = data.times(this.length / 4, data.readLong);\n }\n },\n offsetOf: function offsetOf(id) {\n return this.offsets[id];\n },\n lengthOf: function lengthOf(id) {\n return this.offsets[id + 1] - this.offsets[id];\n },\n render: function render(offsets) {\n var out = BinaryStream();\n var needsLongFormat = offsets[offsets.length - 1] > 0xFFFF;\n\n for (var i = 0; i < offsets.length; ++i) {\n if (needsLongFormat) {\n out.writeLong(offsets[i]);\n } else {\n out.writeShort(offsets[i] / 2);\n }\n }\n\n return {\n format: needsLongFormat ? 1 : 0,\n table: out.get()\n };\n }\n});\nvar HheaTable = deftable({\n parse: function parse(data) {\n data.offset(this.offset);\n this.version = data.readLong();\n this.ascent = data.readShort_();\n this.descent = data.readShort_();\n this.lineGap = data.readShort_();\n this.advanceWidthMax = data.readShort();\n this.minLeftSideBearing = data.readShort_();\n this.minRightSideBearing = data.readShort_();\n this.xMaxExtent = data.readShort_();\n this.caretSlopeRise = data.readShort_();\n this.caretSlopeRun = data.readShort_();\n this.caretOffset = data.readShort_();\n data.skip(4 * 2); // reserved\n\n this.metricDataFormat = data.readShort_();\n this.numOfLongHorMetrics = data.readShort();\n },\n render: function render(ids) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeShort_(this.ascent);\n out.writeShort_(this.descent);\n out.writeShort_(this.lineGap);\n out.writeShort(this.advanceWidthMax);\n out.writeShort_(this.minLeftSideBearing);\n out.writeShort_(this.minRightSideBearing);\n out.writeShort_(this.xMaxExtent);\n out.writeShort_(this.caretSlopeRise);\n out.writeShort_(this.caretSlopeRun);\n out.writeShort_(this.caretOffset);\n out.write([0, 0, 0, 0, 0, 0, 0, 0]); // reserved bytes\n\n out.writeShort_(this.metricDataFormat);\n out.writeShort(ids.length);\n return out.get();\n }\n});\nvar MaxpTable = deftable({\n parse: function parse(data) {\n data.offset(this.offset);\n this.version = data.readLong();\n this.numGlyphs = data.readShort();\n this.maxPoints = data.readShort();\n this.maxContours = data.readShort();\n this.maxComponentPoints = data.readShort();\n this.maxComponentContours = data.readShort();\n this.maxZones = data.readShort();\n this.maxTwilightPoints = data.readShort();\n this.maxStorage = data.readShort();\n this.maxFunctionDefs = data.readShort();\n this.maxInstructionDefs = data.readShort();\n this.maxStackElements = data.readShort();\n this.maxSizeOfInstructions = data.readShort();\n this.maxComponentElements = data.readShort();\n this.maxComponentDepth = data.readShort();\n },\n render: function render(glyphIds) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeShort(glyphIds.length);\n out.writeShort(this.maxPoints);\n out.writeShort(this.maxContours);\n out.writeShort(this.maxComponentPoints);\n out.writeShort(this.maxComponentContours);\n out.writeShort(this.maxZones);\n out.writeShort(this.maxTwilightPoints);\n out.writeShort(this.maxStorage);\n out.writeShort(this.maxFunctionDefs);\n out.writeShort(this.maxInstructionDefs);\n out.writeShort(this.maxStackElements);\n out.writeShort(this.maxSizeOfInstructions);\n out.writeShort(this.maxComponentElements);\n out.writeShort(this.maxComponentDepth);\n return out.get();\n }\n});\nvar HmtxTable = deftable({\n parse: function parse(data) {\n data.offset(this.offset);\n var dir = this.file,\n hhea = dir.hhea;\n this.metrics = data.times(hhea.numOfLongHorMetrics, function () {\n return {\n advance: data.readShort(),\n lsb: data.readShort_()\n };\n });\n var lsbCount = dir.maxp.numGlyphs - dir.hhea.numOfLongHorMetrics;\n this.leftSideBearings = data.times(lsbCount, data.readShort_);\n },\n forGlyph: function forGlyph(id) {\n var metrics = this.metrics;\n var n = metrics.length;\n\n if (id < n) {\n return metrics[id];\n }\n\n return {\n advance: metrics[n - 1].advance,\n lsb: this.leftSideBearings[id - n]\n };\n },\n render: function render(glyphIds) {\n var this$1 = this;\n var out = BinaryStream();\n\n for (var i = 0; i < glyphIds.length; ++i) {\n var m = this$1.forGlyph(glyphIds[i]);\n out.writeShort(m.advance);\n out.writeShort_(m.lsb);\n }\n\n return out.get();\n }\n});\n\nvar GlyfTable = function () {\n function SimpleGlyph(raw) {\n this.raw = raw;\n }\n\n SimpleGlyph.prototype = {\n compound: false,\n render: function render() {\n return this.raw.get();\n }\n };\n var ARG_1_AND_2_ARE_WORDS = 0x0001;\n var WE_HAVE_A_SCALE = 0x0008;\n var MORE_COMPONENTS = 0x0020;\n var WE_HAVE_AN_X_AND_Y_SCALE = 0x0040;\n var WE_HAVE_A_TWO_BY_TWO = 0x0080; //var WE_HAVE_INSTRUCTIONS = 0x0100;\n\n function CompoundGlyph(data) {\n this.raw = data;\n var ids = this.glyphIds = [];\n var offsets = this.idOffsets = [];\n\n while (true) {\n // eslint-disable-line no-constant-condition\n var flags = data.readShort();\n offsets.push(data.offset());\n ids.push(data.readShort());\n\n if (!(flags & MORE_COMPONENTS)) {\n break;\n }\n\n data.skip(flags & ARG_1_AND_2_ARE_WORDS ? 4 : 2);\n\n if (flags & WE_HAVE_A_TWO_BY_TWO) {\n data.skip(8);\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n data.skip(4);\n } else if (flags & WE_HAVE_A_SCALE) {\n data.skip(2);\n }\n }\n }\n\n CompoundGlyph.prototype = {\n compound: true,\n render: function render(old2new) {\n var this$1 = this;\n var out = BinaryStream(this.raw.get());\n\n for (var i = 0; i < this.glyphIds.length; ++i) {\n var id = this$1.glyphIds[i];\n out.offset(this$1.idOffsets[i]);\n out.writeShort(old2new[id]);\n }\n\n return out.get();\n }\n };\n return deftable({\n parse: function parse() {\n this.cache = {};\n },\n glyphFor: function glyphFor(id) {\n var cache = this.cache;\n\n if (hasOwnProperty(cache, id)) {\n return cache[id];\n }\n\n var loca = this.file.loca;\n var length = loca.lengthOf(id);\n\n if (length === 0) {\n return cache[id] = null;\n }\n\n var data = this.rawData;\n var offset = this.offset + loca.offsetOf(id);\n var raw = BinaryStream(data.slice(offset, length));\n var numberOfContours = raw.readShort_();\n var xMin = raw.readShort_();\n var yMin = raw.readShort_();\n var xMax = raw.readShort_();\n var yMax = raw.readShort_();\n var glyph = cache[id] = numberOfContours == -1 ? new CompoundGlyph(raw) : new SimpleGlyph(raw);\n glyph.numberOfContours = numberOfContours;\n glyph.xMin = xMin;\n glyph.yMin = yMin;\n glyph.xMax = xMax;\n glyph.yMax = yMax;\n return glyph;\n },\n render: function render(glyphs, oldIds, old2new) {\n var out = BinaryStream(),\n offsets = [];\n\n for (var i = 0; i < oldIds.length; ++i) {\n var id = oldIds[i];\n var glyph = glyphs[id];\n offsets.push(out.offset());\n\n if (glyph) {\n out.write(glyph.render(old2new));\n }\n }\n\n offsets.push(out.offset());\n return {\n table: out.get(),\n offsets: offsets\n };\n }\n });\n}();\n\nvar NameTable = function () {\n function NameEntry(text, entry) {\n this.text = text;\n this.length = text.length;\n this.platformID = entry.platformID;\n this.platformSpecificID = entry.platformSpecificID;\n this.languageID = entry.languageID;\n this.nameID = entry.nameID;\n }\n\n return deftable({\n parse: function parse(data) {\n data.offset(this.offset);\n data.readShort(); // format\n\n var count = data.readShort();\n var stringOffset = this.offset + data.readShort();\n var nameRecords = data.times(count, function () {\n return {\n platformID: data.readShort(),\n platformSpecificID: data.readShort(),\n languageID: data.readShort(),\n nameID: data.readShort(),\n length: data.readShort(),\n offset: data.readShort() + stringOffset\n };\n });\n var strings = this.strings = {};\n\n for (var i = 0; i < nameRecords.length; ++i) {\n var rec = nameRecords[i];\n data.offset(rec.offset);\n var text = data.readString(rec.length);\n\n if (!strings[rec.nameID]) {\n strings[rec.nameID] = [];\n }\n\n strings[rec.nameID].push(new NameEntry(text, rec));\n }\n\n this.postscriptEntry = strings[6][0];\n this.postscriptName = this.postscriptEntry.text.replace(/[^\\x20-\\x7F]/g, \"\");\n },\n render: function render(psName) {\n var this$1 = this;\n var strings = this.strings;\n var strCount = 0;\n\n for (var i in strings) {\n if (hasOwnProperty(strings, i)) {\n strCount += strings[i].length;\n }\n }\n\n var out = BinaryStream();\n var strTable = BinaryStream();\n out.writeShort(0); // format\n\n out.writeShort(strCount);\n out.writeShort(6 + 12 * strCount); // stringOffset\n\n for (i in strings) {\n if (hasOwnProperty(strings, i)) {\n var list = i == 6 ? [new NameEntry(psName, this$1.postscriptEntry)] : strings[i];\n\n for (var j = 0; j < list.length; ++j) {\n var str = list[j];\n out.writeShort(str.platformID);\n out.writeShort(str.platformSpecificID);\n out.writeShort(str.languageID);\n out.writeShort(str.nameID);\n out.writeShort(str.length);\n out.writeShort(strTable.offset());\n strTable.writeString(str.text);\n }\n }\n }\n\n out.write(strTable.get());\n return out.get();\n }\n });\n}();\n\nvar PostTable = function () {\n var POSTSCRIPT_GLYPHS = \".notdef .null nonmarkingreturn space exclam quotedbl numbersign dollar percent ampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash zero one two three four five six seven eight nine colon semicolon less equal greater question at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bracketleft backslash bracketright asciicircum underscore grave a b c d e f g h i j k l m n o p q r s t u v w x y z braceleft bar braceright asciitilde Adieresis Aring Ccedilla Eacute Ntilde Odieresis Udieresis aacute agrave acircumflex adieresis atilde aring ccedilla eacute egrave ecircumflex edieresis iacute igrave icircumflex idieresis ntilde oacute ograve ocircumflex odieresis otilde uacute ugrave ucircumflex udieresis dagger degree cent sterling section bullet paragraph germandbls registered copyright trademark acute dieresis notequal AE Oslash infinity plusminus lessequal greaterequal yen mu partialdiff summation product pi integral ordfeminine ordmasculine Omega ae oslash questiondown exclamdown logicalnot radical florin approxequal Delta guillemotleft guillemotright ellipsis nonbreakingspace Agrave Atilde Otilde OE oe endash emdash quotedblleft quotedblright quoteleft quoteright divide lozenge ydieresis Ydieresis fraction currency guilsinglleft guilsinglright fi fl daggerdbl periodcentered quotesinglbase quotedblbase perthousand Acircumflex Ecircumflex Aacute Edieresis Egrave Iacute Icircumflex Idieresis Igrave Oacute Ocircumflex apple Ograve Uacute Ucircumflex Ugrave dotlessi circumflex tilde macron breve dotaccent ring cedilla hungarumlaut ogonek caron Lslash lslash Scaron scaron Zcaron zcaron brokenbar Eth eth Yacute yacute Thorn thorn minus multiply onesuperior twosuperior threesuperior onehalf onequarter threequarters franc Gbreve gbreve Idotaccent Scedilla scedilla Cacute cacute Ccaron ccaron dcroat\".split(/\\s+/g);\n return deftable({\n parse: function parse(data) {\n var this$1 = this;\n data.offset(this.offset);\n this.format = data.readLong();\n this.italicAngle = data.readFixed_();\n this.underlinePosition = data.readShort_();\n this.underlineThickness = data.readShort_();\n this.isFixedPitch = data.readLong();\n this.minMemType42 = data.readLong();\n this.maxMemType42 = data.readLong();\n this.minMemType1 = data.readLong();\n this.maxMemType1 = data.readLong();\n var numberOfGlyphs;\n\n switch (this.format) {\n case 0x00010000:\n case 0x00030000:\n break;\n\n case 0x00020000:\n numberOfGlyphs = data.readShort();\n this.glyphNameIndex = data.times(numberOfGlyphs, data.readShort);\n this.names = [];\n var limit = this.offset + this.length;\n\n while (data.offset() < limit) {\n this$1.names.push(data.readString(data.readByte()));\n }\n\n break;\n\n case 0x00025000:\n numberOfGlyphs = data.readShort();\n this.offsets = data.read(numberOfGlyphs);\n break;\n\n case 0x00040000:\n this.map = data.times(this.file.maxp.numGlyphs, data.readShort);\n break;\n }\n },\n glyphFor: function glyphFor(code) {\n switch (this.format) {\n case 0x00010000:\n return POSTSCRIPT_GLYPHS[code] || \".notdef\";\n\n case 0x00020000:\n var index = this.glyphNameIndex[code];\n\n if (index < POSTSCRIPT_GLYPHS.length) {\n return POSTSCRIPT_GLYPHS[index];\n }\n\n return this.names[index - POSTSCRIPT_GLYPHS.length] || \".notdef\";\n\n case 0x00025000:\n case 0x00030000:\n return \".notdef\";\n\n case 0x00040000:\n return this.map[code] || 0xFFFF;\n }\n },\n render: function render(mapping) {\n var this$1 = this;\n\n if (this.format == 0x00030000) {\n return this.raw();\n } // keep original header, but set format to 2.0\n\n\n var out = BinaryStream(this.rawData.slice(this.offset, 32));\n out.writeLong(0x00020000);\n out.offset(32);\n var indexes = [];\n var strings = [];\n\n for (var i = 0; i < mapping.length; ++i) {\n var id = mapping[i];\n var post = this$1.glyphFor(id);\n var index = POSTSCRIPT_GLYPHS.indexOf(post);\n\n if (index >= 0) {\n indexes.push(index);\n } else {\n indexes.push(POSTSCRIPT_GLYPHS.length + strings.length);\n strings.push(post);\n }\n }\n\n out.writeShort(mapping.length);\n\n for (i = 0; i < indexes.length; ++i) {\n out.writeShort(indexes[i]);\n }\n\n for (i = 0; i < strings.length; ++i) {\n out.writeByte(strings[i].length);\n out.writeString(strings[i]);\n }\n\n return out.get();\n }\n });\n}();\n\nvar CmapTable = function () {\n function CmapEntry(data, offset, codeMap) {\n var self = this;\n self.platformID = data.readShort();\n self.platformSpecificID = data.readShort();\n self.offset = offset + data.readLong();\n data.saveExcursion(function () {\n var code;\n data.offset(self.offset);\n self.format = data.readShort();\n\n switch (self.format) {\n case 0:\n self.length = data.readShort();\n self.language = data.readShort();\n\n for (var i = 0; i < 256; ++i) {\n codeMap[i] = data.readByte();\n }\n\n break;\n\n case 4:\n self.length = data.readShort();\n self.language = data.readShort();\n var segCount = data.readShort() / 2;\n data.skip(6); // searchRange, entrySelector, rangeShift\n\n var endCode = data.times(segCount, data.readShort);\n data.skip(2); // reserved pad\n\n var startCode = data.times(segCount, data.readShort);\n var idDelta = data.times(segCount, data.readShort_);\n var idRangeOffset = data.times(segCount, data.readShort);\n var count = (self.length + self.offset - data.offset()) / 2;\n var glyphIds = data.times(count, data.readShort);\n\n for (i = 0; i < segCount; ++i) {\n var start = startCode[i],\n end = endCode[i];\n\n for (code = start; code <= end; ++code) {\n var glyphId;\n\n if (idRangeOffset[i] === 0) {\n glyphId = code + idDelta[i];\n } else {\n ///\n // When non-zero, idRangeOffset contains for each segment the byte offset of the Glyph ID\n // into the glyphIds table, from the *current* `i` cell of idRangeOffset. In other words,\n // this offset spans from the first into the second array. This works, because the arrays\n // are consecutive in the TTF file:\n //\n // [ ...idRangeOffset... ][ ...glyphIds... ]\n // ...... 48 ...... .... ID ....\n // ^----- 48 bytes -----^\n //\n // (but I can't stop wondering why is it not just a plain index, possibly incremented by 1\n // so that we can have that special `zero` value.)\n //\n // The elements of idRangeOffset are even numbers, because both arrays contain 16-bit words,\n // yet the offset is in bytes. That is why we divide it by 2. Then we subtract the\n // remaining segments (segCount-i), and add the code-start offset, to which we need to add\n // the corresponding delta to get the actual glyph ID.\n ///\n var index = idRangeOffset[i] / 2 - (segCount - i) + (code - start);\n glyphId = glyphIds[index] || 0;\n\n if (glyphId !== 0) {\n glyphId += idDelta[i];\n }\n }\n\n codeMap[code] = glyphId & 0xFFFF;\n }\n }\n\n break;\n\n case 6:\n self.length = data.readShort();\n self.language = data.readShort();\n code = data.readShort();\n var length = data.readShort();\n\n while (length-- > 0) {\n codeMap[code++] = data.readShort();\n }\n\n break;\n\n case 12:\n data.readShort(); // reserved\n\n self.length = data.readLong();\n self.language = data.readLong();\n var ngroups = data.readLong();\n\n while (ngroups-- > 0) {\n code = data.readLong();\n var endCharCode = data.readLong();\n var glyphCode = data.readLong();\n\n while (code <= endCharCode) {\n codeMap[code++] = glyphCode++;\n }\n }\n\n break;\n\n default:\n if (window.console) {\n window.console.error(\"Unhandled CMAP format: \" + self.format);\n }\n\n }\n });\n }\n\n function renderCharmap(ncid2ogid, ogid2ngid) {\n var codes = sortedKeys(ncid2ogid);\n var startCodes = [];\n var endCodes = [];\n var last = null;\n var diff = null;\n\n function new_gid(charcode) {\n return ogid2ngid[ncid2ogid[charcode]];\n }\n\n for (var i = 0; i < codes.length; ++i) {\n var code = codes[i];\n var gid = new_gid(code);\n var delta = gid - code;\n\n if (last == null || delta !== diff) {\n if (last) {\n endCodes.push(last);\n }\n\n startCodes.push(code);\n diff = delta;\n }\n\n last = code;\n }\n\n if (last) {\n endCodes.push(last);\n }\n\n endCodes.push(0xFFFF);\n startCodes.push(0xFFFF);\n var segCount = startCodes.length;\n var segCountX2 = segCount * 2;\n var searchRange = 2 * Math.pow(2, Math.floor(Math.log(segCount) / Math.LN2));\n var entrySelector = Math.log(searchRange / 2) / Math.LN2;\n var rangeShift = segCountX2 - searchRange;\n var deltas = [];\n var rangeOffsets = [];\n var glyphIds = [];\n\n for (i = 0; i < segCount; ++i) {\n var startCode = startCodes[i];\n var endCode = endCodes[i];\n\n if (startCode == 0xFFFF) {\n deltas.push(0);\n rangeOffsets.push(0);\n break;\n }\n\n var startGlyph = new_gid(startCode);\n\n if (startCode - startGlyph >= 0x8000) {\n deltas.push(0);\n rangeOffsets.push(2 * (glyphIds.length + segCount - i));\n\n for (var j = startCode; j <= endCode; ++j) {\n glyphIds.push(new_gid(j));\n }\n } else {\n deltas.push(startGlyph - startCode);\n rangeOffsets.push(0);\n }\n }\n\n var out = BinaryStream();\n out.writeShort(3); // platformID\n\n out.writeShort(1); // platformSpecificID\n\n out.writeLong(12); // offset\n\n out.writeShort(4); // format\n\n out.writeShort(16 + segCount * 8 + glyphIds.length * 2); // length\n\n out.writeShort(0); // language\n\n out.writeShort(segCountX2);\n out.writeShort(searchRange);\n out.writeShort(entrySelector);\n out.writeShort(rangeShift);\n endCodes.forEach(out.writeShort);\n out.writeShort(0); // reserved pad\n\n startCodes.forEach(out.writeShort);\n deltas.forEach(out.writeShort_);\n rangeOffsets.forEach(out.writeShort);\n glyphIds.forEach(out.writeShort);\n return out.get();\n }\n\n return deftable({\n parse: function parse(data) {\n var self = this;\n var offset = self.offset;\n data.offset(offset);\n self.codeMap = {};\n self.version = data.readShort();\n var tableCount = data.readShort();\n self.tables = data.times(tableCount, function () {\n return new CmapEntry(data, offset, self.codeMap);\n });\n },\n render: function render(ncid2ogid, ogid2ngid) {\n var out = BinaryStream();\n out.writeShort(0); // version\n\n out.writeShort(1); // tableCount\n\n out.write(renderCharmap(ncid2ogid, ogid2ngid));\n return out.get();\n }\n });\n}();\n\nvar OS2Table = deftable({\n parse: function parse(data) {\n data.offset(this.offset);\n this.version = data.readShort();\n this.averageCharWidth = data.readShort_();\n this.weightClass = data.readShort();\n this.widthClass = data.readShort();\n this.type = data.readShort();\n this.ySubscriptXSize = data.readShort_();\n this.ySubscriptYSize = data.readShort_();\n this.ySubscriptXOffset = data.readShort_();\n this.ySubscriptYOffset = data.readShort_();\n this.ySuperscriptXSize = data.readShort_();\n this.ySuperscriptYSize = data.readShort_();\n this.ySuperscriptXOffset = data.readShort_();\n this.ySuperscriptYOffset = data.readShort_();\n this.yStrikeoutSize = data.readShort_();\n this.yStrikeoutPosition = data.readShort_();\n this.familyClass = data.readShort_();\n this.panose = data.times(10, data.readByte);\n this.charRange = data.times(4, data.readLong);\n this.vendorID = data.readString(4);\n this.selection = data.readShort();\n this.firstCharIndex = data.readShort();\n this.lastCharIndex = data.readShort();\n\n if (this.version > 0) {\n this.ascent = data.readShort_();\n this.descent = data.readShort_();\n this.lineGap = data.readShort_();\n this.winAscent = data.readShort();\n this.winDescent = data.readShort();\n this.codePageRange = data.times(2, data.readLong);\n\n if (this.version > 1) {\n this.xHeight = data.readShort();\n this.capHeight = data.readShort();\n this.defaultChar = data.readShort();\n this.breakChar = data.readShort();\n this.maxContext = data.readShort();\n }\n }\n },\n render: function render() {\n return this.raw();\n }\n});\nvar subsetTag = 100000;\n\nfunction nextSubsetTag() {\n var ret = \"\",\n n = String(subsetTag);\n\n for (var i = 0; i < n.length; ++i) {\n ret += String.fromCharCode(n.charCodeAt(i) - 48 + 65);\n }\n\n ++subsetTag;\n return ret;\n}\n\nfunction Subfont(font) {\n this.font = font;\n this.subset = {};\n this.unicodes = {};\n this.ogid2ngid = {\n 0: 0\n };\n this.ngid2ogid = {\n 0: 0\n };\n this.ncid2ogid = {};\n this.next = this.firstChar = 1;\n this.nextGid = 1;\n this.psName = nextSubsetTag() + \"+\" + this.font.psName;\n}\n\nSubfont.prototype = {\n use: function use(ch) {\n var self = this;\n\n if (typeof ch == \"string\") {\n return ucs2decode(ch).reduce(function (ret, code) {\n return ret + String.fromCharCode(self.use(code));\n }, \"\");\n }\n\n var code = self.unicodes[ch];\n\n if (!code) {\n code = self.next++;\n self.subset[code] = ch;\n self.unicodes[ch] = code; // generate new GID (glyph ID) and maintain newGID ->\n // oldGID and back mappings\n\n var old_gid = self.font.cmap.codeMap[ch];\n\n if (old_gid) {\n self.ncid2ogid[code] = old_gid;\n\n if (self.ogid2ngid[old_gid] == null) {\n var new_gid = self.nextGid++;\n self.ogid2ngid[old_gid] = new_gid;\n self.ngid2ogid[new_gid] = old_gid;\n }\n }\n }\n\n return code;\n },\n encodeText: function encodeText(text) {\n return this.use(text);\n },\n glyphIds: function glyphIds() {\n return sortedKeys(this.ogid2ngid);\n },\n glyphsFor: function glyphsFor(glyphIds, result) {\n var this$1 = this;\n\n if (!result) {\n result = {};\n }\n\n for (var i = 0; i < glyphIds.length; ++i) {\n var id = glyphIds[i];\n\n if (!result[id]) {\n var glyph = result[id] = this$1.font.glyf.glyphFor(id);\n\n if (glyph && glyph.compound) {\n this$1.glyphsFor(glyph.glyphIds, result);\n }\n }\n }\n\n return result;\n },\n render: function render() {\n var this$1 = this;\n var glyphs = this.glyphsFor(this.glyphIds()); // add missing sub-glyphs\n\n for (var old_gid in glyphs) {\n if (hasOwnProperty(glyphs, old_gid)) {\n old_gid = parseInt(old_gid, 10);\n\n if (this$1.ogid2ngid[old_gid] == null) {\n var new_gid = this$1.nextGid++;\n this$1.ogid2ngid[old_gid] = new_gid;\n this$1.ngid2ogid[new_gid] = old_gid;\n }\n }\n } // must obtain old_gid_ids in an order matching sorted\n // new_gid_ids\n\n\n var new_gid_ids = sortedKeys(this.ngid2ogid);\n var old_gid_ids = new_gid_ids.map(function (id) {\n return this.ngid2ogid[id];\n }, this);\n var font = this.font;\n var glyf = font.glyf.render(glyphs, old_gid_ids, this.ogid2ngid);\n var loca = font.loca.render(glyf.offsets);\n this.lastChar = this.next - 1;\n var tables = {\n \"cmap\": CmapTable.render(this.ncid2ogid, this.ogid2ngid),\n \"glyf\": glyf.table,\n \"loca\": loca.table,\n \"hmtx\": font.hmtx.render(old_gid_ids),\n \"hhea\": font.hhea.render(old_gid_ids),\n \"maxp\": font.maxp.render(old_gid_ids),\n \"post\": font.post.render(old_gid_ids),\n \"name\": font.name.render(this.psName),\n \"head\": font.head.render(loca.format),\n \"OS/2\": font.os2.render()\n };\n return this.font.directory.render(tables);\n },\n cidToGidMap: function cidToGidMap() {\n var this$1 = this;\n var out = BinaryStream(),\n len = 0;\n\n for (var cid = this.firstChar; cid < this.next; ++cid) {\n while (len < cid) {\n out.writeShort(0);\n len++;\n }\n\n var old_gid = this$1.ncid2ogid[cid];\n\n if (old_gid) {\n var new_gid = this$1.ogid2ngid[old_gid];\n out.writeShort(new_gid);\n } else {\n out.writeShort(0);\n }\n\n len++;\n }\n\n return out.get();\n }\n};\n\nfunction TTFFont(rawData, name) {\n var self = this;\n var data = self.contents = BinaryStream(rawData);\n\n if (data.readString(4) == \"ttcf\") {\n var offset;\n\n var parse = function parse() {\n data.offset(offset);\n self.parse();\n };\n\n if (!name) {\n throw new Error(\"Must specify a name for TTC files\");\n }\n\n data.readLong(); // version\n\n var numFonts = data.readLong();\n\n for (var i = 0; i < numFonts; ++i) {\n offset = data.readLong();\n data.saveExcursion(parse);\n\n if (self.psName == name) {\n return;\n }\n }\n\n throw new Error(\"Font \" + name + \" not found in collection\");\n } else {\n data.offset(0);\n self.parse();\n }\n}\n\nTTFFont.prototype = {\n parse: function parse() {\n var dir = this.directory = new Directory(this.contents);\n this.head = dir.readTable(\"head\", HeadTable);\n this.loca = dir.readTable(\"loca\", LocaTable);\n this.hhea = dir.readTable(\"hhea\", HheaTable);\n this.maxp = dir.readTable(\"maxp\", MaxpTable);\n this.hmtx = dir.readTable(\"hmtx\", HmtxTable);\n this.glyf = dir.readTable(\"glyf\", GlyfTable);\n this.name = dir.readTable(\"name\", NameTable);\n this.post = dir.readTable(\"post\", PostTable);\n this.cmap = dir.readTable(\"cmap\", CmapTable);\n this.os2 = dir.readTable(\"OS/2\", OS2Table);\n this.psName = this.name.postscriptName;\n this.ascent = this.os2.ascent || this.hhea.ascent;\n this.descent = this.os2.descent || this.hhea.descent;\n this.lineGap = this.os2.lineGap || this.hhea.lineGap;\n this.scale = 1000 / this.head.unitsPerEm;\n },\n widthOfGlyph: function widthOfGlyph(glyph) {\n return this.hmtx.forGlyph(glyph).advance * this.scale;\n },\n makeSubset: function makeSubset() {\n return new Subfont(this);\n }\n};\nexport { TTFFont };","import { deflate as pakoDeflate } from 'pako/dist/pako_deflate';\nexport var deflate = pakoDeflate;\nexport function supportsDeflate() {\n return true;\n}","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\nimport { BinaryStream, ucs2encode, base64ToUint8Array, HAS_TYPED_ARRAYS } from \"./utils\";\nimport { support } from '../common';\nimport { TTFFont } from \"./ttf\";\nimport { deflate, supportsDeflate } from './deflate';\nvar browser = support.browser;\nvar NL = \"\\n\";\nvar RESOURCE_COUNTER = 0;\nvar PAPER_SIZE = {\n a0: [2383.94, 3370.39],\n a1: [1683.78, 2383.94],\n a2: [1190.55, 1683.78],\n a3: [841.89, 1190.55],\n a4: [595.28, 841.89],\n a5: [419.53, 595.28],\n a6: [297.64, 419.53],\n a7: [209.76, 297.64],\n a8: [147.40, 209.76],\n a9: [104.88, 147.40],\n a10: [73.70, 104.88],\n b0: [2834.65, 4008.19],\n b1: [2004.09, 2834.65],\n b2: [1417.32, 2004.09],\n b3: [1000.63, 1417.32],\n b4: [708.66, 1000.63],\n b5: [498.90, 708.66],\n b6: [354.33, 498.90],\n b7: [249.45, 354.33],\n b8: [175.75, 249.45],\n b9: [124.72, 175.75],\n b10: [87.87, 124.72],\n c0: [2599.37, 3676.54],\n c1: [1836.85, 2599.37],\n c2: [1298.27, 1836.85],\n c3: [918.43, 1298.27],\n c4: [649.13, 918.43],\n c5: [459.21, 649.13],\n c6: [323.15, 459.21],\n c7: [229.61, 323.15],\n c8: [161.57, 229.61],\n c9: [113.39, 161.57],\n c10: [79.37, 113.39],\n executive: [521.86, 756.00],\n folio: [612.00, 936.00],\n legal: [612.00, 1008.00],\n letter: [612.00, 792.00],\n tabloid: [792.00, 1224.00]\n};\n\nfunction makeOutput() {\n var indentLevel = 0,\n output = BinaryStream();\n\n function out() {\n var arguments$1 = arguments;\n\n for (var i = 0; i < arguments.length; ++i) {\n var x = arguments$1[i];\n\n if (x === undefined) {\n throw new Error(\"Cannot output undefined to PDF\");\n } else if (x instanceof PDFValue) {\n x.beforeRender(out);\n x.render(out);\n } else if (isArray(x)) {\n renderArray(x, out);\n } else if (isDate(x)) {\n renderDate(x, out);\n } else if (typeof x == \"number\") {\n if (isNaN(x)) {\n throw new Error(\"Cannot output NaN to PDF\");\n } // make sure it doesn't end up in exponent notation\n\n\n var num = x.toFixed(7);\n\n if (num.indexOf(\".\") >= 0) {\n num = num.replace(/\\.?0+$/, \"\");\n }\n\n if (num == \"-0\") {\n num = \"0\";\n }\n\n output.writeString(num);\n } else if (/string|boolean/.test(typeof x)) {\n output.writeString(String(x));\n } else if (typeof x.get == \"function\") {\n output.write(x.get());\n } else if (typeof x == \"object\") {\n if (!x) {\n output.writeString(\"null\");\n } else {\n out(new PDFDictionary(x));\n }\n }\n }\n }\n\n out.writeData = function (data) {\n output.write(data);\n };\n\n out.withIndent = function (f) {\n ++indentLevel;\n f(out);\n --indentLevel;\n };\n\n out.indent = function () {\n out(NL, pad(\"\", indentLevel * 2, \" \"));\n out.apply(null, arguments);\n };\n\n out.offset = function () {\n return output.offset();\n };\n\n out.toString = function () {\n throw new Error(\"FIX CALLER\");\n };\n\n out.get = function () {\n return output.get();\n };\n\n out.stream = function () {\n return output;\n };\n\n return out;\n}\n\nfunction wrapObject(value, id) {\n var beforeRender = value.beforeRender;\n var renderValue = value.render;\n\n value.beforeRender = function () {};\n\n value.render = function (out) {\n out(id, \" 0 R\");\n };\n\n value.renderFull = function (out) {\n value._offset = out.offset();\n out(id, \" 0 obj \");\n beforeRender.call(value, out);\n renderValue.call(value, out);\n out(\" endobj\");\n };\n}\n\nfunction getPaperOptions(getOption) {\n if (typeof getOption != \"function\") {\n var options = getOption;\n\n getOption = function getOption(key, def) {\n return key in options ? options[key] : def;\n };\n }\n\n var paperSize = getOption(\"paperSize\", PAPER_SIZE.a4);\n\n if (!paperSize) {\n return {};\n }\n\n if (typeof paperSize == \"string\") {\n paperSize = PAPER_SIZE[paperSize.toLowerCase()];\n\n if (paperSize == null) {\n throw new Error(\"Unknown paper size\");\n }\n }\n\n paperSize[0] = unitsToPoints(paperSize[0]);\n paperSize[1] = unitsToPoints(paperSize[1]);\n\n if (getOption(\"landscape\", false)) {\n paperSize = [Math.max(paperSize[0], paperSize[1]), Math.min(paperSize[0], paperSize[1])];\n }\n\n var margin = getOption(\"margin\");\n\n if (margin) {\n if (typeof margin == \"string\" || typeof margin == \"number\") {\n margin = unitsToPoints(margin, 0);\n margin = {\n left: margin,\n top: margin,\n right: margin,\n bottom: margin\n };\n } else {\n margin = {\n left: unitsToPoints(margin.left, 0),\n top: unitsToPoints(margin.top, 0),\n right: unitsToPoints(margin.right, 0),\n bottom: unitsToPoints(margin.bottom, 0)\n };\n }\n\n if (getOption(\"addMargin\")) {\n paperSize[0] += margin.left + margin.right;\n paperSize[1] += margin.top + margin.bottom;\n }\n }\n\n return {\n paperSize: paperSize,\n margin: margin\n };\n}\n\nfunction PDFDocument(options) {\n var self = this;\n var out = makeOutput();\n var objcount = 0;\n var objects = [];\n\n function getOption(name, defval) {\n return options && options[name] != null ? options[name] : defval;\n }\n\n self.getOption = getOption;\n\n self.attach = function (value) {\n if (objects.indexOf(value) < 0) {\n wrapObject(value, ++objcount);\n objects.push(value);\n }\n\n return value;\n };\n\n self.pages = [];\n self.FONTS = {};\n self.IMAGES = {};\n self.GRAD_COL_FUNCTIONS = {}; // cache for color gradient functions\n\n self.GRAD_OPC_FUNCTIONS = {}; // cache for opacity gradient functions\n\n self.GRAD_COL = {}; // cache for whole color gradient objects\n\n self.GRAD_OPC = {}; // cache for whole opacity gradient objects\n\n var catalog = self.attach(new PDFCatalog());\n var pageTree = self.attach(new PDFPageTree());\n\n if (getOption(\"autoPrint\")) {\n var nameTree = {};\n nameTree.JavaScript = new PDFDictionary({\n Names: [new PDFString(\"JS\"), self.attach(new PDFDictionary({\n S: _(\"JavaScript\"),\n JS: new PDFString(\"print(true);\")\n }))]\n });\n catalog.props.Names = new PDFDictionary(nameTree);\n }\n\n catalog.setPages(pageTree);\n var info = self.attach(new PDFDictionary({\n Producer: new PDFString(getOption(\"producer\", \"Kendo UI PDF Generator\")),\n // XXX: kendo.version?\n Title: new PDFString(getOption(\"title\", \"\")),\n Author: new PDFString(getOption(\"author\", \"\")),\n Subject: new PDFString(getOption(\"subject\", \"\")),\n Keywords: new PDFString(getOption(\"keywords\", \"\")),\n Creator: new PDFString(getOption(\"creator\", \"Kendo UI PDF Generator\")),\n CreationDate: getOption(\"date\", new Date())\n }));\n\n self.addPage = function (options) {\n var paperOptions = getPaperOptions(function (name, defval) {\n return options && options[name] != null ? options[name] : defval;\n });\n var paperSize = paperOptions.paperSize;\n var margin = paperOptions.margin;\n var contentWidth = paperSize[0];\n var contentHeight = paperSize[1];\n\n if (margin) {\n contentWidth -= margin.left + margin.right;\n contentHeight -= margin.top + margin.bottom;\n }\n\n var content = new PDFStream(makeOutput(), null, true);\n var props = {\n Contents: self.attach(content),\n Parent: pageTree,\n MediaBox: [0, 0, paperSize[0], paperSize[1]]\n };\n var page = new PDFPage(self, props);\n page._content = content;\n pageTree.addPage(self.attach(page)); // canvas-like coord. system. (0,0) is upper-left.\n // text must be vertically mirorred before drawing.\n\n page.transform(1, 0, 0, -1, 0, paperSize[1]);\n\n if (margin) {\n page.translate(margin.left, margin.top); // XXX: clip to right/bottom margin. Make this optional?\n\n page.rect(0, 0, contentWidth, contentHeight);\n page.clip();\n }\n\n self.pages.push(page);\n return page;\n };\n\n self.render = function () {\n var i; /// file header\n\n out(\"%PDF-1.4\", NL, \"%\\xc2\\xc1\\xda\\xcf\\xce\", NL, NL); /// file body\n\n for (i = 0; i < objects.length; ++i) {\n objects[i].renderFull(out);\n out(NL, NL);\n } /// cross-reference table\n\n\n var xrefOffset = out.offset();\n out(\"xref\", NL, 0, \" \", objects.length + 1, NL);\n out(\"0000000000 65535 f \", NL);\n\n for (i = 0; i < objects.length; ++i) {\n out(zeropad(objects[i]._offset, 10), \" 00000 n \", NL);\n }\n\n out(NL); /// trailer\n\n out(\"trailer\", NL);\n out(new PDFDictionary({\n Size: objects.length + 1,\n Root: catalog,\n Info: info\n }), NL, NL); /// end\n\n out(\"startxref\", NL, xrefOffset, NL);\n out(\"%%EOF\", NL);\n return out.stream().offset(0);\n };\n}\n\nvar FONT_CACHE = {\n \"Times-Roman\": true,\n \"Times-Bold\": true,\n \"Times-Italic\": true,\n \"Times-BoldItalic\": true,\n \"Helvetica\": true,\n \"Helvetica-Bold\": true,\n \"Helvetica-Oblique\": true,\n \"Helvetica-BoldOblique\": true,\n \"Courier\": true,\n \"Courier-Bold\": true,\n \"Courier-Oblique\": true,\n \"Courier-BoldOblique\": true,\n \"Symbol\": true,\n \"ZapfDingbats\": true\n};\n\nfunction loadBinary(url, cont) {\n // IE throws Accesss denied error for Data URIs\n var m;\n\n if (browser.msie && (m = /^data:.*?;base64,/i.exec(url))) {\n cont(base64ToUint8Array(url.substr(m[0].length)));\n return;\n }\n\n function error() {\n if (window.console) {\n if (window.console.error) {\n window.console.error(\"Cannot load URL: %s\", url);\n } else {\n window.console.log(\"Cannot load URL: %s\", url);\n }\n }\n\n cont(null);\n }\n\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n\n if (HAS_TYPED_ARRAYS) {\n req.responseType = \"arraybuffer\";\n }\n\n req.onload = function () {\n if (req.status == 200 || req.status == 304) {\n if (HAS_TYPED_ARRAYS) {\n cont(new Uint8Array(req.response));\n } else {\n cont(new window.VBArray(req.responseBody).toArray()); // IE9 only\n }\n } else {\n error();\n }\n };\n\n req.onerror = error;\n req.send(null);\n}\n\nfunction loadFont(url, cont) {\n var font = FONT_CACHE[url];\n\n if (font) {\n cont(font);\n } else {\n loadBinary(url, function (data) {\n if (data == null) {\n throw new Error(\"Cannot load font from \" + url);\n } else {\n var font = new TTFFont(data);\n FONT_CACHE[url] = font;\n cont(font);\n }\n });\n }\n}\n\nvar IMAGE_CACHE = {};\n\nfunction clearImageCache() {\n IMAGE_CACHE = {};\n}\n\nfunction loadImage(url, size, cont) {\n var img = IMAGE_CACHE[url],\n bloburl,\n blob;\n\n if (img) {\n cont(img);\n } else {\n img = new Image();\n\n if (!/^data:/i.test(url)) {\n img.crossOrigin = \"Anonymous\";\n }\n\n if (HAS_TYPED_ARRAYS && !/^data:/i.test(url)) {\n // IE10 fails to load images from another domain even when the server sends the\n // proper CORS headers. a XHR, however, will be able to load the data.\n // http://stackoverflow.com/a/19734516/154985\n //\n // On the other hand, it's worth doing it this way for all browsers which support\n // responseType = \"blob\" (HAS_TYPED_ARRAYS will be true), because we can inspect the\n // mime type and if it's a JPEG (very common case) we can save a lot of time in\n // _load below.\n var xhr = new XMLHttpRequest();\n\n xhr.onload = function () {\n blob = xhr.response;\n bloburl = URL.createObjectURL(blob);\n\n _load(bloburl);\n };\n\n xhr.onerror = _onerror;\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"blob\";\n xhr.send();\n } else {\n _load(url);\n }\n }\n\n function _load(url) {\n img.src = url;\n\n if (img.complete && !browser.msie) {\n // IE, bless it's little heart, says img.complete == true even though the image is\n // not loaded (width=0), therefore we must go the onload route (ticket 929635).\n _onload();\n } else {\n img.onload = _onload;\n img.onerror = _onerror;\n }\n }\n\n function _trycanvas() {\n if (!size) {\n size = {\n width: img.width,\n height: img.height\n };\n }\n\n var canvas = document.createElement(\"canvas\");\n canvas.width = size.width;\n canvas.height = size.height;\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0, size.width, size.height);\n var imgdata;\n\n try {\n imgdata = ctx.getImageData(0, 0, size.width, size.height);\n } catch (ex) {\n // it tainted the canvas -- can't draw it.\n _onerror();\n\n return;\n } finally {\n if (bloburl) {\n URL.revokeObjectURL(bloburl);\n }\n } // in case it contains transparency, we must separate rgb data from the alpha\n // channel and create a PDFRawImage image with opacity. otherwise we can use a\n // PDFJpegImage.\n //\n // to do this in one step, we create the rgb and alpha streams anyway, even if\n // we might end up not using them if hasAlpha remains false.\n\n\n var hasAlpha = false,\n rgb = BinaryStream(),\n alpha = BinaryStream();\n var rawbytes = imgdata.data;\n var i = 0;\n\n while (i < rawbytes.length) {\n rgb.writeByte(rawbytes[i++]);\n rgb.writeByte(rawbytes[i++]);\n rgb.writeByte(rawbytes[i++]);\n var a = rawbytes[i++];\n\n if (a < 255) {\n hasAlpha = true;\n }\n\n alpha.writeByte(a);\n }\n\n if (hasAlpha) {\n img = new PDFRawImage(size.width, size.height, rgb, alpha);\n } else {\n // no transparency, encode as JPEG.\n var data = canvas.toDataURL(\"image/jpeg\");\n data = data.substr(data.indexOf(\";base64,\") + 8);\n var stream = BinaryStream();\n stream.writeBase64(data);\n img = new PDFJpegImage(stream);\n }\n\n cont(IMAGE_CACHE[url] = img);\n }\n\n function _onerror() {\n cont(IMAGE_CACHE[url] = \"ERROR\");\n }\n\n function _onload() {\n if (size) {\n // but if requested size is bigger than the image, just use the original image.\n if (size.width >= img.width || size.height >= img.height) {\n size = null;\n }\n }\n\n if (!size && blob && /^image\\/jpe?g$/i.test(blob.type)) {\n // If we know we got a JPEG, we can skip the process of rendering it to a\n // canvas, getting the pixel data, searching for transparency we know we won't\n // find, getting back a data URI and then decoding the BASE64 to finally get the\n // binary we already have. Also, we avoid downgrading the image quality, with\n // the possible drawback of making a bigger PDF; still, seems legit.\n //\n // Besides saving a lot of work, this also reuses the buffer memory\n // (BinaryStream does not create a copy), potentially saving some GC cycles.\n var reader = new FileReader();\n\n reader.onload = function () {\n try {\n var img = new PDFJpegImage(BinaryStream(new Uint8Array(this.result)));\n URL.revokeObjectURL(bloburl);\n cont(IMAGE_CACHE[url] = img);\n } catch (ex) {\n // if there's an error parsing the JPEG stream, it could be due to a\n // misconfigured server (improper content-type:\n // https://github.com/telerik/kendo-ui-core/issues/4184). If that's the case,\n // the canvas will still be able to draw it.\n _trycanvas();\n }\n };\n\n reader.readAsArrayBuffer(blob);\n } else {\n _trycanvas();\n }\n }\n}\n\nfunction manyLoader(loadOne) {\n return function (urls, callback) {\n var n = urls.length,\n i = n;\n\n if (n === 0) {\n return callback();\n }\n\n function next() {\n if (--n === 0) {\n callback();\n }\n }\n\n while (i-- > 0) {\n loadOne(urls[i], next);\n }\n };\n}\n\nvar loadFonts = manyLoader(loadFont);\n\nvar loadImages = function loadImages(images, callback) {\n var urls = Object.keys(images),\n n = urls.length;\n\n if (n === 0) {\n return callback();\n }\n\n function next() {\n if (--n === 0) {\n callback();\n }\n }\n\n urls.forEach(function (url) {\n loadImage(url, images[url], next);\n });\n};\n\nPDFDocument.prototype = {\n loadFonts: loadFonts,\n loadImages: loadImages,\n getFont: function getFont(url) {\n var font = this.FONTS[url];\n\n if (!font) {\n font = FONT_CACHE[url];\n\n if (!font) {\n throw new Error(\"Font \" + url + \" has not been loaded\");\n }\n\n if (font === true) {\n font = this.attach(new PDFStandardFont(url));\n } else {\n font = this.attach(new PDFFont(this, font));\n }\n\n this.FONTS[url] = font;\n }\n\n return font;\n },\n getImage: function getImage(url) {\n var img = this.IMAGES[url];\n\n if (!img) {\n img = IMAGE_CACHE[url];\n\n if (!img) {\n throw new Error(\"Image \" + url + \" has not been loaded\");\n }\n\n if (img === \"ERROR\") {\n return null;\n }\n\n img = this.IMAGES[url] = this.attach(img.asStream(this));\n }\n\n return img;\n },\n getOpacityGS: function getOpacityGS(opacity, forStroke) {\n var id = parseFloat(opacity).toFixed(3);\n opacity = parseFloat(id);\n id += forStroke ? \"S\" : \"F\";\n var cache = this._opacityGSCache || (this._opacityGSCache = {});\n var gs = cache[id];\n\n if (!gs) {\n var props = {\n Type: _(\"ExtGState\")\n };\n\n if (forStroke) {\n props.CA = opacity;\n } else {\n props.ca = opacity;\n }\n\n gs = this.attach(new PDFDictionary(props));\n gs._resourceName = _(\"GS\" + ++RESOURCE_COUNTER);\n cache[id] = gs;\n }\n\n return gs;\n },\n dict: function dict(props) {\n return new PDFDictionary(props);\n },\n name: function name(str) {\n return _(str);\n },\n stream: function stream(props, content) {\n return new PDFStream(content, props);\n }\n};\n/* -----[ utils ]----- */\n\nfunction pad(str, len, ch) {\n while (str.length < len) {\n str = ch + str;\n }\n\n return str;\n}\n\nfunction zeropad(n, len) {\n return pad(String(n), len, \"0\");\n}\n\nfunction hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nvar isArray = Array.isArray || function (obj) {\n return obj instanceof Array;\n};\n\nfunction isDate(obj) {\n return obj instanceof Date;\n}\n\nfunction renderArray(a, out) {\n out(\"[\");\n\n if (a.length > 0) {\n out.withIndent(function () {\n for (var i = 0; i < a.length; ++i) {\n if (i > 0 && i % 8 === 0) {\n out.indent(a[i]);\n } else {\n out(\" \", a[i]);\n }\n }\n }); //out.indent();\n }\n\n out(\" ]\");\n}\n\nfunction renderDate(date, out) {\n out(\"(D:\", zeropad(date.getUTCFullYear(), 4), zeropad(date.getUTCMonth() + 1, 2), zeropad(date.getUTCDate(), 2), zeropad(date.getUTCHours(), 2), zeropad(date.getUTCMinutes(), 2), zeropad(date.getUTCSeconds(), 2), \"Z)\");\n}\n\nfunction mm2pt(mm) {\n return mm * (72 / 25.4);\n}\n\nfunction cm2pt(cm) {\n return mm2pt(cm * 10);\n}\n\nfunction in2pt(inch) {\n return inch * 72;\n}\n\nfunction unitsToPoints(x, def) {\n if (typeof x == \"number\") {\n return x;\n }\n\n if (typeof x == \"string\") {\n var m;\n m = /^\\s*([0-9.]+)\\s*(mm|cm|in|pt)\\s*$/.exec(x);\n\n if (m) {\n var num = parseFloat(m[1]);\n\n if (!isNaN(num)) {\n if (m[2] == \"pt\") {\n return num;\n }\n\n return {\n \"mm\": mm2pt,\n \"cm\": cm2pt,\n \"in\": in2pt\n }[m[2]](num);\n }\n }\n }\n\n if (def != null) {\n return def;\n }\n\n throw new Error(\"Can't parse unit: \" + x);\n}\n/* -----[ PDF basic objects ]----- */\n\n\nfunction PDFValue() {}\n\nPDFValue.prototype.beforeRender = function () {};\n\nfunction defclass(Ctor, proto, Base) {\n if (!Base) {\n Base = PDFValue;\n }\n\n Ctor.prototype = new Base();\n\n for (var i in proto) {\n if (hasOwnProperty(proto, i)) {\n Ctor.prototype[i] = proto[i];\n }\n }\n\n return Ctor;\n} /// strings\n\n\nvar PDFString = defclass(function PDFString(value) {\n this.value = value;\n}, {\n render: function render(out) {\n var txt = \"\",\n val = this.value;\n\n for (var i = 0; i < val.length; ++i) {\n txt += String.fromCharCode(val.charCodeAt(i) & 0xFF);\n }\n\n out(\"(\", txt.replace(/([\\(\\)\\\\])/g, \"\\\\$1\"), \")\");\n },\n toString: function toString() {\n return this.value;\n }\n});\nvar PDFHexString = defclass(function PDFHexString(value) {\n this.value = value;\n}, {\n render: function render(out) {\n var this$1 = this;\n out(\"<\");\n\n for (var i = 0; i < this.value.length; ++i) {\n out(zeropad(this$1.value.charCodeAt(i).toString(16), 4));\n }\n\n out(\">\");\n }\n}, PDFString); /// names\n\nvar PDFName = defclass(function PDFName(name) {\n this.name = name;\n}, {\n render: function render(out) {\n out(\"/\" + this.escape());\n },\n escape: function escape() {\n return this.name.replace(/[^\\x21-\\x7E]/g, function (c) {\n return \"#\" + zeropad(c.charCodeAt(0).toString(16), 2);\n });\n },\n toString: function toString() {\n return this.name;\n }\n});\nvar PDFName_cache = {};\nPDFName.get = _;\n\nfunction _(name) {\n if (hasOwnProperty(PDFName_cache, name)) {\n return PDFName_cache[name];\n }\n\n return PDFName_cache[name] = new PDFName(name);\n} /// dictionary\n\n\nvar PDFDictionary = defclass(function PDFDictionary(props) {\n this.props = props;\n}, {\n render: function render(out) {\n var props = this.props,\n empty = true;\n out(\"<<\");\n out.withIndent(function () {\n for (var i in props) {\n if (hasOwnProperty(props, i) && !/^_/.test(i)) {\n empty = false;\n out.indent(_(i), \" \", props[i]);\n }\n }\n });\n\n if (!empty) {\n out.indent();\n }\n\n out(\">>\");\n }\n}); /// streams\n\nvar PDFStream = defclass(function PDFStream(data, props, compress) {\n if (typeof data == \"string\") {\n var tmp = BinaryStream();\n tmp.write(data);\n data = tmp;\n }\n\n this.data = data;\n this.props = props || {};\n this.compress = compress;\n}, {\n render: function render(out) {\n var data = this.data.get(),\n props = this.props;\n\n if (this.compress && supportsDeflate()) {\n if (!props.Filter) {\n props.Filter = [];\n } else if (!(props.Filter instanceof Array)) {\n props.Filter = [props.Filter];\n }\n\n props.Filter.unshift(_(\"FlateDecode\"));\n data = deflate(data);\n }\n\n props.Length = data.length;\n out(new PDFDictionary(props), \" stream\", NL);\n out.writeData(data);\n out(NL, \"endstream\");\n }\n}); /// catalog\n\nvar PDFCatalog = defclass(function PDFCatalog() {\n this.props = {\n Type: _(\"Catalog\")\n };\n}, {\n setPages: function setPages(pagesObj) {\n this.props.Pages = pagesObj;\n }\n}, PDFDictionary); /// page tree\n\nvar PDFPageTree = defclass(function PDFPageTree() {\n this.props = {\n Type: _(\"Pages\"),\n Kids: [],\n Count: 0\n };\n}, {\n addPage: function addPage(pageObj) {\n this.props.Kids.push(pageObj);\n this.props.Count++;\n }\n}, PDFDictionary); /// images\n// JPEG\n\nvar SOF_CODES = [0xc0, 0xc1, 0xc2, 0xc3, 0xc5, 0xc6, 0xc7, 0xc9, 0xca, 0xcb, 0xcd, 0xce, 0xcf];\n\nfunction PDFJpegImage(data) {\n // we must determine the correct color space. we'll parse a bit\n // of the JPEG stream for this, it's still better than going\n // through the canvas.\n // https://github.com/telerik/kendo-ui-core/issues/2845\n data.offset(0);\n var width, height, colorSpace, bitsPerComponent;\n var soi = data.readShort();\n\n if (soi != 0xFFD8) {\n // XXX: do we have some better options here?\n throw new Error(\"Invalid JPEG image\");\n }\n\n while (!data.eof()) {\n var ff = data.readByte();\n\n if (ff != 0xFF) {\n throw new Error(\"Invalid JPEG image\");\n }\n\n var marker = data.readByte();\n var length = data.readShort();\n\n if (SOF_CODES.indexOf(marker) >= 0) {\n // \"start of frame\" marker\n bitsPerComponent = data.readByte();\n height = data.readShort();\n width = data.readShort();\n colorSpace = data.readByte();\n break;\n }\n\n data.skip(length - 2);\n }\n\n if (colorSpace == null) {\n throw new Error(\"Invalid JPEG image\");\n }\n\n var props = {\n Type: _(\"XObject\"),\n Subtype: _(\"Image\"),\n Width: width,\n Height: height,\n BitsPerComponent: bitsPerComponent,\n Filter: _(\"DCTDecode\")\n };\n\n switch (colorSpace) {\n case 1:\n props.ColorSpace = _(\"DeviceGray\");\n break;\n\n case 3:\n props.ColorSpace = _(\"DeviceRGB\");\n break;\n\n case 4:\n props.ColorSpace = _(\"DeviceCMYK\");\n props.Decode = [1, 0, 1, 0, 1, 0, 1, 0]; // invert colors\n\n break;\n }\n\n this.asStream = function () {\n data.offset(0);\n var stream = new PDFStream(data, props);\n stream._resourceName = _(\"I\" + ++RESOURCE_COUNTER);\n return stream;\n };\n} // PDFRawImage will be used for images with transparency (PNG)\n\n\nfunction PDFRawImage(width, height, rgb, alpha) {\n this.asStream = function (pdf) {\n var mask = new PDFStream(alpha, {\n Type: _(\"XObject\"),\n Subtype: _(\"Image\"),\n Width: width,\n Height: height,\n BitsPerComponent: 8,\n ColorSpace: _(\"DeviceGray\")\n }, true);\n var stream = new PDFStream(rgb, {\n Type: _(\"XObject\"),\n Subtype: _(\"Image\"),\n Width: width,\n Height: height,\n BitsPerComponent: 8,\n ColorSpace: _(\"DeviceRGB\"),\n SMask: pdf.attach(mask)\n }, true);\n stream._resourceName = _(\"I\" + ++RESOURCE_COUNTER);\n return stream;\n };\n} /// standard fonts\n\n\nvar PDFStandardFont = defclass(function PDFStandardFont(name) {\n this.props = {\n Type: _(\"Font\"),\n Subtype: _(\"Type1\"),\n BaseFont: _(name)\n };\n this._resourceName = _(\"F\" + ++RESOURCE_COUNTER);\n}, {\n encodeText: function encodeText(str) {\n return new PDFString(String(str));\n }\n}, PDFDictionary); /// TTF fonts\n\nvar PDFFont = defclass(function PDFFont(pdf, font, props) {\n props = this.props = props || {};\n props.Type = _(\"Font\");\n props.Subtype = _(\"Type0\");\n props.Encoding = _(\"Identity-H\");\n this._pdf = pdf;\n this._font = font;\n this._sub = font.makeSubset();\n this._resourceName = _(\"F\" + ++RESOURCE_COUNTER);\n var head = font.head;\n this.name = font.psName;\n var scale = this.scale = font.scale;\n this.bbox = [head.xMin * scale, head.yMin * scale, head.xMax * scale, head.yMax * scale];\n this.italicAngle = font.post.italicAngle;\n this.ascent = font.ascent * scale;\n this.descent = font.descent * scale;\n this.lineGap = font.lineGap * scale;\n this.capHeight = font.os2.capHeight || this.ascent;\n this.xHeight = font.os2.xHeight || 0;\n this.stemV = 0;\n this.familyClass = (font.os2.familyClass || 0) >> 8;\n this.isSerif = this.familyClass >= 1 && this.familyClass <= 7;\n this.isScript = this.familyClass == 10;\n this.flags = (font.post.isFixedPitch ? 1 : 0) | (this.isSerif ? 1 << 1 : 0) | (this.isScript ? 1 << 3 : 0) | (this.italicAngle !== 0 ? 1 << 6 : 0) | 1 << 5;\n}, {\n encodeText: function encodeText(text) {\n return new PDFHexString(this._sub.encodeText(String(text)));\n },\n getTextWidth: function getTextWidth(fontSize, text) {\n var this$1 = this;\n var width = 0,\n codeMap = this._font.cmap.codeMap;\n\n for (var i = 0; i < text.length; ++i) {\n var glyphId = codeMap[text.charCodeAt(i)];\n width += this$1._font.widthOfGlyph(glyphId || 0);\n }\n\n return width * fontSize / 1000;\n },\n beforeRender: function beforeRender() {\n var self = this;\n var sub = self._sub; // write the TTF data\n\n var data = sub.render();\n var fontStream = new PDFStream(BinaryStream(data), {\n Length1: data.length\n }, true);\n\n var descriptor = self._pdf.attach(new PDFDictionary({\n Type: _(\"FontDescriptor\"),\n FontName: _(self._sub.psName),\n FontBBox: self.bbox,\n Flags: self.flags,\n StemV: self.stemV,\n ItalicAngle: self.italicAngle,\n Ascent: self.ascent,\n Descent: self.descent,\n CapHeight: self.capHeight,\n XHeight: self.xHeight,\n FontFile2: self._pdf.attach(fontStream)\n }));\n\n var cmap = sub.ncid2ogid;\n var firstChar = sub.firstChar;\n var lastChar = sub.lastChar;\n var charWidths = [];\n\n (function loop(i, chunk) {\n if (i <= lastChar) {\n var gid = cmap[i];\n\n if (gid == null) {\n loop(i + 1);\n } else {\n if (!chunk) {\n charWidths.push(i, chunk = []);\n }\n\n chunk.push(self._font.widthOfGlyph(gid));\n loop(i + 1, chunk);\n }\n }\n })(firstChar); // As if two dictionaries weren't enough, we need another\n // one, the \"descendant font\". Only that one can be of\n // Subtype CIDFontType2. PDF is the X11 of document\n // formats: portable but full of legacy that nobody cares\n // about anymore.\n\n\n var descendant = new PDFDictionary({\n Type: _(\"Font\"),\n Subtype: _(\"CIDFontType2\"),\n BaseFont: _(self._sub.psName),\n CIDSystemInfo: new PDFDictionary({\n Registry: new PDFString(\"Adobe\"),\n Ordering: new PDFString(\"Identity\"),\n Supplement: 0\n }),\n FontDescriptor: descriptor,\n FirstChar: firstChar,\n LastChar: lastChar,\n DW: Math.round(self._font.widthOfGlyph(0)),\n W: charWidths,\n CIDToGIDMap: self._pdf.attach(self._makeCidToGidMap())\n });\n var dict = self.props;\n dict.BaseFont = _(self._sub.psName);\n dict.DescendantFonts = [self._pdf.attach(descendant)]; // Compute the ToUnicode map so that apps can extract\n // meaningful text from the PDF.\n\n var unimap = new PDFToUnicodeCmap(firstChar, lastChar, sub.subset);\n var unimapStream = new PDFStream(makeOutput(), null, true);\n unimapStream.data(unimap);\n dict.ToUnicode = self._pdf.attach(unimapStream);\n },\n _makeCidToGidMap: function _makeCidToGidMap() {\n return new PDFStream(BinaryStream(this._sub.cidToGidMap()), null, true);\n }\n}, PDFDictionary);\nvar PDFToUnicodeCmap = defclass(function PDFUnicodeCMap(firstChar, lastChar, map) {\n this.firstChar = firstChar;\n this.lastChar = lastChar;\n this.map = map;\n}, {\n render: function render(out) {\n out.indent(\"/CIDInit /ProcSet findresource begin\");\n out.indent(\"12 dict begin\");\n out.indent(\"begincmap\");\n out.indent(\"/CIDSystemInfo <<\");\n out.indent(\" /Registry (Adobe)\");\n out.indent(\" /Ordering (UCS)\");\n out.indent(\" /Supplement 0\");\n out.indent(\">> def\");\n out.indent(\"/CMapName /Adobe-Identity-UCS def\");\n out.indent(\"/CMapType 2 def\");\n out.indent(\"1 begincodespacerange\");\n out.indent(\" <0000>\");\n out.indent(\"endcodespacerange\");\n var self = this;\n out.indent(self.lastChar - self.firstChar + 1, \" beginbfchar\");\n out.withIndent(function () {\n for (var code = self.firstChar; code <= self.lastChar; ++code) {\n var unicode = self.map[code];\n var str = ucs2encode([unicode]);\n out.indent(\"<\", zeropad(code.toString(16), 4), \">\", \"<\");\n\n for (var i = 0; i < str.length; ++i) {\n out(zeropad(str.charCodeAt(i).toString(16), 4));\n }\n\n out(\">\");\n }\n });\n out.indent(\"endbfchar\");\n out.indent(\"endcmap\");\n out.indent(\"CMapName currentdict /CMap defineresource pop\");\n out.indent(\"end\");\n out.indent(\"end\");\n }\n}); /// gradients\n\nfunction makeHash(a) {\n return a.map(function (x) {\n return isArray(x) ? makeHash(x) : typeof x == \"number\" ? (Math.round(x * 1000) / 1000).toFixed(3) : x;\n }).join(\" \");\n}\n\nfunction cacheColorGradientFunction(pdf, r1, g1, b1, r2, g2, b2) {\n var hash = makeHash([r1, g1, b1, r2, g2, b2]);\n var func = pdf.GRAD_COL_FUNCTIONS[hash];\n\n if (!func) {\n func = pdf.GRAD_COL_FUNCTIONS[hash] = pdf.attach(new PDFDictionary({\n FunctionType: 2,\n Domain: [0, 1],\n Range: [0, 1, 0, 1, 0, 1],\n N: 1,\n C0: [r1, g1, b1],\n C1: [r2, g2, b2]\n }));\n }\n\n return func;\n}\n\nfunction cacheOpacityGradientFunction(pdf, a1, a2) {\n var hash = makeHash([a1, a2]);\n var func = pdf.GRAD_OPC_FUNCTIONS[hash];\n\n if (!func) {\n func = pdf.GRAD_OPC_FUNCTIONS[hash] = pdf.attach(new PDFDictionary({\n FunctionType: 2,\n Domain: [0, 1],\n Range: [0, 1],\n N: 1,\n C0: [a1],\n C1: [a2]\n }));\n }\n\n return func;\n}\n\nfunction makeGradientFunctions(pdf, stops) {\n var hasAlpha = false;\n var opacities = [];\n var colors = [];\n var offsets = [];\n var encode = [];\n var i, prev, cur, prevColor, curColor;\n\n for (i = 1; i < stops.length; ++i) {\n prev = stops[i - 1];\n cur = stops[i];\n prevColor = prev.color;\n curColor = cur.color;\n colors.push(cacheColorGradientFunction(pdf, prevColor.r, prevColor.g, prevColor.b, curColor.r, curColor.g, curColor.b));\n\n if (prevColor.a < 1 || curColor.a < 1) {\n hasAlpha = true;\n }\n\n offsets.push(cur.offset);\n encode.push(0, 1);\n }\n\n if (hasAlpha) {\n for (i = 1; i < stops.length; ++i) {\n prev = stops[i - 1];\n cur = stops[i];\n prevColor = prev.color;\n curColor = cur.color;\n opacities.push(cacheOpacityGradientFunction(pdf, prevColor.a, curColor.a));\n }\n }\n\n offsets.pop();\n return {\n hasAlpha: hasAlpha,\n colors: assemble(colors),\n opacities: hasAlpha ? assemble(opacities) : null\n };\n\n function assemble(funcs) {\n if (funcs.length == 1) {\n return funcs[0];\n }\n\n return {\n FunctionType: 3,\n Functions: funcs,\n Domain: [0, 1],\n Bounds: offsets,\n Encode: encode\n };\n }\n}\n\nfunction cacheColorGradient(pdf, isRadial, stops, coords, funcs, box) {\n var shading, hash; // if box is given then we have user-space coordinates, which\n // means the gradient is designed for a certain position/size\n // on page. caching won't do any good.\n\n if (!box) {\n var a = [isRadial].concat(coords);\n stops.forEach(function (x) {\n a.push(x.offset, x.color.r, x.color.g, x.color.b);\n });\n hash = makeHash(a);\n shading = pdf.GRAD_COL[hash];\n }\n\n if (!shading) {\n shading = new PDFDictionary({\n Type: _(\"Shading\"),\n ShadingType: isRadial ? 3 : 2,\n ColorSpace: _(\"DeviceRGB\"),\n Coords: coords,\n Domain: [0, 1],\n Function: funcs,\n Extend: [true, true]\n });\n pdf.attach(shading);\n shading._resourceName = \"S\" + ++RESOURCE_COUNTER;\n\n if (hash) {\n pdf.GRAD_COL[hash] = shading;\n }\n }\n\n return shading;\n}\n\nfunction cacheOpacityGradient(pdf, isRadial, stops, coords, funcs, box) {\n var opacity, hash; // if box is given then we have user-space coordinates, which\n // means the gradient is designed for a certain position/size\n // on page. caching won't do any good.\n\n if (!box) {\n var a = [isRadial].concat(coords);\n stops.forEach(function (x) {\n a.push(x.offset, x.color.a);\n });\n hash = makeHash(a);\n opacity = pdf.GRAD_OPC[hash];\n }\n\n if (!opacity) {\n opacity = new PDFDictionary({\n Type: _(\"ExtGState\"),\n AIS: false,\n CA: 1,\n ca: 1,\n SMask: {\n Type: _(\"Mask\"),\n S: _(\"Luminosity\"),\n G: pdf.attach(new PDFStream(\"/a0 gs /s0 sh\", {\n Type: _(\"XObject\"),\n Subtype: _(\"Form\"),\n FormType: 1,\n BBox: box ? [box.left, box.top + box.height, box.left + box.width, box.top] : [0, 1, 1, 0],\n Group: {\n Type: _(\"Group\"),\n S: _(\"Transparency\"),\n CS: _(\"DeviceGray\"),\n I: true\n },\n Resources: {\n ExtGState: {\n a0: {\n CA: 1,\n ca: 1\n }\n },\n Shading: {\n s0: {\n ColorSpace: _(\"DeviceGray\"),\n Coords: coords,\n Domain: [0, 1],\n ShadingType: isRadial ? 3 : 2,\n Function: funcs,\n Extend: [true, true]\n }\n }\n }\n }))\n }\n });\n pdf.attach(opacity);\n opacity._resourceName = \"O\" + ++RESOURCE_COUNTER;\n\n if (hash) {\n pdf.GRAD_OPC[hash] = opacity;\n }\n }\n\n return opacity;\n}\n\nfunction cacheGradient(pdf, gradient, box) {\n var isRadial = gradient.type == \"radial\";\n var funcs = makeGradientFunctions(pdf, gradient.stops);\n var coords = isRadial ? [gradient.start.x, gradient.start.y, gradient.start.r, gradient.end.x, gradient.end.y, gradient.end.r] : [gradient.start.x, gradient.start.y, gradient.end.x, gradient.end.y];\n var shading = cacheColorGradient(pdf, isRadial, gradient.stops, coords, funcs.colors, gradient.userSpace && box);\n var opacity = funcs.hasAlpha ? cacheOpacityGradient(pdf, isRadial, gradient.stops, coords, funcs.opacities, gradient.userSpace && box) : null;\n return {\n hasAlpha: funcs.hasAlpha,\n shading: shading,\n opacity: opacity\n };\n} /// page object\n\n\nvar PDFPage = defclass(function PDFPage(pdf, props) {\n this._pdf = pdf;\n this._rcount = 0;\n this._textMode = false;\n this._fontResources = {};\n this._gsResources = {};\n this._xResources = {};\n this._patResources = {};\n this._shResources = {};\n this._opacity = 1;\n this._matrix = [1, 0, 0, 1, 0, 0];\n this._annotations = [];\n this._font = null;\n this._fontSize = null;\n this._contextStack = [];\n props = this.props = props || {};\n props.Type = _(\"Page\");\n props.ProcSet = [_(\"PDF\"), _(\"Text\"), _(\"ImageB\"), _(\"ImageC\"), _(\"ImageI\")];\n props.Resources = new PDFDictionary({\n Font: new PDFDictionary(this._fontResources),\n ExtGState: new PDFDictionary(this._gsResources),\n XObject: new PDFDictionary(this._xResources),\n Pattern: new PDFDictionary(this._patResources),\n Shading: new PDFDictionary(this._shResources)\n });\n props.Annots = this._annotations;\n}, {\n _out: function _out() {\n this._content.data.apply(null, arguments);\n },\n transform: function transform(a, b, c, d, e, f) {\n if (!isIdentityMatrix(arguments)) {\n this._matrix = mmul(arguments, this._matrix);\n\n this._out(a, \" \", b, \" \", c, \" \", d, \" \", e, \" \", f, \" cm\"); // XXX: debug\n // this._out(\" % current matrix: \", this._matrix);\n\n\n this._out(NL);\n }\n },\n translate: function translate(dx, dy) {\n this.transform(1, 0, 0, 1, dx, dy);\n },\n scale: function scale(sx, sy) {\n this.transform(sx, 0, 0, sy, 0, 0);\n },\n rotate: function rotate(angle) {\n var cos = Math.cos(angle),\n sin = Math.sin(angle);\n this.transform(cos, sin, -sin, cos, 0, 0);\n },\n beginText: function beginText() {\n this._textMode = true;\n\n this._out(\"BT\", NL);\n },\n endText: function endText() {\n this._textMode = false;\n\n this._out(\"ET\", NL);\n },\n _requireTextMode: function _requireTextMode() {\n if (!this._textMode) {\n throw new Error(\"Text mode required; call page.beginText() first\");\n }\n },\n _requireFont: function _requireFont() {\n if (!this._font) {\n throw new Error(\"No font selected; call page.setFont() first\");\n }\n },\n setFont: function setFont(font, size) {\n this._requireTextMode();\n\n if (font == null) {\n font = this._font;\n } else if (!(font instanceof PDFFont)) {\n font = this._pdf.getFont(font);\n }\n\n if (size == null) {\n size = this._fontSize;\n }\n\n this._fontResources[font._resourceName] = font;\n this._font = font;\n this._fontSize = size;\n\n this._out(font._resourceName, \" \", size, \" Tf\", NL);\n },\n setTextLeading: function setTextLeading(size) {\n this._requireTextMode();\n\n this._out(size, \" TL\", NL);\n },\n setTextRenderingMode: function setTextRenderingMode(mode) {\n this._requireTextMode();\n\n this._out(mode, \" Tr\", NL);\n },\n showText: function showText(text, requestedWidth) {\n this._requireFont();\n\n if (text.length > 1 && requestedWidth && this._font instanceof PDFFont) {\n var outputWidth = this._font.getTextWidth(this._fontSize, text);\n\n var scale = requestedWidth / outputWidth * 100;\n\n this._out(scale, \" Tz \");\n }\n\n this._out(this._font.encodeText(text), \" Tj\", NL);\n },\n showTextNL: function showTextNL(text) {\n this._requireFont();\n\n this._out(this._font.encodeText(text), \" '\", NL);\n },\n addLink: function addLink(uri, box) {\n var ll = this._toPage({\n x: box.left,\n y: box.bottom\n });\n\n var ur = this._toPage({\n x: box.right,\n y: box.top\n });\n\n this._annotations.push(new PDFDictionary({\n Type: _(\"Annot\"),\n Subtype: _(\"Link\"),\n Rect: [ll.x, ll.y, ur.x, ur.y],\n Border: [0, 0, 0],\n A: new PDFDictionary({\n Type: _(\"Action\"),\n S: _(\"URI\"),\n URI: new PDFString(uri)\n })\n }));\n },\n setStrokeColor: function setStrokeColor(r, g, b) {\n this._out(r, \" \", g, \" \", b, \" RG\", NL);\n },\n setOpacity: function setOpacity(opacity) {\n this.setFillOpacity(opacity);\n this.setStrokeOpacity(opacity);\n this._opacity *= opacity;\n },\n setStrokeOpacity: function setStrokeOpacity(opacity) {\n if (opacity < 1) {\n var gs = this._pdf.getOpacityGS(this._opacity * opacity, true);\n\n this._gsResources[gs._resourceName] = gs;\n\n this._out(gs._resourceName, \" gs\", NL);\n }\n },\n setFillColor: function setFillColor(r, g, b) {\n this._out(r, \" \", g, \" \", b, \" rg\", NL);\n },\n setFillOpacity: function setFillOpacity(opacity) {\n if (opacity < 1) {\n var gs = this._pdf.getOpacityGS(this._opacity * opacity, false);\n\n this._gsResources[gs._resourceName] = gs;\n\n this._out(gs._resourceName, \" gs\", NL);\n }\n },\n gradient: function gradient(_gradient, box) {\n this.save();\n this.rect(box.left, box.top, box.width, box.height);\n this.clip();\n\n if (!_gradient.userSpace) {\n this.transform(box.width, 0, 0, box.height, box.left, box.top);\n }\n\n var g = cacheGradient(this._pdf, _gradient, box);\n var sname = g.shading._resourceName,\n oname;\n this._shResources[sname] = g.shading;\n\n if (g.hasAlpha) {\n oname = g.opacity._resourceName;\n this._gsResources[oname] = g.opacity;\n\n this._out(\"/\" + oname + \" gs \");\n }\n\n this._out(\"/\" + sname + \" sh\", NL);\n\n this.restore();\n },\n setDashPattern: function setDashPattern(dashArray, dashPhase) {\n this._out(dashArray, \" \", dashPhase, \" d\", NL);\n },\n setLineWidth: function setLineWidth(width) {\n this._out(width, \" w\", NL);\n },\n setLineCap: function setLineCap(lineCap) {\n this._out(lineCap, \" J\", NL);\n },\n setLineJoin: function setLineJoin(lineJoin) {\n this._out(lineJoin, \" j\", NL);\n },\n setMitterLimit: function setMitterLimit(mitterLimit) {\n this._out(mitterLimit, \" M\", NL);\n },\n save: function save() {\n this._contextStack.push(this._context());\n\n this._out(\"q\", NL);\n },\n restore: function restore() {\n this._out(\"Q\", NL);\n\n this._context(this._contextStack.pop());\n },\n // paths\n moveTo: function moveTo(x, y) {\n this._out(x, \" \", y, \" m\", NL);\n },\n lineTo: function lineTo(x, y) {\n this._out(x, \" \", y, \" l\", NL);\n },\n bezier: function bezier(x1, y1, x2, y2, x3, y3) {\n this._out(x1, \" \", y1, \" \", x2, \" \", y2, \" \", x3, \" \", y3, \" c\", NL);\n },\n bezier1: function bezier1(x1, y1, x3, y3) {\n this._out(x1, \" \", y1, \" \", x3, \" \", y3, \" y\", NL);\n },\n bezier2: function bezier2(x2, y2, x3, y3) {\n this._out(x2, \" \", y2, \" \", x3, \" \", y3, \" v\", NL);\n },\n close: function close() {\n this._out(\"h\", NL);\n },\n rect: function rect(x, y, w, h) {\n this._out(x, \" \", y, \" \", w, \" \", h, \" re\", NL);\n },\n ellipse: function ellipse(x, y, rx, ry) {\n function _X(v) {\n return x + v;\n }\n\n function _Y(v) {\n return y + v;\n } // how to get to the \"magic number\" is explained here:\n // http://www.whizkidtech.redprince.net/bezier/circle/kappa/\n\n\n var k = 0.5522847498307936;\n this.moveTo(_X(0), _Y(ry));\n this.bezier(_X(rx * k), _Y(ry), _X(rx), _Y(ry * k), _X(rx), _Y(0));\n this.bezier(_X(rx), _Y(-ry * k), _X(rx * k), _Y(-ry), _X(0), _Y(-ry));\n this.bezier(_X(-rx * k), _Y(-ry), _X(-rx), _Y(-ry * k), _X(-rx), _Y(0));\n this.bezier(_X(-rx), _Y(ry * k), _X(-rx * k), _Y(ry), _X(0), _Y(ry));\n },\n circle: function circle(x, y, r) {\n this.ellipse(x, y, r, r);\n },\n stroke: function stroke() {\n this._out(\"S\", NL);\n },\n nop: function nop() {\n this._out(\"n\", NL);\n },\n clip: function clip() {\n this._out(\"W n\", NL);\n },\n clipStroke: function clipStroke() {\n this._out(\"W S\", NL);\n },\n closeStroke: function closeStroke() {\n this._out(\"s\", NL);\n },\n fill: function fill() {\n this._out(\"f\", NL);\n },\n fillStroke: function fillStroke() {\n this._out(\"B\", NL);\n },\n drawImage: function drawImage(url) {\n var img = this._pdf.getImage(url);\n\n if (img) {\n // the result can be null for a cross-domain image\n this._xResources[img._resourceName] = img;\n\n this._out(img._resourceName, \" Do\", NL);\n }\n },\n comment: function comment(txt) {\n var self = this;\n txt.split(/\\r?\\n/g).forEach(function (line) {\n self._out(\"% \", line, NL);\n });\n },\n // internal\n _context: function _context(val) {\n if (val != null) {\n this._opacity = val.opacity;\n this._matrix = val.matrix;\n } else {\n return {\n opacity: this._opacity,\n matrix: this._matrix\n };\n }\n },\n _toPage: function _toPage(p) {\n var m = this._matrix;\n var a = m[0],\n b = m[1],\n c = m[2],\n d = m[3],\n e = m[4],\n f = m[5];\n return {\n x: a * p.x + c * p.y + e,\n y: b * p.x + d * p.y + f\n };\n }\n}, PDFDictionary);\n\nfunction unquote(str) {\n return str.replace(/^\\s*(['\"])(.*)\\1\\s*$/, \"$2\");\n}\n\nfunction parseFontDef(fontdef) {\n // XXX: this is very crude for now and buggy. Proper parsing is quite involved.\n var rx = /^\\s*((normal|italic)\\s+)?((normal|small-caps)\\s+)?((normal|bold|\\d+)\\s+)?(([0-9.]+)(px|pt))(\\/(([0-9.]+)(px|pt)|normal))?\\s+(.*?)\\s*$/i;\n var m = rx.exec(fontdef);\n\n if (!m) {\n return {\n fontSize: 12,\n fontFamily: \"sans-serif\"\n };\n }\n\n var fontSize = m[8] ? parseInt(m[8], 10) : 12;\n return {\n italic: m[2] && m[2].toLowerCase() == \"italic\",\n variant: m[4],\n bold: m[6] && /bold|700/i.test(m[6]),\n fontSize: fontSize,\n lineHeight: m[12] ? m[12] == \"normal\" ? fontSize : parseInt(m[12], 10) : null,\n fontFamily: m[14].split(/\\s*,\\s*/g).map(unquote)\n };\n}\n\nfunction getFontURL(style) {\n function mkFamily(name) {\n if (style.bold) {\n name += \"|bold\";\n }\n\n if (style.italic) {\n name += \"|italic\";\n }\n\n return name.toLowerCase();\n }\n\n var fontFamily = style.fontFamily;\n var name, url;\n\n if (fontFamily instanceof Array) {\n for (var i = 0; i < fontFamily.length; ++i) {\n name = mkFamily(fontFamily[i]);\n url = FONT_MAPPINGS[name];\n\n if (url) {\n break;\n }\n }\n } else {\n url = FONT_MAPPINGS[fontFamily.toLowerCase()];\n }\n\n while (typeof url == \"function\") {\n url = url();\n }\n\n if (!url) {\n url = \"Times-Roman\";\n }\n\n return url;\n}\n\nvar FONT_MAPPINGS = {\n \"serif\": \"Times-Roman\",\n \"serif|bold\": \"Times-Bold\",\n \"serif|italic\": \"Times-Italic\",\n \"serif|bold|italic\": \"Times-BoldItalic\",\n \"sans-serif\": \"Helvetica\",\n \"sans-serif|bold\": \"Helvetica-Bold\",\n \"sans-serif|italic\": \"Helvetica-Oblique\",\n \"sans-serif|bold|italic\": \"Helvetica-BoldOblique\",\n \"monospace\": \"Courier\",\n \"monospace|bold\": \"Courier-Bold\",\n \"monospace|italic\": \"Courier-Oblique\",\n \"monospace|bold|italic\": \"Courier-BoldOblique\",\n \"zapfdingbats\": \"ZapfDingbats\",\n \"zapfdingbats|bold\": \"ZapfDingbats\",\n \"zapfdingbats|italic\": \"ZapfDingbats\",\n \"zapfdingbats|bold|italic\": \"ZapfDingbats\"\n};\n\nfunction fontAlias(alias, name) {\n alias = alias.toLowerCase();\n\n FONT_MAPPINGS[alias] = function () {\n return FONT_MAPPINGS[name];\n };\n\n FONT_MAPPINGS[alias + \"|bold\"] = function () {\n return FONT_MAPPINGS[name + \"|bold\"];\n };\n\n FONT_MAPPINGS[alias + \"|italic\"] = function () {\n return FONT_MAPPINGS[name + \"|italic\"];\n };\n\n FONT_MAPPINGS[alias + \"|bold|italic\"] = function () {\n return FONT_MAPPINGS[name + \"|bold|italic\"];\n };\n} // Let's define some common names to an appropriate replacement.\n// These are overridable via pdf.defineFont, should the user want to\n// include the proper versions.\n\n\nfontAlias(\"Times New Roman\", \"serif\");\nfontAlias(\"Courier New\", \"monospace\");\nfontAlias(\"Arial\", \"sans-serif\");\nfontAlias(\"Helvetica\", \"sans-serif\");\nfontAlias(\"Verdana\", \"sans-serif\");\nfontAlias(\"Tahoma\", \"sans-serif\");\nfontAlias(\"Georgia\", \"sans-serif\");\nfontAlias(\"Monaco\", \"monospace\");\nfontAlias(\"Andale Mono\", \"monospace\");\n\nfunction defineFont(name, url) {\n if (arguments.length == 1) {\n for (var i in name) {\n if (hasOwnProperty(name, i)) {\n defineFont(i, name[i]);\n }\n }\n } else {\n name = name.toLowerCase();\n FONT_MAPPINGS[name] = url; // special handling for DejaVu fonts: if they get defined,\n // let them also replace the default families, for good\n // Unicode support out of the box.\n\n switch (name) {\n case \"dejavu sans\":\n FONT_MAPPINGS[\"sans-serif\"] = url;\n break;\n\n case \"dejavu sans|bold\":\n FONT_MAPPINGS[\"sans-serif|bold\"] = url;\n break;\n\n case \"dejavu sans|italic\":\n FONT_MAPPINGS[\"sans-serif|italic\"] = url;\n break;\n\n case \"dejavu sans|bold|italic\":\n FONT_MAPPINGS[\"sans-serif|bold|italic\"] = url;\n break;\n\n case \"dejavu serif\":\n FONT_MAPPINGS[\"serif\"] = url;\n break;\n\n case \"dejavu serif|bold\":\n FONT_MAPPINGS[\"serif|bold\"] = url;\n break;\n\n case \"dejavu serif|italic\":\n FONT_MAPPINGS[\"serif|italic\"] = url;\n break;\n\n case \"dejavu serif|bold|italic\":\n FONT_MAPPINGS[\"serif|bold|italic\"] = url;\n break;\n\n case \"dejavu mono\":\n FONT_MAPPINGS[\"monospace\"] = url;\n break;\n\n case \"dejavu mono|bold\":\n FONT_MAPPINGS[\"monospace|bold\"] = url;\n break;\n\n case \"dejavu mono|italic\":\n FONT_MAPPINGS[\"monospace|italic\"] = url;\n break;\n\n case \"dejavu mono|bold|italic\":\n FONT_MAPPINGS[\"monospace|bold|italic\"] = url;\n break;\n }\n }\n}\n\nfunction mmul(a, b) {\n var a1 = a[0],\n b1 = a[1],\n c1 = a[2],\n d1 = a[3],\n e1 = a[4],\n f1 = a[5];\n var a2 = b[0],\n b2 = b[1],\n c2 = b[2],\n d2 = b[3],\n e2 = b[4],\n f2 = b[5];\n return [a1 * a2 + b1 * c2, a1 * b2 + b1 * d2, c1 * a2 + d1 * c2, c1 * b2 + d1 * d2, e1 * a2 + f1 * c2 + e2, e1 * b2 + f1 * d2 + f2];\n}\n\nfunction isIdentityMatrix(m) {\n return m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1 && m[4] === 0 && m[5] === 0;\n}\n\nvar TEXT_RENDERING_MODE = {\n fill: 0,\n stroke: 1,\n fillAndStroke: 2,\n invisible: 3,\n fillAndClip: 4,\n strokeAndClip: 5,\n fillStrokeClip: 6,\n clip: 7\n};\nexport { PDFDocument as Document, BinaryStream, defineFont, parseFontDef, getFontURL, loadFonts, loadImages, getPaperOptions, clearImageCache, TEXT_RENDERING_MODE };","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty, yoda */\n\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\nimport * as geo from \"../geometry\";\nimport * as PDF from \"../pdf\";\nimport { arabicToRoman, createPromise, measureText, mergeSort } from '../util';\nimport { parseColor as utils_parseColor, support, template as compileTemplate } from \"../common\";\nimport { Path, Text, Group, Image, Circle, LinearGradient } from \"../drawing\";\nvar browser = support.browser || {};\n/*\n\n XXX: to test:\n\n - cloneNodes function:\n - drawing document containing canvas with page breaking\n - drawing document with named radio -s (should not clear selection)\n - IE9/IE10 don't support el.dataset; do they copy user data?\n\n - repeating table headers/footers on page breaking\n\n - forceBreak, keepTogether\n\n - avoidLinks\n\n */\n\n/* -----[ local vars ]----- */\n\nfunction slice(thing) {\n return Array.prototype.slice.call(thing);\n}\n\nvar KENDO_PSEUDO_ELEMENT = \"KENDO-PSEUDO-ELEMENT\";\nvar IMAGE_CACHE = {};\nvar nodeInfo = {};\nnodeInfo._root = nodeInfo;\n/* -----[ Custom Text node to speed up rendering in PDF ]----- */\n\nvar inBrowser = typeof window !== 'undefined';\nvar microsoft = inBrowser ? browser.msie || browser.edge : false;\n\nvar TextRect = function (Text) {\n function TextRect(str, rect, options) {\n Text.call(this, str, rect.getOrigin(), options);\n this._pdfRect = rect;\n }\n\n if (Text) TextRect.__proto__ = Text;\n TextRect.prototype = Object.create(Text && Text.prototype);\n TextRect.prototype.constructor = TextRect;\n\n TextRect.prototype.rect = function rect() {\n // this is the crux of it: we can avoid a call to\n // measure(), which is what the base class does, since we\n // already know the rect. measure() is s-l-o-w.\n return this._pdfRect;\n };\n\n TextRect.prototype.rawBBox = function rawBBox() {\n // also let's avoid creating a new rectangle.\n return this._pdfRect;\n };\n\n return TextRect;\n}(Text);\n\nfunction addClass(el, cls) {\n if (el.classList) {\n el.classList.add(cls);\n } else {\n el.className += \" \" + cls;\n }\n}\n\nfunction removeClass(el, cls) {\n if (el.classList) {\n el.classList.remove(cls);\n } else {\n el.className = el.className.split(/\\s+/).reduce(function (a, word) {\n if (word != cls) {\n a.push(word);\n }\n\n return a;\n }, []).join(\" \");\n }\n}\n\nfunction setCSS(el, styles) {\n Object.keys(styles).forEach(function (key) {\n el.style[key] = styles[key];\n });\n}\n\nvar matches = typeof Element !== \"undefined\" && Element.prototype && function (p) {\n if (p.matches) {\n return function (el, selector) {\n return el.matches(selector);\n };\n }\n\n if (p.webkitMatchesSelector) {\n return function (el, selector) {\n return el.webkitMatchesSelector(selector);\n };\n }\n\n if (p.mozMatchesSelector) {\n return function (el, selector) {\n return el.mozMatchesSelector(selector);\n };\n }\n\n if (p.msMatchesSelector) {\n return function (el, selector) {\n return el.msMatchesSelector(selector);\n };\n }\n\n return function (s) {\n return [].indexOf.call(document.querySelectorAll(s), this) !== -1;\n };\n}(Element.prototype);\n\nfunction closest(el, selector) {\n if (el.closest) {\n return el.closest(selector);\n } // IE: stringifying rather than simply comparing with `document`,\n // which is not iframe-proof and fails in editor export —\n // https://github.com/telerik/kendo/issues/6721\n\n\n while (el && !/^\\[object (?:HTML)?Document\\]$/.test(String(el))) {\n if (el.nodeType == 1\n /* Element */\n && matches(el, selector)) {\n return el;\n }\n\n el = el.parentNode;\n }\n} // clone nodes ourselves, so that we redraw (DOM or\n// jQuery clone will not)\n\n\nvar cloneNodes = function ($) {\n if ($) {\n // if we have Kendo and jQuery, use this version as it will\n // maintain proper links between cloned element and Kendo\n // widgets (i.e. it clones jQuery data(), which isn't the same\n // as element's data attributes).\n // https://github.com/telerik/kendo-ui-core/issues/2750\n return function cloneNodes(el) {\n var clone = el.cloneNode(false);\n\n if (el.nodeType == 1\n /* Element */\n ) {\n var $el = $(el),\n $clone = $(clone),\n i;\n var data = $el.data();\n\n for (i in data) {\n $clone.data(i, data[i]);\n }\n\n if (/^canvas$/i.test(el.tagName)) {\n clone.getContext(\"2d\").drawImage(el, 0, 0);\n } else if (/^(?:input|select|textarea|option)$/i.test(el.tagName)) {\n // drop the name attributes so that we don't affect the selection of the\n // original nodes (i.e. checked status of radio buttons) when we insert our copy\n // into the DOM. https://github.com/telerik/kendo/issues/5409\n clone.removeAttribute(\"id\");\n clone.removeAttribute(\"name\");\n clone.value = el.value;\n clone.checked = el.checked;\n clone.selected = el.selected;\n }\n\n for (i = el.firstChild; i; i = i.nextSibling) {\n clone.appendChild(cloneNodes(i));\n }\n }\n\n return clone;\n };\n } else {\n // the no-jQuery version\n return function cloneNodes(el) {\n var clone = function dive(node) {\n var clone = node.cloneNode(false);\n\n if (node._kendoExportVisual) {\n clone._kendoExportVisual = node._kendoExportVisual;\n }\n\n for (var i = node.firstChild; i; i = i.nextSibling) {\n clone.appendChild(dive(i));\n }\n\n return clone;\n }(el); // re-draw canvases - https://github.com/telerik/kendo/issues/4872\n\n\n var canvases = el.querySelectorAll(\"canvas\");\n\n if (canvases.length) {\n slice(clone.querySelectorAll(\"canvas\")).forEach(function (canvas, i) {\n canvas.getContext(\"2d\").drawImage(canvases[i], 0, 0);\n });\n } // remove \"name\" attributes from elements -\n // https://github.com/telerik/kendo/issues/5409\n\n\n var orig = el.querySelectorAll(\"input, select, textarea, option\");\n slice(clone.querySelectorAll(\"input, select, textarea, option\")).forEach(function (el, i) {\n el.removeAttribute(\"id\");\n el.removeAttribute(\"name\");\n el.value = orig[i].value;\n el.checked = orig[i].checked;\n el.selected = orig[i].selected;\n });\n return clone;\n };\n }\n}(typeof window !== \"undefined\" && window.kendo && window.kendo.jQuery);\n\nfunction getXY(thing) {\n if (typeof thing == \"number\") {\n return {\n x: thing,\n y: thing\n };\n }\n\n if (Array.isArray(thing)) {\n return {\n x: thing[0],\n y: thing[1]\n };\n }\n\n return {\n x: thing.x,\n y: thing.y\n };\n}\n\nfunction drawDOM(element, options) {\n if (!options) {\n options = {};\n }\n\n var promise = createPromise();\n\n if (!element) {\n return promise.reject(\"No element to export\");\n }\n\n if (typeof window.getComputedStyle != \"function\") {\n throw new Error(\"window.getComputedStyle is missing. You are using an unsupported browser, or running in IE8 compatibility mode. Drawing HTML is supported in Chrome, Firefox, Safari and IE9+.\");\n }\n\n PDF.defineFont(getFontFaces(element.ownerDocument));\n var scale = getXY(options.scale || 1);\n\n function doOne(element) {\n var group = new Group(); // translate to start of page\n\n var pos = element.getBoundingClientRect();\n setTransform(group, [scale.x, 0, 0, scale.y, -pos.left * scale.x, -pos.top * scale.y]);\n nodeInfo._clipbox = false;\n nodeInfo._matrix = geo.Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n\n if (options.avoidLinks === true) {\n nodeInfo._avoidLinks = \"a\";\n } else {\n nodeInfo._avoidLinks = options.avoidLinks;\n }\n\n addClass(element, \"k-pdf-export\");\n renderElement(element, group);\n removeClass(element, \"k-pdf-export\");\n return group;\n }\n\n cacheImages(element, function () {\n var forceBreak = options && options.forcePageBreak;\n var hasPaperSize = options && options.paperSize && options.paperSize != \"auto\";\n var paperOptions = PDF.getPaperOptions(function (key, def) {\n if (key == \"paperSize\") {\n // PDF.getPaperOptions croaks on \"auto\", just pass dummy A4 as we might\n // still be interested in margins.\n return hasPaperSize ? options[key] : \"A4\";\n }\n\n return key in options ? options[key] : def;\n });\n var pageWidth = hasPaperSize && paperOptions.paperSize[0];\n var pageHeight = hasPaperSize && paperOptions.paperSize[1];\n var margin = options.margin && paperOptions.margin;\n var hasMargin = Boolean(margin);\n\n if (forceBreak || pageHeight) {\n if (!margin) {\n margin = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n } // we want paper size and margin to be unaffected by\n // scaling in the output, so we have to reverse-scale\n // before our calculations begin.\n\n\n if (pageWidth) {\n pageWidth /= scale.x;\n }\n\n if (pageHeight) {\n pageHeight /= scale.y;\n }\n\n margin.left /= scale.x;\n margin.right /= scale.x;\n margin.top /= scale.y;\n margin.bottom /= scale.y;\n var group = new Group({\n pdf: {\n multiPage: true,\n paperSize: hasPaperSize ? paperOptions.paperSize : \"auto\",\n _ignoreMargin: hasMargin // HACK! see exportPDF in pdf/drawing.js\n\n }\n });\n handlePageBreaks(function (x) {\n if (options.progress) {\n var canceled = false,\n pageNum = 0;\n\n (function next() {\n if (pageNum < x.pages.length) {\n var page = doOne(x.pages[pageNum]);\n group.append(page);\n options.progress({\n page: page,\n pageNum: ++pageNum,\n totalPages: x.pages.length,\n cancel: function cancel() {\n canceled = true;\n }\n });\n\n if (!canceled) {\n setTimeout(next);\n } else {\n // XXX: should we also fail() the deferred object?\n x.container.parentNode.removeChild(x.container);\n }\n } else {\n x.container.parentNode.removeChild(x.container);\n promise.resolve(group);\n }\n })();\n } else {\n x.pages.forEach(function (page) {\n group.append(doOne(page));\n });\n x.container.parentNode.removeChild(x.container);\n promise.resolve(group);\n }\n }, element, forceBreak, pageWidth ? pageWidth - margin.left - margin.right : null, pageHeight ? pageHeight - margin.top - margin.bottom : null, margin, options);\n } else {\n promise.resolve(doOne(element));\n }\n });\n\n function makeTemplate(template) {\n if (template != null) {\n if (typeof template == \"string\") {\n template = compileTemplate(template.replace(/^\\s+|\\s+$/g, \"\"));\n }\n\n if (typeof template == \"function\") {\n return function (data) {\n var el = template(data);\n\n if (el && typeof el == \"string\") {\n var div = document.createElement(\"div\");\n div.innerHTML = el;\n el = div.firstElementChild;\n }\n\n return el;\n };\n } // assumed DOM element\n\n\n return function () {\n return template.cloneNode(true);\n };\n }\n }\n\n function handlePageBreaks(callback, element, forceBreak, pageWidth, pageHeight, margin, options) {\n var template = makeTemplate(options.template);\n var doc = element.ownerDocument;\n var pages = [];\n var copy = options._destructive ? element : cloneNodes(element);\n var container = doc.createElement(\"KENDO-PDF-DOCUMENT\");\n var adjust = 0; // make sure elements are at the end (Grid widget\n // places TFOOT before TBODY, tricking our algorithm to\n // insert a page break right after the header).\n // https://github.com/telerik/kendo/issues/4699\n\n slice(copy.querySelectorAll(\"tfoot\")).forEach(function (tfoot) {\n tfoot.parentNode.appendChild(tfoot);\n }); // remember the index of each LI from an ordered list.\n // we'll use it to reconstruct the proper numbering.\n\n slice(copy.querySelectorAll(\"ol\")).forEach(function (ol) {\n slice(ol.children).forEach(function (li, index) {\n li.setAttribute(\"kendo-split-index\", index);\n });\n });\n setCSS(container, {\n display: \"block\",\n position: \"absolute\",\n boxSizing: \"content-box\",\n left: \"-10000px\",\n top: \"-10000px\"\n });\n\n if (pageWidth) {\n // subtle: if we don't set the width *and* margins here, the layout in this\n // container will be different from the one in our final page elements, and we'll\n // split at the wrong places.\n setCSS(container, {\n width: pageWidth + \"px\",\n paddingLeft: margin.left + \"px\",\n paddingRight: margin.right + \"px\"\n }); // when the first element has a margin-top (i.e. a

) the page will be\n // inadvertently enlarged by that number (the browser will report the container's\n // bounding box top to start at the element's top, rather than including its\n // margin). Adding overflow: hidden seems to fix it.\n //\n // to understand the difference, try the following snippets in your browser:\n //\n // 1.
\n //

Foo

\n //
\n //\n // 2.
\n //

Foo

\n //
\n //\n // this detail is not important when automatic page breaking is not requested, hence\n // doing it only if pageWidth is defined.\n\n setCSS(copy, {\n overflow: \"hidden\"\n });\n }\n\n element.parentNode.insertBefore(container, element);\n container.appendChild(copy); // we need the timeouts here, so that images dimensions are\n // properly computed in DOM when we start our thing.\n\n if (options.beforePageBreak) {\n setTimeout(function () {\n options.beforePageBreak(container, doPageBreak);\n }, 15);\n } else {\n setTimeout(doPageBreak, 15);\n }\n\n function doPageBreak() {\n if (forceBreak != \"-\" || pageHeight) {\n splitElement(copy);\n }\n\n {\n var page = makePage();\n copy.parentNode.insertBefore(page, copy);\n page.appendChild(copy);\n }\n\n if (template) {\n pages.forEach(function (page, i) {\n var el = template({\n element: page,\n pageNum: i + 1,\n totalPages: pages.length\n });\n\n if (el) {\n page.appendChild(el);\n }\n });\n }\n\n cacheImages(pages, function () {\n // Even though we already cached images, they simply won't be available\n // immediately in the newly created DOM. Previously we'd allow a 10ms timeout,\n // but that's arbitrary and clearly not working in all cases\n // (https://github.com/telerik/kendo/issues/5399), so this function will wait\n // for their .complete attribute.\n whenImagesAreActuallyLoaded(pages, function () {\n callback({\n pages: pages,\n container: container\n });\n });\n });\n }\n\n function keepTogether(el) {\n if (options.keepTogether && matches(el, options.keepTogether) && el.offsetHeight <= pageHeight - adjust) {\n return true;\n }\n\n var tag = el.tagName;\n\n if (/^h[1-6]$/i.test(tag) && el.offsetHeight >= pageHeight - adjust) {\n return false;\n }\n\n return el.getAttribute(\"data-kendo-chart\") || /^(?:img|tr|thead|th|tfoot|iframe|svg|object|canvas|input|textarea|select|video|h[1-6])/i.test(el.tagName);\n }\n\n function splitElement(element) {\n if (element.tagName == \"TABLE\") {\n setCSS(element, {\n tableLayout: \"fixed\"\n });\n }\n\n if (keepTogether(element)) {\n return;\n }\n\n var style = getComputedStyle(element);\n var bottomPadding = parseFloat(getPropertyValue(style, \"padding-bottom\"));\n var bottomBorder = parseFloat(getPropertyValue(style, \"border-bottom-width\"));\n var saveAdjust = adjust;\n adjust += bottomPadding + bottomBorder;\n var isFirst = true;\n\n for (var el = element.firstChild; el; el = el.nextSibling) {\n if (el.nodeType == 1\n /* Element */\n ) {\n isFirst = false;\n\n if (matches(el, forceBreak)) {\n breakAtElement(el);\n continue;\n }\n\n if (!pageHeight) {\n // we're in \"manual breaks mode\"\n splitElement(el);\n continue;\n }\n\n if (!/^(?:static|relative)$/.test(getPropertyValue(getComputedStyle(el), \"position\"))) {\n continue;\n }\n\n var fall = fallsOnMargin(el);\n\n if (fall == 1) {\n // element starts on next page, break before anyway.\n breakAtElement(el);\n } else if (fall) {\n // elements ends up on next page, or possibly doesn't fit on a page at\n // all. break before it anyway if it's an or , otherwise\n // attempt to split.\n if (keepTogether(el)) {\n breakAtElement(el);\n } else {\n splitElement(el);\n }\n } else {\n splitElement(el);\n }\n } else if (el.nodeType == 3\n /* Text */\n && pageHeight) {\n splitText(el, isFirst);\n isFirst = false;\n }\n }\n\n adjust = saveAdjust;\n }\n\n function firstInParent(el) {\n var p = el.parentNode,\n first = p.firstChild;\n\n if (el === first) {\n return true;\n }\n\n if (el === p.children[0]) {\n if (first.nodeType == 7\n /* comment */\n || first.nodeType == 8\n /* processing instruction */\n ) {\n return true;\n }\n\n if (first.nodeType == 3\n /* text */\n ) {\n // if whitespace only we can probably consider it's first\n return !/\\S/.test(first.data);\n }\n }\n\n return false;\n }\n\n function breakAtElement(el) {\n if (el.nodeType == 1 && el !== copy && firstInParent(el)) {\n return breakAtElement(el.parentNode);\n }\n\n var table, colgroup, thead, grid, gridHead;\n table = closest(el, \"table\");\n colgroup = table && table.querySelector(\"colgroup\");\n\n if (options.repeatHeaders) {\n thead = table && table.querySelector(\"thead\"); // If we break page in a Kendo Grid, repeat its header. This ugly hack is\n // necessary because a scrollable grid will keep the header in a separate\n // element from its content.\n //\n // XXX: This is likely to break as soon as the widget HTML is modified.\n\n grid = closest(el, \".k-grid.k-widget\");\n\n if (grid && grid.querySelector(\".k-auto-scrollable\")) {\n gridHead = grid.querySelector(\".k-grid-header\");\n }\n }\n\n var page = makePage();\n var range = doc.createRange();\n range.setStartBefore(copy);\n range.setEndBefore(el);\n page.appendChild(range.extractContents());\n copy.parentNode.insertBefore(page, copy);\n preventBulletOnListItem(el.parentNode);\n\n if (table) {\n table = closest(el, \"table\"); // that's the
on next page!\n\n if (options.repeatHeaders && thead) {\n table.insertBefore(thead.cloneNode(true), table.firstChild);\n }\n\n if (colgroup) {\n table.insertBefore(colgroup.cloneNode(true), table.firstChild);\n }\n }\n\n if (options.repeatHeaders && gridHead) {\n grid = closest(el, \".k-grid.k-widget\");\n grid.insertBefore(gridHead.cloneNode(true), grid.firstChild);\n }\n }\n\n function makePage() {\n var page = doc.createElement(\"KENDO-PDF-PAGE\");\n setCSS(page, {\n display: \"block\",\n boxSizing: \"content-box\",\n width: pageWidth ? pageWidth + \"px\" : \"auto\",\n padding: margin.top + \"px \" + margin.right + \"px \" + margin.bottom + \"px \" + margin.left + \"px\",\n // allow absolutely positioned elements to be relative to current page\n position: \"relative\",\n // without the following we might affect layout of subsequent pages\n height: pageHeight ? pageHeight + \"px\" : \"auto\",\n overflow: pageHeight || pageWidth ? \"hidden\" : \"visible\",\n clear: \"both\"\n }); // debug\n // $(\"
\").css({\n // position : \"absolute\",\n // left : margin.left,\n // top : margin.top,\n // width : pageWidth,\n // height : pageHeight,\n // boxSizing : \"border-box\",\n // background: \"rgba(255, 255, 0, 0.5)\"\n // //border : \"1px solid red\"\n // }).appendTo(page);\n\n if (options && options.pageClassName) {\n page.className = options.pageClassName;\n }\n\n pages.push(page);\n return page;\n }\n\n function fallsOnMargin(thing) {\n var box = thing.getBoundingClientRect();\n\n if (box.width === 0 || box.height === 0) {\n // I'd say an element with dimensions zero fits on current page.\n return 0;\n }\n\n var top = copy.getBoundingClientRect().top;\n var available = pageHeight - adjust;\n return box.height > available ? 3 : box.top - top > available ? 1 : box.bottom - top > available ? 2 : 0;\n }\n\n function splitText(node, isFirst) {\n if (!/\\S/.test(node.data)) {\n return;\n }\n\n var len = node.data.length;\n var range = doc.createRange();\n range.selectNodeContents(node);\n var fall = fallsOnMargin(range);\n\n if (!fall) {\n return; // the whole text fits on current page\n }\n\n var nextnode = node;\n\n if (fall == 1) {\n // starts on next page, break before anyway.\n if (isFirst) {\n // avoid leaving an empty

,

  • , etc. on previous page.\n breakAtElement(node.parentNode);\n } else {\n breakAtElement(node);\n }\n } else {\n (function findEOP(min, pos, max) {\n range.setEnd(node, pos);\n\n if (min == pos || pos == max) {\n return pos;\n }\n\n if (fallsOnMargin(range)) {\n return findEOP(min, min + pos >> 1, pos);\n } else {\n return findEOP(pos, pos + max >> 1, max);\n }\n })(0, len >> 1, len);\n\n if (!/\\S/.test(range.toString()) && isFirst) {\n // avoid leaving an empty

    ,

  • , etc. on previous page.\n breakAtElement(node.parentNode);\n } else {\n // This is only needed for IE, but it feels cleaner to do it anyway. Without\n // it, IE will truncate a very long text (playground/pdf-long-text-2.html).\n nextnode = node.splitText(range.endOffset);\n var page = makePage();\n range.setStartBefore(copy);\n page.appendChild(range.extractContents());\n copy.parentNode.insertBefore(page, copy);\n preventBulletOnListItem(nextnode.parentNode);\n }\n }\n\n splitText(nextnode);\n }\n\n function preventBulletOnListItem(el) {\n // set a hint on continued LI elements, to tell the\n // renderer not to draw the bullet again.\n // https://github.com/telerik/kendo-ui-core/issues/2732\n var li = closest(el, \"li\");\n\n if (li) {\n li.setAttribute(\"kendo-no-bullet\", \"1\");\n preventBulletOnListItem(li.parentNode);\n }\n }\n }\n\n return promise;\n}\n\ndrawDOM.getFontFaces = getFontFaces; // This is needed for the Spreadsheet print functionality. Since\n// there we only need to draw text, this cuts through the ceremony\n// of drawDOM/renderElement and renders the text node directly.\n\ndrawDOM.drawText = function (element) {\n var group = new Group();\n nodeInfo._clipbox = false;\n nodeInfo._matrix = geo.Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n pushNodeInfo(element, getComputedStyle(element), group);\n\n if (element.firstChild.nodeType == 3\n /* Text */\n ) {\n // avoid the penalty of renderElement\n renderText(element, element.firstChild, group);\n } else {\n _renderElement(element, group);\n }\n\n popNodeInfo();\n return group;\n};\n\nvar parseBackgroundImage = function () {\n var tok_linear_gradient = /^((-webkit-|-moz-|-o-|-ms-)?linear-gradient\\s*)\\(/; //var tok_radial_gradient = /^((-webkit-|-moz-|-o-|-ms-)?radial-gradient\\s*)\\(/;\n\n var tok_percent = /^([-0-9.]+%)/;\n var tok_length = /^([-0-9.]+px)/;\n var tok_keyword = /^(left|right|top|bottom|to|center)\\W/;\n var tok_angle = /^([-0-9.]+(deg|grad|rad|turn)|0)/;\n var tok_whitespace = /^(\\s+)/;\n var tok_popen = /^(\\()/;\n var tok_pclose = /^(\\))/;\n var tok_comma = /^(,)/;\n var tok_url = /^(url)\\(/;\n var tok_content = /^(.*?)\\)/;\n var cache1 = {},\n cache2 = {};\n\n function parse(input) {\n var orig = input;\n\n if (hasOwnProperty(cache1, orig)) {\n return cache1[orig];\n }\n\n function skip_ws() {\n var m = tok_whitespace.exec(input);\n\n if (m) {\n input = input.substr(m[1].length);\n }\n }\n\n function read(token) {\n skip_ws();\n var m = token.exec(input);\n\n if (m) {\n input = input.substr(m[1].length);\n return m[1];\n }\n }\n\n function read_stop() {\n var color = utils_parseColor(input, true);\n var length, percent;\n\n if (color) {\n var match = /^#[0-9a-f]+/i.exec(input) || /^rgba?\\(.*?\\)/i.exec(input) || /^..*?\\b/.exec(input); // maybe named color\n\n input = input.substr(match[0].length);\n color = color.toRGB();\n\n if (!(length = read(tok_length))) {\n percent = read(tok_percent);\n }\n\n return {\n color: color,\n length: length,\n percent: percent\n };\n }\n }\n\n function read_linear_gradient(propName) {\n var angle;\n var to1, to2;\n var stops = [];\n var reverse = false;\n\n if (read(tok_popen)) {\n // 1. [ || to , ]?\n angle = read(tok_angle);\n\n if (angle == \"0\") {\n angle = \"0deg\"; // Edge\n }\n\n if (angle) {\n angle = parseAngle(angle);\n read(tok_comma);\n } else {\n to1 = read(tok_keyword);\n\n if (to1 == \"to\") {\n to1 = read(tok_keyword);\n } else if (to1 && /^-/.test(propName)) {\n reverse = true;\n }\n\n to2 = read(tok_keyword);\n read(tok_comma);\n }\n\n if (/-moz-/.test(propName) && angle == null && to1 == null) {\n var x = read(tok_percent),\n y = read(tok_percent);\n reverse = true;\n\n if (x == \"0%\") {\n to1 = \"left\";\n } else if (x == \"100%\") {\n to1 = \"right\";\n }\n\n if (y == \"0%\") {\n to2 = \"top\";\n } else if (y == \"100%\") {\n to2 = \"bottom\";\n }\n\n read(tok_comma);\n } // 2. color stops\n\n\n while (input && !read(tok_pclose)) {\n var stop = read_stop();\n\n if (!stop) {\n break;\n }\n\n stops.push(stop);\n read(tok_comma);\n }\n\n return {\n type: \"linear\",\n angle: angle,\n to: to1 && to2 ? to1 + \" \" + to2 : to1 ? to1 : to2 ? to2 : null,\n stops: stops,\n reverse: reverse\n };\n }\n }\n\n function read_url() {\n if (read(tok_popen)) {\n var url = read(tok_content);\n url = url.replace(/^['\"]+|[\"']+$/g, \"\");\n read(tok_pclose);\n return {\n type: \"url\",\n url: url\n };\n }\n }\n\n var tok;\n\n if (tok = read(tok_linear_gradient)) {\n tok = read_linear_gradient(tok);\n } else if (tok = read(tok_url)) {\n tok = read_url();\n }\n\n return cache1[orig] = tok || {\n type: \"none\"\n };\n }\n\n return function (input) {\n if (hasOwnProperty(cache2, input)) {\n return cache2[input];\n }\n\n return cache2[input] = splitProperty(input).map(parse);\n };\n}();\n\nvar splitProperty = function () {\n var cache = {};\n return function (input, separator) {\n if (!separator) {\n separator = /^\\s*,\\s*/;\n }\n\n var cacheKey = input + separator;\n\n if (hasOwnProperty(cache, cacheKey)) {\n return cache[cacheKey];\n }\n\n var ret = [];\n var last = 0,\n pos = 0;\n var in_paren = 0;\n var in_string = false;\n var m;\n\n function looking_at(rx) {\n return m = rx.exec(input.substr(pos));\n }\n\n function trim(str) {\n return str.replace(/^\\s+|\\s+$/g, \"\");\n }\n\n while (pos < input.length) {\n if (!in_string && looking_at(/^[\\(\\[\\{]/)) {\n in_paren++;\n pos++;\n } else if (!in_string && looking_at(/^[\\)\\]\\}]/)) {\n in_paren--;\n pos++;\n } else if (!in_string && looking_at(/^[\\\"\\']/)) {\n in_string = m[0];\n pos++;\n } else if (in_string == \"'\" && looking_at(/^\\\\\\'/)) {\n pos += 2;\n } else if (in_string == '\"' && looking_at(/^\\\\\\\"/)) {\n pos += 2;\n } else if (in_string == \"'\" && looking_at(/^\\'/)) {\n in_string = false;\n pos++;\n } else if (in_string == '\"' && looking_at(/^\\\"/)) {\n in_string = false;\n pos++;\n } else if (looking_at(separator)) {\n if (!in_string && !in_paren && pos > last) {\n ret.push(trim(input.substring(last, pos)));\n last = pos + m[0].length;\n }\n\n pos += m[0].length;\n } else {\n pos++;\n }\n }\n\n if (last < pos) {\n ret.push(trim(input.substring(last, pos)));\n }\n\n return cache[cacheKey] = ret;\n };\n}();\n\nvar getFontURL = function (cache) {\n return function (el) {\n // XXX: for IE we get here the whole cssText of the rule,\n // because the computedStyle.src is empty. Next time we need\n // to fix these regexps we better write a CSS parser. :-\\\n var url = cache[el];\n\n if (!url) {\n var m;\n\n if (m = /url\\((['\"]?)([^'\")]*?)\\1\\)\\s+format\\((['\"]?)truetype\\3\\)/.exec(el)) {\n url = cache[el] = m[2];\n } else if (m = /url\\((['\"]?)([^'\")]*?\\.ttf)\\1\\)/.exec(el)) {\n url = cache[el] = m[2];\n }\n }\n\n return url;\n };\n}(Object.create(null));\n\nvar getFontHeight = function (cache) {\n return function (font) {\n var height = cache[font];\n\n if (height == null) {\n height = cache[font] = measureText(\"Mapq\", {\n font: font\n }).height;\n }\n\n return height;\n };\n}(Object.create(null));\n\nfunction getFontFaces(doc) {\n if (doc == null) {\n doc = document;\n }\n\n var result = {};\n\n for (var i = 0; i < doc.styleSheets.length; ++i) {\n doStylesheet(doc.styleSheets[i]);\n }\n\n return result;\n\n function doStylesheet(ss) {\n if (ss) {\n var rules = null;\n\n try {\n rules = ss.cssRules;\n } catch (ex) {}\n\n if (rules) {\n addRules(ss, rules);\n }\n }\n }\n\n function findFonts(rule) {\n var src = getPropertyValue(rule.style, \"src\");\n\n if (src) {\n return splitProperty(src).reduce(function (a, el) {\n var font = getFontURL(el);\n\n if (font) {\n a.push(font);\n }\n\n return a;\n }, []);\n } else {\n // Internet Explorer\n // XXX: this is gross. should work though for valid CSS.\n var font = getFontURL(rule.cssText);\n return font ? [font] : [];\n }\n }\n\n function addRules(styleSheet, rules) {\n for (var i = 0; i < rules.length; ++i) {\n var r = rules[i];\n\n switch (r.type) {\n case 3:\n // CSSImportRule\n doStylesheet(r.styleSheet);\n break;\n\n case 5:\n // CSSFontFaceRule\n var style = r.style;\n var family = splitProperty(getPropertyValue(style, \"font-family\"));\n var bold = /^([56789]00|bold)$/i.test(getPropertyValue(style, \"font-weight\"));\n var italic = \"italic\" == getPropertyValue(style, \"font-style\");\n var src = findFonts(r);\n\n if (src.length > 0) {\n addRule(styleSheet, family, bold, italic, src[0]);\n }\n\n }\n }\n }\n\n function addRule(styleSheet, names, bold, italic, url) {\n // We get full resolved absolute URLs in Chrome, but sadly\n // not in Firefox.\n if (!/^data:/i.test(url)) {\n if (!(/^[^\\/:]+:\\/\\//.test(url) || /^\\//.test(url))) {\n url = String(styleSheet.href).replace(/[^\\/]*$/, \"\") + url;\n }\n }\n\n names.forEach(function (name) {\n name = name.replace(/^(['\"]?)(.*?)\\1$/, \"$2\"); // it's quoted\n\n if (bold) {\n name += \"|bold\";\n }\n\n if (italic) {\n name += \"|italic\";\n }\n\n result[name] = url;\n });\n }\n}\n\nfunction hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction getCounter(name) {\n name = \"_counter_\" + name;\n return nodeInfo[name];\n}\n\nfunction getAllCounters(name) {\n var values = [],\n p = nodeInfo;\n name = \"_counter_\" + name;\n\n while (p) {\n if (hasOwnProperty(p, name)) {\n values.push(p[name]);\n }\n\n p = Object.getPrototypeOf(p);\n }\n\n return values.reverse();\n}\n\nfunction incCounter(name, inc) {\n var p = nodeInfo;\n name = \"_counter_\" + name;\n\n while (p && !hasOwnProperty(p, name)) {\n p = Object.getPrototypeOf(p);\n }\n\n if (!p) {\n p = nodeInfo._root;\n }\n\n p[name] = (p[name] || 0) + (inc == null ? 1 : inc);\n}\n\nfunction resetCounter(name, val) {\n name = \"_counter_\" + name;\n nodeInfo[name] = val == null ? 0 : val;\n}\n\nfunction doCounters(a, f, def) {\n for (var i = 0; i < a.length;) {\n var name = a[i++];\n var val = parseFloat(a[i]);\n\n if (isNaN(val)) {\n f(name, def);\n } else {\n f(name, val);\n ++i;\n }\n }\n}\n\nfunction updateCounters(style) {\n var counterReset = getPropertyValue(style, \"counter-reset\");\n\n if (counterReset) {\n doCounters(splitProperty(counterReset, /^\\s+/), resetCounter, 0);\n }\n\n var counterIncrement = getPropertyValue(style, \"counter-increment\");\n\n if (counterIncrement) {\n doCounters(splitProperty(counterIncrement, /^\\s+/), incCounter, 1);\n }\n}\n\nfunction parseColor(str, css) {\n var color = utils_parseColor(str, true);\n\n if (color) {\n color = color.toRGB();\n\n if (css) {\n color = color.toCssRgba();\n } else if (color.a === 0) {\n color = null;\n }\n }\n\n return color;\n}\n\nfunction whenImagesAreActuallyLoaded(elements, callback) {\n var pending = 0;\n elements.forEach(function (el) {\n var images = el.querySelectorAll(\"img\");\n\n for (var i = 0; i < images.length; ++i) {\n var img = images[i];\n\n if (!img.complete) {\n pending++;\n img.onload = img.onerror = next;\n }\n }\n });\n\n if (!pending) {\n next();\n }\n\n function next() {\n if (--pending <= 0) {\n callback();\n }\n }\n}\n\nfunction cacheImages(element, callback) {\n var urls = [];\n\n function add(url) {\n if (!IMAGE_CACHE[url]) {\n IMAGE_CACHE[url] = true;\n urls.push(url);\n }\n }\n\n function dive(element) {\n if (/^img$/i.test(element.tagName)) {\n add(element.src);\n }\n\n parseBackgroundImage(getPropertyValue(getComputedStyle(element), \"background-image\")).forEach(function (bg) {\n if (bg.type == \"url\") {\n add(bg.url);\n }\n });\n\n if (element.children) {\n slice(element.children).forEach(dive);\n }\n }\n\n if (Array.isArray(element)) {\n element.forEach(dive);\n } else {\n dive(element);\n }\n\n var count = urls.length;\n\n function next() {\n if (--count <= 0) {\n callback();\n }\n }\n\n if (count === 0) {\n next();\n }\n\n urls.forEach(function (url) {\n var img = IMAGE_CACHE[url] = new window.Image();\n\n if (!/^data:/i.test(url)) {\n img.crossOrigin = \"Anonymous\";\n }\n\n img.src = url;\n\n if (img.complete) {\n next();\n } else {\n img.onload = next;\n\n img.onerror = function () {\n IMAGE_CACHE[url] = null;\n next();\n };\n }\n });\n}\n\nfunction alphaNumeral(n) {\n var result = \"\";\n\n do {\n var r = n % 26;\n result = String.fromCharCode(97 + r) + result;\n n = Math.floor(n / 26);\n } while (n > 0);\n\n return result;\n}\n\nfunction pushNodeInfo(element, style, group) {\n nodeInfo = Object.create(nodeInfo);\n nodeInfo[element.tagName.toLowerCase()] = {\n element: element,\n style: style\n };\n var decoration = getPropertyValue(style, \"text-decoration\");\n\n if (decoration && decoration != \"none\") {\n var color = getPropertyValue(style, \"color\");\n decoration.split(/\\s+/g).forEach(function (name) {\n if (!nodeInfo[name]) {\n nodeInfo[name] = color;\n }\n });\n }\n\n if (createsStackingContext(style)) {\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n }\n}\n\nfunction popNodeInfo() {\n nodeInfo = Object.getPrototypeOf(nodeInfo);\n}\n\nfunction updateClipbox(path) {\n if (nodeInfo._clipbox != null) {\n var box = path.bbox(nodeInfo._matrix);\n\n if (nodeInfo._clipbox) {\n nodeInfo._clipbox = geo.Rect.intersect(nodeInfo._clipbox, box);\n } else {\n nodeInfo._clipbox = box;\n }\n }\n}\n\nfunction emptyClipbox() {\n var cb = nodeInfo._clipbox;\n\n if (cb == null) {\n return true;\n }\n\n if (cb) {\n return cb.width() === 0 || cb.height() === 0;\n }\n}\n\nfunction createsStackingContext(style) {\n function prop(name) {\n return getPropertyValue(style, name);\n }\n\n if (prop(\"transform\") != \"none\" || prop(\"position\") != \"static\" || prop(\"z-index\") != \"auto\" || prop(\"opacity\") < 1) {\n return true;\n }\n}\n\nfunction getComputedStyle(element, pseudoElt) {\n return window.getComputedStyle(element, pseudoElt || null);\n}\n\nfunction getPropertyValue(style, prop, defa) {\n var val = style.getPropertyValue(prop);\n\n if (val == null || val === \"\") {\n if (browser.webkit) {\n val = style.getPropertyValue(\"-webkit-\" + prop);\n } else if (browser.mozilla) {\n val = style.getPropertyValue(\"-moz-\" + prop);\n } else if (browser.opera) {\n val = style.getPropertyValue(\"-o-\" + prop);\n } else if (microsoft) {\n val = style.getPropertyValue(\"-ms-\" + prop);\n }\n }\n\n if (arguments.length > 2 && (val == null || val === \"\")) {\n return defa;\n } else {\n return val;\n }\n}\n\nfunction pleaseSetPropertyValue(style, prop, value, important) {\n style.setProperty(prop, value, important);\n\n if (browser.webkit) {\n style.setProperty(\"-webkit-\" + prop, value, important);\n } else if (browser.mozilla) {\n style.setProperty(\"-moz-\" + prop, value, important);\n } else if (browser.opera) {\n style.setProperty(\"-o-\" + prop, value, important);\n } else if (microsoft) {\n style.setProperty(\"-ms-\" + prop, value, important);\n prop = \"ms\" + prop.replace(/(^|-)([a-z])/g, function (s, p1, p2) {\n return p1 + p2.toUpperCase();\n });\n style[prop] = value;\n }\n}\n\nfunction getBorder(style, side) {\n side = \"border-\" + side;\n return {\n width: parseFloat(getPropertyValue(style, side + \"-width\")),\n style: getPropertyValue(style, side + \"-style\"),\n color: parseColor(getPropertyValue(style, side + \"-color\"), true)\n };\n}\n\nfunction saveStyle(element, func) {\n var prev = element.style.cssText;\n var result = func();\n element.style.cssText = prev;\n return result;\n}\n\nfunction getBorderRadius(style, side) {\n var r = getPropertyValue(style, \"border-\" + side + \"-radius\").split(/\\s+/g).map(parseFloat);\n\n if (r.length == 1) {\n r.push(r[0]);\n }\n\n return sanitizeRadius({\n x: r[0],\n y: r[1]\n });\n}\n\nfunction getContentBox(element) {\n var box = element.getBoundingClientRect();\n box = innerBox(box, \"border-*-width\", element);\n box = innerBox(box, \"padding-*\", element);\n return box;\n}\n\nfunction innerBox(box, prop, element) {\n var style, wt, wr, wb, wl;\n\n if (typeof prop == \"string\") {\n style = getComputedStyle(element);\n wt = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"top\")));\n wr = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"right\")));\n wb = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"bottom\")));\n wl = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"left\")));\n } else if (typeof prop == \"number\") {\n wt = wr = wb = wl = prop;\n }\n\n return {\n top: box.top + wt,\n right: box.right - wr,\n bottom: box.bottom - wb,\n left: box.left + wl,\n width: box.right - box.left - wr - wl,\n height: box.bottom - box.top - wb - wt\n };\n}\n\nfunction getTransform(style) {\n var transform = getPropertyValue(style, \"transform\");\n\n if (transform == \"none\") {\n return null;\n }\n\n var matrix = /^\\s*matrix\\(\\s*(.*?)\\s*\\)\\s*$/.exec(transform);\n\n if (matrix) {\n var origin = getPropertyValue(style, \"transform-origin\");\n matrix = matrix[1].split(/\\s*,\\s*/g).map(parseFloat);\n origin = origin.split(/\\s+/g).map(parseFloat);\n return {\n matrix: matrix,\n origin: origin\n };\n }\n}\n\nfunction radiansToDegrees(radians) {\n return 180 * radians / Math.PI % 360;\n}\n\nfunction parseAngle(angle) {\n var num = parseFloat(angle);\n\n if (/grad$/.test(angle)) {\n return Math.PI * num / 200;\n } else if (/rad$/.test(angle)) {\n return num;\n } else if (/turn$/.test(angle)) {\n return Math.PI * num * 2;\n } else if (/deg$/.test(angle)) {\n return Math.PI * num / 180;\n }\n}\n\nfunction setTransform(shape, m) {\n m = new geo.Matrix(m[0], m[1], m[2], m[3], m[4], m[5]);\n shape.transform(m);\n return m;\n}\n\nfunction setClipping(shape, clipPath) {\n shape.clip(clipPath);\n}\n\nfunction addArcToPath(path, x, y, options) {\n var points = new geo.Arc([x, y], options).curvePoints(),\n i = 1;\n\n while (i < points.length) {\n path.curveTo(points[i++], points[i++], points[i++]);\n }\n}\n\nfunction sanitizeRadius(r) {\n if (r.x <= 0 || r.y <= 0) {\n r.x = r.y = 0;\n }\n\n return r;\n}\n\nfunction adjustBorderRadiusForBox(box, rTL, rTR, rBR, rBL) {\n // adjust border radiuses such that the sum of adjacent\n // radiuses is not bigger than the length of the side.\n // seems the correct algorithm is variant (3) from here:\n // http://www.w3.org/Style/CSS/Tracker/issues/29?changelog\n var tl_x = Math.max(0, rTL.x),\n tl_y = Math.max(0, rTL.y);\n var tr_x = Math.max(0, rTR.x),\n tr_y = Math.max(0, rTR.y);\n var br_x = Math.max(0, rBR.x),\n br_y = Math.max(0, rBR.y);\n var bl_x = Math.max(0, rBL.x),\n bl_y = Math.max(0, rBL.y);\n var f = Math.min(box.width / (tl_x + tr_x), box.height / (tr_y + br_y), box.width / (br_x + bl_x), box.height / (bl_y + tl_y));\n\n if (f < 1) {\n tl_x *= f;\n tl_y *= f;\n tr_x *= f;\n tr_y *= f;\n br_x *= f;\n br_y *= f;\n bl_x *= f;\n bl_y *= f;\n }\n\n return {\n tl: {\n x: tl_x,\n y: tl_y\n },\n tr: {\n x: tr_x,\n y: tr_y\n },\n br: {\n x: br_x,\n y: br_y\n },\n bl: {\n x: bl_x,\n y: bl_y\n }\n };\n}\n\nfunction elementRoundBox(element, box, type) {\n var style = getComputedStyle(element);\n var rTL = getBorderRadius(style, \"top-left\");\n var rTR = getBorderRadius(style, \"top-right\");\n var rBL = getBorderRadius(style, \"bottom-left\");\n var rBR = getBorderRadius(style, \"bottom-right\");\n\n if (type == \"padding\" || type == \"content\") {\n var bt = getBorder(style, \"top\");\n var br = getBorder(style, \"right\");\n var bb = getBorder(style, \"bottom\");\n var bl = getBorder(style, \"left\");\n rTL.x -= bl.width;\n rTL.y -= bt.width;\n rTR.x -= br.width;\n rTR.y -= bt.width;\n rBR.x -= br.width;\n rBR.y -= bb.width;\n rBL.x -= bl.width;\n rBL.y -= bb.width;\n\n if (type == \"content\") {\n var pt = parseFloat(getPropertyValue(style, \"padding-top\"));\n var pr = parseFloat(getPropertyValue(style, \"padding-right\"));\n var pb = parseFloat(getPropertyValue(style, \"padding-bottom\"));\n var pl = parseFloat(getPropertyValue(style, \"padding-left\"));\n rTL.x -= pl;\n rTL.y -= pt;\n rTR.x -= pr;\n rTR.y -= pt;\n rBR.x -= pr;\n rBR.y -= pb;\n rBL.x -= pl;\n rBL.y -= pb;\n }\n }\n\n if (typeof type == \"number\") {\n rTL.x -= type;\n rTL.y -= type;\n rTR.x -= type;\n rTR.y -= type;\n rBR.x -= type;\n rBR.y -= type;\n rBL.x -= type;\n rBL.y -= type;\n }\n\n return roundBox(box, rTL, rTR, rBR, rBL);\n} // Create a drawing.Path for a rounded rectangle. Receives the\n// bounding box and the border-radiuses in CSS order (top-left,\n// top-right, bottom-right, bottom-left). The radiuses must be\n// objects containing x (horiz. radius) and y (vertical radius).\n\n\nfunction roundBox(box, rTL0, rTR0, rBR0, rBL0) {\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n var path = new Path({\n fill: null,\n stroke: null\n });\n path.moveTo(box.left, box.top + rTL.y);\n\n if (rTL.x) {\n addArcToPath(path, box.left + rTL.x, box.top + rTL.y, {\n startAngle: -180,\n endAngle: -90,\n radiusX: rTL.x,\n radiusY: rTL.y\n });\n }\n\n path.lineTo(box.right - rTR.x, box.top);\n\n if (rTR.x) {\n addArcToPath(path, box.right - rTR.x, box.top + rTR.y, {\n startAngle: -90,\n endAngle: 0,\n radiusX: rTR.x,\n radiusY: rTR.y\n });\n }\n\n path.lineTo(box.right, box.bottom - rBR.y);\n\n if (rBR.x) {\n addArcToPath(path, box.right - rBR.x, box.bottom - rBR.y, {\n startAngle: 0,\n endAngle: 90,\n radiusX: rBR.x,\n radiusY: rBR.y\n });\n }\n\n path.lineTo(box.left + rBL.x, box.bottom);\n\n if (rBL.x) {\n addArcToPath(path, box.left + rBL.x, box.bottom - rBL.y, {\n startAngle: 90,\n endAngle: 180,\n radiusX: rBL.x,\n radiusY: rBL.y\n });\n }\n\n return path.close();\n}\n\nfunction formatCounter(val, style) {\n var str = String(parseFloat(val));\n\n switch (style) {\n case \"decimal-leading-zero\":\n if (str.length < 2) {\n str = \"0\" + str;\n }\n\n return str;\n\n case \"lower-roman\":\n return arabicToRoman(val).toLowerCase();\n\n case \"upper-roman\":\n return arabicToRoman(val).toUpperCase();\n\n case \"lower-latin\":\n case \"lower-alpha\":\n return alphaNumeral(val - 1);\n\n case \"upper-latin\":\n case \"upper-alpha\":\n return alphaNumeral(val - 1).toUpperCase();\n\n default:\n return str;\n }\n}\n\nfunction evalPseudoElementContent(element, content) {\n function displayCounter(name, style, separator) {\n if (!separator) {\n return formatCounter(getCounter(name) || 0, style);\n }\n\n separator = separator.replace(/^\\s*([\"'])(.*)\\1\\s*$/, \"$2\");\n return getAllCounters(name).map(function (val) {\n return formatCounter(val, style);\n }).join(separator);\n }\n\n var a = splitProperty(content, /^\\s+/);\n var result = [],\n m;\n a.forEach(function (el) {\n var tmp;\n\n if (m = /^\\s*([\"'])(.*)\\1\\s*$/.exec(el)) {\n result.push(m[2].replace(/\\\\([0-9a-f]{4})/gi, function (s, p) {\n return String.fromCharCode(parseInt(p, 16));\n }));\n } else if (m = /^\\s*counter\\((.*?)\\)\\s*$/.exec(el)) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[1]));\n } else if (m = /^\\s*counters\\((.*?)\\)\\s*$/.exec(el)) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[2], tmp[1]));\n } else if (m = /^\\s*attr\\((.*?)\\)\\s*$/.exec(el)) {\n result.push(element.getAttribute(m[1]) || \"\");\n } else {\n result.push(el);\n }\n });\n return result.join(\"\");\n}\n\nfunction getCssText(style) {\n if (style.cssText) {\n return style.cssText;\n } // Status: NEW. Report year: 2002. Current year: 2014.\n // Nice played, Mozillians.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=137687\n\n\n var result = [];\n\n for (var i = 0; i < style.length; ++i) {\n result.push(style[i] + \": \" + getPropertyValue(style, style[i]));\n }\n\n return result.join(\";\\n\");\n}\n\nfunction _renderWithPseudoElements(element, group) {\n if (element.tagName == KENDO_PSEUDO_ELEMENT) {\n _renderElement(element, group);\n\n return;\n }\n\n var fake = [];\n\n function pseudo(kind, place) {\n var style = getComputedStyle(element, kind),\n content = style.content;\n updateCounters(style);\n\n if (content && content != \"normal\" && content != \"none\" && style.width != \"0px\") {\n var psel = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n psel.style.cssText = getCssText(style);\n psel.textContent = evalPseudoElementContent(element, content);\n element.insertBefore(psel, place);\n fake.push(psel);\n }\n }\n\n pseudo(\":before\", element.firstChild);\n pseudo(\":after\", null);\n\n if (fake.length > 0) {\n var saveClass = element.className;\n element.className += \" kendo-pdf-hide-pseudo-elements\";\n\n _renderElement(element, group);\n\n element.className = saveClass;\n fake.forEach(function (el) {\n element.removeChild(el);\n });\n } else {\n _renderElement(element, group);\n }\n}\n\nfunction _renderElement(element, group) {\n var style = getComputedStyle(element);\n var top = getBorder(style, \"top\");\n var right = getBorder(style, \"right\");\n var bottom = getBorder(style, \"bottom\");\n var left = getBorder(style, \"left\");\n var rTL0 = getBorderRadius(style, \"top-left\");\n var rTR0 = getBorderRadius(style, \"top-right\");\n var rBL0 = getBorderRadius(style, \"bottom-left\");\n var rBR0 = getBorderRadius(style, \"bottom-right\");\n var dir = getPropertyValue(style, \"direction\");\n var backgroundColor = getPropertyValue(style, \"background-color\");\n backgroundColor = parseColor(backgroundColor);\n var backgroundImage = parseBackgroundImage(getPropertyValue(style, \"background-image\"));\n var backgroundRepeat = splitProperty(getPropertyValue(style, \"background-repeat\"));\n var backgroundPosition = splitProperty(getPropertyValue(style, \"background-position\"));\n var backgroundOrigin = splitProperty(getPropertyValue(style, \"background-origin\"));\n var backgroundSize = splitProperty(getPropertyValue(style, \"background-size\")); // IE shrinks the text with text-overflow: ellipsis,\n // apparently because the returned bounding box for the range\n // is limited to the visible area minus space for the dots,\n // instead of being the full width of the text.\n //\n // https://github.com/telerik/kendo/issues/5232\n // https://github.com/telerik/kendo-ui-core/issues/1868\n //\n // We have to test it here rather than in renderText because\n // text-overflow: ellipsis could be set on a parent element (not\n // necessarily the one containing the text); in this case,\n // getComputedStyle(elementWithTheText) will return \"clip\", not\n // \"ellipsis\" (which is probably a bug, but oh well...)\n\n var textOverflow, saveTextOverflow;\n\n if (microsoft) {\n textOverflow = style.textOverflow; // computed style\n\n if (textOverflow == \"ellipsis\") {\n saveTextOverflow = element.style.textOverflow; // own style.\n\n element.style.textOverflow = \"clip\";\n }\n }\n\n if (browser.msie && browser.version < 10) {\n // IE9 hacks. getPropertyValue won't return the correct\n // value. Sucks that we have to do it here, I'd prefer to\n // move it in getPropertyValue, but we don't have the\n // element.\n backgroundPosition = splitProperty(element.currentStyle.backgroundPosition);\n }\n\n var innerbox = innerBox(element.getBoundingClientRect(), \"border-*-width\", element); // CSS \"clip\" property - if present, replace the group with a\n // new one which is clipped. This must happen before drawing\n // the borders and background.\n\n (function () {\n var clip = getPropertyValue(style, \"clip\");\n var m = /^\\s*rect\\((.*)\\)\\s*$/.exec(clip);\n\n if (m) {\n var a = m[1].split(/[ ,]+/g);\n var top = a[0] == \"auto\" ? innerbox.top : parseFloat(a[0]) + innerbox.top;\n var right = a[1] == \"auto\" ? innerbox.right : parseFloat(a[1]) + innerbox.left;\n var bottom = a[2] == \"auto\" ? innerbox.bottom : parseFloat(a[2]) + innerbox.top;\n var left = a[3] == \"auto\" ? innerbox.left : parseFloat(a[3]) + innerbox.left;\n var tmp = new Group();\n var clipPath = new Path().moveTo(left, top).lineTo(right, top).lineTo(right, bottom).lineTo(left, bottom).close();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n })();\n\n var boxes, i, cells;\n var display = getPropertyValue(style, \"display\");\n\n if (display == \"table-row\") {\n // because of rowspan/colspan, we shouldn't draw background of table row elements on the\n // box given by its getBoundingClientRect, because if we do we risk overwritting a\n // previously rendered cell. https://github.com/telerik/kendo/issues/4881\n boxes = [];\n\n for (i = 0, cells = element.children; i < cells.length; ++i) {\n boxes.push(cells[i].getBoundingClientRect());\n }\n } else {\n boxes = element.getClientRects();\n\n if (boxes.length == 1) {\n // Workaround the missing borders in Chrome! getClientRects() boxes contains values\n // rounded to integer. getBoundingClientRect() appears to work fine. We still need\n // getClientRects() to support cases where there are more boxes (continued inline\n // elements that might have border/background).\n boxes = [element.getBoundingClientRect()];\n }\n } // This function workarounds another Chrome bug, where boxes returned for a table with\n // border-collapse: collapse will overlap the table border. Our rendering is not perfect in\n // such case anyway, but with this is better than without it.\n\n\n boxes = adjustBoxes(boxes);\n\n for (i = 0; i < boxes.length; ++i) {\n drawOneBox(boxes[i], i === 0, i == boxes.length - 1);\n } // Render links as separate groups. We can't use boxes returned by element's getClientRects\n // because if display type is \"inline\" (default for ), boxes will not include the height of\n // images inside. https://github.com/telerik/kendo-ui-core/issues/3359\n\n\n if (element.tagName == \"A\" && element.href && !/^#?$/.test(element.getAttribute(\"href\"))) {\n if (!nodeInfo._avoidLinks || !matches(element, nodeInfo._avoidLinks)) {\n var r = document.createRange();\n r.selectNodeContents(element);\n slice(r.getClientRects()).forEach(function (box) {\n var g = new Group();\n g._pdfLink = {\n url: element.href,\n top: box.top,\n right: box.right,\n bottom: box.bottom,\n left: box.left\n };\n group.append(g);\n });\n }\n }\n\n if (boxes.length > 0 && display == \"list-item\" && !element.getAttribute(\"kendo-no-bullet\")) {\n drawBullet(boxes[0]);\n } // overflow: hidden/auto - if present, replace the group with\n // a new one clipped by the inner box.\n\n\n (function () {\n function clipit() {\n var clipPath = elementRoundBox(element, innerbox, \"padding\");\n var tmp = new Group();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n\n if (isFormField(element)) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow\"))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-x\"))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-y\"))) {\n clipit();\n }\n })();\n\n if (!maybeRenderWidget(element, group)) {\n renderContents(element, group);\n }\n\n if (microsoft && textOverflow == \"ellipsis\") {\n element.style.textOverflow = saveTextOverflow;\n }\n\n return group; // only utility functions after this line.\n\n function adjustBoxes(boxes) {\n if (/^td$/i.test(element.tagName)) {\n var table = nodeInfo.table;\n\n if (table && getPropertyValue(table.style, \"border-collapse\") == \"collapse\") {\n var tableBorderLeft = getBorder(table.style, \"left\").width;\n var tableBorderTop = getBorder(table.style, \"top\").width; // check if we need to adjust\n\n if (tableBorderLeft === 0 && tableBorderTop === 0) {\n return boxes; // nope\n }\n\n var tableBox = table.element.getBoundingClientRect();\n var firstCell = table.element.rows[0].cells[0];\n var firstCellBox = firstCell.getBoundingClientRect();\n\n if (firstCellBox.top == tableBox.top || firstCellBox.left == tableBox.left) {\n return slice(boxes).map(function (box) {\n return {\n left: box.left + tableBorderLeft,\n top: box.top + tableBorderTop,\n right: box.right + tableBorderLeft,\n bottom: box.bottom + tableBorderTop,\n height: box.height,\n width: box.width\n };\n });\n }\n }\n }\n\n return boxes;\n } // this function will be called to draw each border. it\n // draws starting at origin and the resulted path must be\n // translated/rotated to be placed in the proper position.\n //\n // arguments are named as if it draws the top border:\n //\n // - `len` the length of the edge\n // - `Wtop` the width of the edge (i.e. border-top-width)\n // - `Wleft` the width of the left edge (border-left-width)\n // - `Wright` the width of the right edge\n // - `rl` and `rl` -- the border radius on the left and right\n // (objects containing x and y, for horiz/vertical radius)\n // - `transform` -- transformation to apply\n //\n\n\n function drawEdge(color, len, Wtop, Wleft, Wright, rl, rr, transform) {\n if (Wtop <= 0) {\n return;\n }\n\n var path,\n edge = new Group();\n setTransform(edge, transform);\n group.append(edge);\n sanitizeRadius(rl);\n sanitizeRadius(rr); // draw main border. this is the area without the rounded corners\n\n path = new Path({\n fill: {\n color: color\n },\n stroke: null\n });\n edge.append(path);\n path.moveTo(rl.x ? Math.max(rl.x, Wleft) : 0, 0).lineTo(len - (rr.x ? Math.max(rr.x, Wright) : 0), 0).lineTo(len - Math.max(rr.x, Wright), Wtop).lineTo(Math.max(rl.x, Wleft), Wtop).close();\n\n if (rl.x) {\n drawRoundCorner(Wleft, rl, [-1, 0, 0, 1, rl.x, 0]);\n }\n\n if (rr.x) {\n drawRoundCorner(Wright, rr, [1, 0, 0, 1, len - rr.x, 0]);\n } // draws one round corner, starting at origin (needs to be\n // translated/rotated to be placed properly).\n\n\n function drawRoundCorner(Wright, r, transform) {\n var angle = Math.PI / 2 * Wright / (Wright + Wtop); // not sanitizing this one, because negative values\n // are useful to fill the box correctly.\n\n var ri = {\n x: r.x - Wright,\n y: r.y - Wtop\n };\n var path = new Path({\n fill: {\n color: color\n },\n stroke: null\n }).moveTo(0, 0);\n setTransform(path, transform);\n addArcToPath(path, 0, r.y, {\n startAngle: -90,\n endAngle: -radiansToDegrees(angle),\n radiusX: r.x,\n radiusY: r.y\n });\n\n if (ri.x > 0 && ri.y > 0) {\n path.lineTo(ri.x * Math.cos(angle), r.y - ri.y * Math.sin(angle));\n addArcToPath(path, 0, r.y, {\n startAngle: -radiansToDegrees(angle),\n endAngle: -90,\n radiusX: ri.x,\n radiusY: ri.y,\n anticlockwise: true\n });\n } else if (ri.x > 0) {\n path.lineTo(ri.x, Wtop).lineTo(0, Wtop);\n } else {\n path.lineTo(ri.x, Wtop).lineTo(ri.x, 0);\n }\n\n edge.append(path.close());\n }\n }\n\n function drawBackground(box) {\n var background = new Group();\n setClipping(background, roundBox(box, rTL0, rTR0, rBR0, rBL0));\n group.append(background);\n\n if (backgroundColor) {\n var path = new Path({\n fill: {\n color: backgroundColor.toCssRgba()\n },\n stroke: null\n });\n path.moveTo(box.left, box.top).lineTo(box.right, box.top).lineTo(box.right, box.bottom).lineTo(box.left, box.bottom).close();\n background.append(path);\n }\n\n for (var i = backgroundImage.length; --i >= 0;) {\n drawOneBackground(background, box, backgroundImage[i], backgroundRepeat[i % backgroundRepeat.length], backgroundPosition[i % backgroundPosition.length], backgroundOrigin[i % backgroundOrigin.length], backgroundSize[i % backgroundSize.length]);\n }\n }\n\n function drawOneBackground(group, box, background, backgroundRepeat, backgroundPosition, backgroundOrigin, backgroundSize) {\n if (!background || background == \"none\") {\n return;\n }\n\n if (background.type == \"url\") {\n // SVG taints the canvas, can't draw it.\n if (/^url\\(\\\"data:image\\/svg/i.test(background.url)) {\n return;\n }\n\n var img = IMAGE_CACHE[background.url];\n\n if (img && img.width > 0 && img.height > 0) {\n drawBackgroundImage(group, box, img.width, img.height, function (group, rect) {\n group.append(new Image(background.url, rect));\n });\n }\n } else if (background.type == \"linear\") {\n drawBackgroundImage(group, box, box.width, box.height, gradientRenderer(background));\n } else {\n return;\n }\n\n function drawBackgroundImage(group, box, img_width, img_height, renderBG) {\n var aspect_ratio = img_width / img_height,\n f; // for background-origin: border-box the box is already appropriate\n\n var orgBox = box;\n\n if (backgroundOrigin == \"content-box\") {\n orgBox = innerBox(orgBox, \"border-*-width\", element);\n orgBox = innerBox(orgBox, \"padding-*\", element);\n } else if (backgroundOrigin == \"padding-box\") {\n orgBox = innerBox(orgBox, \"border-*-width\", element);\n }\n\n if (!/^\\s*auto(\\s+auto)?\\s*$/.test(backgroundSize)) {\n if (backgroundSize == \"contain\") {\n f = Math.min(orgBox.width / img_width, orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n } else if (backgroundSize == \"cover\") {\n f = Math.max(orgBox.width / img_width, orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n } else {\n var size = backgroundSize.split(/\\s+/g); // compute width\n\n if (/%$/.test(size[0])) {\n img_width = orgBox.width * parseFloat(size[0]) / 100;\n } else {\n img_width = parseFloat(size[0]);\n } // compute height\n\n\n if (size.length == 1 || size[1] == \"auto\") {\n img_height = img_width / aspect_ratio;\n } else if (/%$/.test(size[1])) {\n img_height = orgBox.height * parseFloat(size[1]) / 100;\n } else {\n img_height = parseFloat(size[1]);\n }\n }\n }\n\n var pos = String(backgroundPosition); // IE sometimes reports single-word positions\n // https://github.com/telerik/kendo-ui-core/issues/2786\n //\n // it seems to switch to percentages when the horizontal\n // position is not \"center\", therefore we don't handle\n // multi-word cases here. All other browsers return\n // percentages or pixels instead of keywords. At least\n // for now...\n\n switch (pos) {\n case \"bottom\":\n pos = \"50% 100%\";\n break;\n\n case \"top\":\n pos = \"50% 0\";\n break;\n\n case \"left\":\n pos = \"0 50%\";\n break;\n\n case \"right\":\n pos = \"100% 50%\";\n break;\n\n case \"center\":\n pos = \"50% 50%\";\n break;\n }\n\n pos = pos.split(/\\s+/);\n\n if (pos.length == 1) {\n pos[1] = \"50%\";\n }\n\n if (/%$/.test(pos[0])) {\n pos[0] = parseFloat(pos[0]) / 100 * (orgBox.width - img_width);\n } else {\n pos[0] = parseFloat(pos[0]);\n }\n\n if (/%$/.test(pos[1])) {\n pos[1] = parseFloat(pos[1]) / 100 * (orgBox.height - img_height);\n } else {\n pos[1] = parseFloat(pos[1]);\n }\n\n var rect = new geo.Rect([orgBox.left + pos[0], orgBox.top + pos[1]], [img_width, img_height]); // XXX: background-repeat could be implemented more\n // efficiently as a fill pattern (at least for PDF\n // output, probably SVG too).\n\n function rewX() {\n while (rect.origin.x > box.left) {\n rect.origin.x -= img_width;\n }\n }\n\n function rewY() {\n while (rect.origin.y > box.top) {\n rect.origin.y -= img_height;\n }\n }\n\n function repeatX() {\n while (rect.origin.x < box.right) {\n renderBG(group, rect.clone());\n rect.origin.x += img_width;\n }\n }\n\n if (backgroundRepeat == \"no-repeat\") {\n renderBG(group, rect);\n } else if (backgroundRepeat == \"repeat-x\") {\n rewX();\n repeatX();\n } else if (backgroundRepeat == \"repeat-y\") {\n rewY();\n\n while (rect.origin.y < box.bottom) {\n renderBG(group, rect.clone());\n rect.origin.y += img_height;\n }\n } else if (backgroundRepeat == \"repeat\") {\n rewX();\n rewY();\n var origin = rect.origin.clone();\n\n while (rect.origin.y < box.bottom) {\n rect.origin.x = origin.x;\n repeatX();\n rect.origin.y += img_height;\n }\n }\n }\n }\n\n function drawBullet() {\n var listStyleType = getPropertyValue(style, \"list-style-type\");\n\n if (listStyleType == \"none\") {\n return;\n }\n\n var listStylePosition = getPropertyValue(style, \"list-style-position\");\n\n function _drawBullet(f) {\n saveStyle(element, function () {\n element.style.position = \"relative\";\n var bullet = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n bullet.style.position = \"absolute\";\n bullet.style.boxSizing = \"border-box\";\n\n if (listStylePosition == \"outside\") {\n bullet.style.width = \"6em\";\n bullet.style.left = \"-6.8em\";\n bullet.style.textAlign = \"right\";\n } else {\n bullet.style.left = \"0px\";\n }\n\n f(bullet);\n element.insertBefore(bullet, element.firstChild);\n renderElement(bullet, group);\n element.removeChild(bullet);\n });\n }\n\n function elementIndex(f) {\n var a = element.parentNode.children;\n var k = element.getAttribute(\"kendo-split-index\");\n\n if (k != null) {\n return f(k | 0, a.length);\n }\n\n for (var i = 0; i < a.length; ++i) {\n if (a[i] === element) {\n return f(i, a.length);\n }\n }\n }\n\n switch (listStyleType) {\n case \"circle\":\n case \"disc\":\n case \"square\":\n _drawBullet(function (bullet) {\n // XXX: the science behind these values is called \"trial and error\".\n bullet.style.fontSize = \"60%\";\n bullet.style.lineHeight = \"200%\";\n bullet.style.paddingRight = \"0.5em\";\n bullet.style.fontFamily = \"DejaVu Serif\";\n bullet.innerHTML = {\n \"disc\": \"\\u25CF\",\n \"circle\": \"\\u25EF\",\n \"square\": \"\\u25A0\"\n }[listStyleType];\n });\n\n break;\n\n case \"decimal\":\n case \"decimal-leading-zero\":\n _drawBullet(function (bullet) {\n elementIndex(function (idx) {\n ++idx;\n\n if (listStyleType == \"decimal-leading-zero\" && idx < 10) {\n idx = \"0\" + idx;\n }\n\n bullet.innerHTML = idx + \".\";\n });\n });\n\n break;\n\n case \"lower-roman\":\n case \"upper-roman\":\n _drawBullet(function (bullet) {\n elementIndex(function (idx) {\n idx = arabicToRoman(idx + 1);\n\n if (listStyleType == \"upper-roman\") {\n idx = idx.toUpperCase();\n }\n\n bullet.innerHTML = idx + \".\";\n });\n });\n\n break;\n\n case \"lower-latin\":\n case \"lower-alpha\":\n case \"upper-latin\":\n case \"upper-alpha\":\n _drawBullet(function (bullet) {\n elementIndex(function (idx) {\n idx = alphaNumeral(idx);\n\n if (/^upper/i.test(listStyleType)) {\n idx = idx.toUpperCase();\n }\n\n bullet.innerHTML = idx + \".\";\n });\n });\n\n break;\n }\n } // draws a single border box\n\n\n function drawOneBox(box, isFirst, isLast) {\n if (box.width === 0 || box.height === 0) {\n return;\n }\n\n drawBackground(box);\n var shouldDrawLeft = left.width > 0 && (isFirst && dir == \"ltr\" || isLast && dir == \"rtl\");\n var shouldDrawRight = right.width > 0 && (isLast && dir == \"ltr\" || isFirst && dir == \"rtl\"); // The most general case is that the 4 borders have different widths and border\n // radiuses. The way that is handled is by drawing 3 Paths for each border: the\n // straight line, and two round corners which represent half of the entire rounded\n // corner. To simplify code those shapes are drawed at origin (by the drawEdge\n // function), then translated/rotated into the right position.\n //\n // However, this leads to poor results due to rounding in the simpler cases where\n // borders are straight lines. Therefore we handle a few such cases separately with\n // straight lines. C^wC^wC^w -- nope, scratch that. poor rendering was because of a bug\n // in Chrome (getClientRects() returns rounded integer values rather than exact floats.\n // web dev is still a ghetto.)\n // first, just in case there is no border...\n\n if (top.width === 0 && left.width === 0 && right.width === 0 && bottom.width === 0) {\n return;\n } // START paint borders\n // if all borders have equal colors...\n\n\n if (top.color == right.color && top.color == bottom.color && top.color == left.color) {\n // if same widths too, we can draw the whole border by stroking a single path.\n if (top.width == right.width && top.width == bottom.width && top.width == left.width) {\n if (shouldDrawLeft && shouldDrawRight) {\n // reduce box by half the border width, so we can draw it by stroking.\n box = innerBox(box, top.width / 2); // adjust the border radiuses, again by top.width/2, and make the path element.\n\n var path = elementRoundBox(element, box, top.width / 2);\n path.options.stroke = {\n color: top.color,\n width: top.width\n };\n group.append(path);\n return;\n }\n }\n } // if border radiuses are zero and widths are at most one pixel, we can again use simple\n // paths.\n\n\n if (rTL0.x === 0 && rTR0.x === 0 && rBR0.x === 0 && rBL0.x === 0) {\n // alright, 1.9px will do as well. the difference in color blending should not be\n // noticeable.\n if (top.width < 2 && left.width < 2 && right.width < 2 && bottom.width < 2) {\n // top border\n if (top.width > 0) {\n group.append(new Path({\n stroke: {\n width: top.width,\n color: top.color\n }\n }).moveTo(box.left, box.top + top.width / 2).lineTo(box.right, box.top + top.width / 2));\n } // bottom border\n\n\n if (bottom.width > 0) {\n group.append(new Path({\n stroke: {\n width: bottom.width,\n color: bottom.color\n }\n }).moveTo(box.left, box.bottom - bottom.width / 2).lineTo(box.right, box.bottom - bottom.width / 2));\n } // left border\n\n\n if (shouldDrawLeft) {\n group.append(new Path({\n stroke: {\n width: left.width,\n color: left.color\n }\n }).moveTo(box.left + left.width / 2, box.top).lineTo(box.left + left.width / 2, box.bottom));\n } // right border\n\n\n if (shouldDrawRight) {\n group.append(new Path({\n stroke: {\n width: right.width,\n color: right.color\n }\n }).moveTo(box.right - right.width / 2, box.top).lineTo(box.right - right.width / 2, box.bottom));\n }\n\n return;\n }\n } // END paint borders\n\n\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl; // top border\n\n drawEdge(top.color, box.width, top.width, left.width, right.width, rTL, rTR, [1, 0, 0, 1, box.left, box.top]); // bottom border\n\n drawEdge(bottom.color, box.width, bottom.width, right.width, left.width, rBR, rBL, [-1, 0, 0, -1, box.right, box.bottom]); // for left/right borders we need to invert the border-radiuses\n\n function inv(p) {\n return {\n x: p.y,\n y: p.x\n };\n } // left border\n\n\n drawEdge(left.color, box.height, left.width, bottom.width, top.width, inv(rBL), inv(rTL), [0, -1, 1, 0, box.left, box.bottom]); // right border\n\n drawEdge(right.color, box.height, right.width, top.width, bottom.width, inv(rTR), inv(rBR), [0, 1, -1, 0, box.right, box.top]);\n }\n}\n\nfunction gradientRenderer(gradient) {\n return function (group, rect) {\n var width = rect.width(),\n height = rect.height();\n\n switch (gradient.type) {\n case \"linear\":\n // figure out the angle.\n var angle = gradient.angle != null ? gradient.angle : Math.PI;\n\n switch (gradient.to) {\n case \"top\":\n angle = 0;\n break;\n\n case \"left\":\n angle = -Math.PI / 2;\n break;\n\n case \"bottom\":\n angle = Math.PI;\n break;\n\n case \"right\":\n angle = Math.PI / 2;\n break;\n\n case \"top left\":\n case \"left top\":\n angle = -Math.atan2(height, width);\n break;\n\n case \"top right\":\n case \"right top\":\n angle = Math.atan2(height, width);\n break;\n\n case \"bottom left\":\n case \"left bottom\":\n angle = Math.PI + Math.atan2(height, width);\n break;\n\n case \"bottom right\":\n case \"right bottom\":\n angle = Math.PI - Math.atan2(height, width);\n break;\n }\n\n if (gradient.reverse) {\n angle -= Math.PI;\n } // limit the angle between 0..2PI\n\n\n angle %= 2 * Math.PI;\n\n if (angle < 0) {\n angle += 2 * Math.PI;\n } // compute gradient's start/end points. here len is the length of the gradient line\n // and x,y is the end point relative to the center of the rectangle in conventional\n // (math) axis direction.\n // this is the original (unscaled) length of the gradient line. needed to deal with\n // absolutely positioned color stops. formula from the CSS spec:\n // http://dev.w3.org/csswg/css-images-3/#linear-gradient-syntax\n\n\n var pxlen = Math.abs(width * Math.sin(angle)) + Math.abs(height * Math.cos(angle)); // The math below is pretty simple, but it took a while to figure out. We compute x\n // and y, the *end* of the gradient line. However, we want to transform them into\n // element-based coordinates (SVG's gradientUnits=\"objectBoundingBox\"). That means,\n // x=0 is the left edge, x=1 is the right edge, y=0 is the top edge and y=1 is the\n // bottom edge.\n //\n // A naive approach would use the original angle for these calculations. Say we'd\n // like to draw a gradient angled at 45deg in a 100x400 box. When we use\n // objectBoundingBox, the renderer will draw it in a 1x1 *square* box, and then\n // scale that to the desired dimensions. The 45deg angle will look more like 70deg\n // after scaling. SVG (http://www.w3.org/TR/SVG/pservers.html#LinearGradients) says\n // the following:\n //\n // When gradientUnits=\"objectBoundingBox\" and 'gradientTransform' is the\n // identity matrix, the normal of the linear gradient is perpendicular to the\n // gradient vector in object bounding box space (i.e., the abstract coordinate\n // system where (0,0) is at the top/left of the object bounding box and (1,1) is\n // at the bottom/right of the object bounding box). When the object's bounding\n // box is not square, the gradient normal which is initially perpendicular to\n // the gradient vector within object bounding box space may render\n // non-perpendicular relative to the gradient vector in user space. If the\n // gradient vector is parallel to one of the axes of the bounding box, the\n // gradient normal will remain perpendicular. This transformation is due to\n // application of the non-uniform scaling transformation from bounding box space\n // to user space.\n //\n // which is an extremely long and confusing way to tell what I just said above.\n //\n // For this reason we need to apply the reverse scaling to the original angle, so\n // that when it'll finally be rendered it'll actually be at the desired slope. Now\n // I'll let you figure out the math yourself.\n\n var scaledAngle = Math.atan(width * Math.tan(angle) / height);\n var sin = Math.sin(scaledAngle),\n cos = Math.cos(scaledAngle);\n var len = Math.abs(sin) + Math.abs(cos);\n var x = len / 2 * sin;\n var y = len / 2 * cos; // Because of the arctangent, our scaledAngle ends up between -PI/2..PI/2, possibly\n // losing the intended direction of the gradient. The following fixes it.\n\n if (angle > Math.PI / 2 && angle <= 3 * Math.PI / 2) {\n x = -x;\n y = -y;\n } // compute the color stops.\n\n\n var implicit = [],\n right = 0;\n var stops = gradient.stops.map(function (s, i) {\n var offset = s.percent;\n\n if (offset) {\n offset = parseFloat(offset) / 100;\n } else if (s.length) {\n offset = parseFloat(s.length) / pxlen;\n } else if (i === 0) {\n offset = 0;\n } else if (i == gradient.stops.length - 1) {\n offset = 1;\n }\n\n var stop = {\n color: s.color.toCssRgba(),\n offset: offset\n };\n\n if (offset != null) {\n right = offset; // fix implicit offsets\n\n implicit.forEach(function (s, i) {\n var stop = s.stop;\n stop.offset = s.left + (right - s.left) * (i + 1) / (implicit.length + 1);\n });\n implicit = [];\n } else {\n implicit.push({\n left: right,\n stop: stop\n });\n }\n\n return stop;\n });\n var start = [0.5 - x, 0.5 + y];\n var end = [0.5 + x, 0.5 - y]; // finally, draw it.\n\n group.append(Path.fromRect(rect).stroke(null).fill(new LinearGradient({\n start: start,\n end: end,\n stops: stops,\n userSpace: false\n })));\n break;\n\n case \"radial\":\n // XXX:\n if (window.console && window.console.log) {\n window.console.log(\"Radial gradients are not yet supported in HTML renderer\");\n }\n\n break;\n }\n };\n}\n\nfunction maybeRenderWidget(element, group) {\n var visual;\n\n if (element._kendoExportVisual) {\n visual = element._kendoExportVisual();\n } else if (window.kendo && window.kendo.jQuery && element.getAttribute(window.kendo.attr(\"role\"))) {\n var widget = window.kendo.widgetInstance(window.kendo.jQuery(element));\n\n if (widget && (widget.exportDOMVisual || widget.exportVisual)) {\n if (widget.exportDOMVisual) {\n visual = widget.exportDOMVisual();\n } else {\n visual = widget.exportVisual();\n }\n }\n }\n\n if (!visual) {\n return false;\n }\n\n var wrap = new Group();\n wrap.children.push(visual);\n var bbox = element.getBoundingClientRect();\n wrap.transform(geo.transform().translate(bbox.left, bbox.top));\n group.append(wrap);\n return true;\n}\n\nfunction renderImage(element, url, group) {\n var box = getContentBox(element);\n var rect = new geo.Rect([box.left, box.top], [box.width, box.height]);\n var image = new Image(url, rect);\n setClipping(image, elementRoundBox(element, box, \"content\"));\n group.append(image);\n}\n\nfunction zIndexSort(a, b) {\n var sa = getComputedStyle(a);\n var sb = getComputedStyle(b);\n var za = parseFloat(getPropertyValue(sa, \"z-index\"));\n var zb = parseFloat(getPropertyValue(sb, \"z-index\"));\n var pa = getPropertyValue(sa, \"position\");\n var pb = getPropertyValue(sb, \"position\");\n\n if (isNaN(za) && isNaN(zb)) {\n if (/static|absolute/.test(pa) && /static|absolute/.test(pb)) {\n return 0;\n }\n\n if (pa == \"static\") {\n return -1;\n }\n\n if (pb == \"static\") {\n return 1;\n }\n\n return 0;\n }\n\n if (isNaN(za)) {\n return zb === 0 ? 0 : zb > 0 ? -1 : 1;\n }\n\n if (isNaN(zb)) {\n return za === 0 ? 0 : za > 0 ? 1 : -1;\n }\n\n return parseFloat(za) - parseFloat(zb);\n}\n\nfunction isFormField(element) {\n return /^(?:textarea|select|input)$/i.test(element.tagName);\n}\n\nfunction getSelectedOption(element) {\n if (element.selectedOptions && element.selectedOptions.length > 0) {\n return element.selectedOptions[0];\n }\n\n return element.options[element.selectedIndex];\n}\n\nfunction renderCheckbox(element, group) {\n var style = getComputedStyle(element);\n var color = getPropertyValue(style, \"color\");\n var box = element.getBoundingClientRect();\n\n if (element.type == \"checkbox\") {\n group.append(Path.fromRect(new geo.Rect([box.left + 1, box.top + 1], [box.width - 2, box.height - 2])).stroke(color, 1));\n\n if (element.checked) {\n // fill a rectangle inside? looks kinda ugly.\n // group.append(\n // Path.fromRect(\n // new geo.Rect([ box.left+4, box.top+4 ],\n // [ box.width-8, box.height-8])\n // ).fill(color).stroke(null)\n // );\n // let's draw a checkmark instead. artistic, eh?\n group.append(new Path().stroke(color, 1.2).moveTo(box.left + 0.22 * box.width, box.top + 0.55 * box.height).lineTo(box.left + 0.45 * box.width, box.top + 0.75 * box.height).lineTo(box.left + 0.78 * box.width, box.top + 0.22 * box.width));\n }\n } else {\n group.append(new Circle(new geo.Circle([(box.left + box.right) / 2, (box.top + box.bottom) / 2], Math.min(box.width - 2, box.height - 2) / 2)).stroke(color, 1));\n\n if (element.checked) {\n group.append(new Circle(new geo.Circle([(box.left + box.right) / 2, (box.top + box.bottom) / 2], Math.min(box.width - 8, box.height - 8) / 2)).fill(color).stroke(null));\n }\n }\n}\n\nfunction renderFormField(element, group) {\n var tag = element.tagName.toLowerCase();\n\n if (tag == \"input\" && (element.type == \"checkbox\" || element.type == \"radio\")) {\n return renderCheckbox(element, group);\n }\n\n var p = element.parentNode;\n var doc = element.ownerDocument;\n var el = doc.createElement(KENDO_PSEUDO_ELEMENT);\n var option;\n el.style.cssText = getCssText(getComputedStyle(element));\n\n if (tag == \"input\") {\n el.style.whiteSpace = \"pre\";\n }\n\n if (tag == \"select\" || tag == \"textarea\") {\n el.style.overflow = \"auto\";\n }\n\n if (tag == \"select\") {\n if (element.multiple) {\n for (var i = 0; i < element.options.length; ++i) {\n option = doc.createElement(KENDO_PSEUDO_ELEMENT);\n option.style.cssText = getCssText(getComputedStyle(element.options[i]));\n option.style.display = \"block\"; // IE9 messes up without this\n\n option.textContent = element.options[i].textContent;\n el.appendChild(option);\n }\n } else {\n option = getSelectedOption(element);\n\n if (option) {\n el.textContent = option.textContent;\n }\n }\n } else {\n el.textContent = element.value;\n }\n\n p.insertBefore(el, element);\n el.scrollLeft = element.scrollLeft;\n el.scrollTop = element.scrollTop; // must temporarily hide the original element, otherwise it\n // may affect layout of the fake element we want to render.\n\n element.style.display = \"none\";\n renderContents(el, group);\n element.style.display = \"\";\n p.removeChild(el);\n}\n\nfunction renderContents(element, group) {\n if (nodeInfo._stackingContext.element === element) {\n // the group that was set in pushNodeInfo might have\n // changed due to clipping/transforms, update it here.\n nodeInfo._stackingContext.group = group;\n }\n\n switch (element.tagName.toLowerCase()) {\n case \"img\":\n renderImage(element, element.src, group);\n break;\n\n case \"canvas\":\n try {\n renderImage(element, element.toDataURL(\"image/png\"), group);\n } catch (ex) {// tainted; can't draw it, ignore.\n }\n\n break;\n\n case \"textarea\":\n case \"input\":\n case \"select\":\n renderFormField(element, group);\n break;\n\n default:\n var children = [],\n floats = [],\n positioned = [];\n\n for (var i = element.firstChild; i; i = i.nextSibling) {\n switch (i.nodeType) {\n case 3:\n // Text\n if (/\\S/.test(i.data)) {\n renderText(element, i, group);\n }\n\n break;\n\n case 1:\n // Element\n var style = getComputedStyle(i);\n var floating = getPropertyValue(style, \"float\");\n var position = getPropertyValue(style, \"position\");\n\n if (position != \"static\") {\n positioned.push(i);\n } else if (floating != \"none\") {\n floats.push(i);\n } else {\n children.push(i);\n }\n\n break;\n }\n }\n\n mergeSort(children, zIndexSort).forEach(function (el) {\n renderElement(el, group);\n });\n mergeSort(floats, zIndexSort).forEach(function (el) {\n renderElement(el, group);\n });\n mergeSort(positioned, zIndexSort).forEach(function (el) {\n renderElement(el, group);\n });\n }\n}\n\nfunction renderText(element, node, group) {\n if (emptyClipbox()) {\n return;\n }\n\n var style = getComputedStyle(element);\n\n if (parseFloat(getPropertyValue(style, \"text-indent\")) < -500) {\n // assume it should not be displayed. the slider's\n // draggable handle displays a Drag text for some reason,\n // having text-indent: -3333px.\n return;\n }\n\n var text = node.data;\n var start = 0;\n var end = text.search(/\\S\\s*$/) + 1;\n\n if (!end) {\n return; // whitespace-only node\n }\n\n var fontSize = getPropertyValue(style, \"font-size\");\n var lineHeight = getPropertyValue(style, \"line-height\"); // simply getPropertyValue(\"font\") doesn't work in Firefox :-\\\n\n var font = [getPropertyValue(style, \"font-style\"), getPropertyValue(style, \"font-variant\"), getPropertyValue(style, \"font-weight\"), fontSize, // no need for line height here; it breaks layout in FF\n getPropertyValue(style, \"font-family\")].join(\" \");\n fontSize = parseFloat(fontSize);\n lineHeight = parseFloat(lineHeight);\n\n if (fontSize === 0) {\n return;\n }\n\n var color = getPropertyValue(style, \"color\");\n var range = element.ownerDocument.createRange();\n var align = getPropertyValue(style, \"text-align\");\n var isJustified = align == \"justify\";\n var columnCount = getPropertyValue(style, \"column-count\", 1);\n var whiteSpace = getPropertyValue(style, \"white-space\");\n var textTransform = getPropertyValue(style, \"text-transform\"); // A line of 500px, with a font of 12px, contains an average of 80 characters, but since we\n // err, we'd like to guess a bigger number rather than a smaller one. Multiplying by 5\n // seems to be a good option.\n\n var estimateLineLength = element.getBoundingClientRect().width / fontSize * 5;\n\n if (estimateLineLength === 0) {\n estimateLineLength = 500;\n } // we'll maintain this so we can workaround bugs in Chrome's Range.getClientRects\n // https://github.com/telerik/kendo/issues/5740\n\n\n var prevLineBottom = null;\n var underline = nodeInfo[\"underline\"];\n var lineThrough = nodeInfo[\"line-through\"];\n var overline = nodeInfo[\"overline\"];\n var hasDecoration = underline || lineThrough || overline; // doChunk returns true when all text has been rendered\n\n while (!doChunk()) {}\n\n if (hasDecoration) {\n range.selectNode(node);\n slice(range.getClientRects()).forEach(decorate);\n }\n\n return; // only function declarations after this line\n\n function actuallyGetRangeBoundingRect(range) {\n // XXX: to be revised when this Chrome bug is fixed:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=612459\n if (microsoft || browser.chrome) {\n // Workaround browser bugs: IE and Chrome would sometimes\n // return 0 or 1-width rectangles before or after the main\n // one. https://github.com/telerik/kendo/issues/4674\n // Actually Chrome 50 got worse, since the rectangles can now have the width of a\n // full character, making it hard to tell whether it's a bogus rectangle or valid\n // selection location. The workaround is to ignore rectangles that fall on the\n // previous line. https://github.com/telerik/kendo/issues/5740\n var rectangles = range.getClientRects(),\n box = {\n top: Infinity,\n right: -Infinity,\n bottom: -Infinity,\n left: Infinity\n },\n done = false;\n\n for (var i = 0; i < rectangles.length; ++i) {\n var b = rectangles[i];\n\n if (b.width <= 1 || b.bottom === prevLineBottom) {\n continue; // bogus rectangle\n }\n\n box.left = Math.min(b.left, box.left);\n box.top = Math.min(b.top, box.top);\n box.right = Math.max(b.right, box.right);\n box.bottom = Math.max(b.bottom, box.bottom);\n done = true;\n }\n\n if (!done) {\n return range.getBoundingClientRect();\n }\n\n box.width = box.right - box.left;\n box.height = box.bottom - box.top;\n return box;\n }\n\n return range.getBoundingClientRect();\n } // Render a chunk of text, typically one line (but for justified text we render each word as\n // a separate Text object, because spacing is variable). Returns true when it finished the\n // current node. After each chunk it updates `start` to just after the last rendered\n // character.\n\n\n function doChunk() {\n var origStart = start;\n var box,\n pos = text.substr(start).search(/\\S/);\n start += pos;\n\n if (pos < 0 || start >= end) {\n return true;\n } // Select a single character to determine the height of a line of text. The box.bottom\n // will be essential for us to figure out where the next line begins.\n\n\n range.setStart(node, start);\n range.setEnd(node, start + 1);\n box = actuallyGetRangeBoundingRect(range); // for justified text we must split at each space, because space has variable width.\n\n var found = false;\n\n if (isJustified || columnCount > 1) {\n pos = text.substr(start).search(/\\s/);\n\n if (pos >= 0) {\n // we can only split there if it's on the same line, otherwise we'll fall back\n // to the default mechanism (see findEOL below).\n range.setEnd(node, start + pos);\n var r = actuallyGetRangeBoundingRect(range);\n\n if (r.bottom == box.bottom) {\n box = r;\n found = true;\n start += pos;\n }\n }\n }\n\n if (!found) {\n // This code does three things: (1) it selects one line of text in `range`, (2) it\n // leaves the bounding rect of that line in `box` and (3) it returns the position\n // just after the EOL. We know where the line starts (`start`) but we don't know\n // where it ends. To figure this out, we select a piece of text and look at the\n // bottom of the bounding box. If it changes, we have more than one line selected\n // and should retry with a smaller selection.\n //\n // To speed things up, we first try to select all text in the node (`start` ->\n // `end`). If there's more than one line there, then select only half of it. And\n // so on. When we find a value for `end` that fits in one line, we try increasing\n // it (also in halves) until we get to the next line. The algorithm stops when the\n // right side of the bounding box does not change.\n //\n // One more thing to note is that everything happens in a single Text DOM node.\n // There's no other tags inside it, therefore the left/top coordinates of the\n // bounding box will not change.\n pos = function findEOL(min, eol, max) {\n range.setEnd(node, eol);\n var r = actuallyGetRangeBoundingRect(range);\n\n if (r.bottom != box.bottom && min < eol) {\n return findEOL(min, min + eol >> 1, eol);\n } else if (r.right != box.right) {\n box = r;\n\n if (eol < max) {\n return findEOL(eol, eol + max >> 1, max);\n } else {\n return eol;\n }\n } else {\n return eol;\n }\n }(start, Math.min(end, start + estimateLineLength), end);\n\n if (pos == start) {\n // if EOL is at the start, then no more text fits on this line. Skip the\n // remainder of this node entirely to avoid a stack overflow.\n return true;\n }\n\n start = pos;\n pos = range.toString().search(/\\s+$/);\n\n if (pos === 0) {\n return false; // whitespace only; we should not get here.\n }\n\n if (pos > 0) {\n // eliminate trailing whitespace\n range.setEnd(node, range.startOffset + pos);\n box = actuallyGetRangeBoundingRect(range);\n }\n } // another workaround for IE: if we rely on getBoundingClientRect() we'll overlap with the bullet for LI\n // elements. Calling getClientRects() and using the *first* rect appears to give us the correct location.\n // Note: not to be used in Chrome as it randomly returns a zero-width rectangle from the previous line.\n\n\n if (microsoft) {\n box = range.getClientRects()[0];\n }\n\n var str = range.toString();\n\n if (!/^(?:pre|pre-wrap)$/i.test(whiteSpace)) {\n // node with non-significant space -- collapse whitespace.\n str = str.replace(/\\s+/g, \" \");\n } else if (/\\t/.test(str)) {\n // with significant whitespace we need to do something about literal TAB characters.\n // There's no TAB glyph in a font so they would be rendered in PDF as an empty box,\n // and the whole text will stretch to fill the original width. The core PDF lib\n // does not have sufficient context to deal with it.\n // calculate the starting column here, since we initially discarded any whitespace.\n var cc = 0;\n\n for (pos = origStart; pos < range.startOffset; ++pos) {\n var code = text.charCodeAt(pos);\n\n if (code == 9) {\n // when we meet a TAB we must round up to the next tab stop.\n // in all browsers TABs seem to be 8 characters.\n cc += 8 - cc % 8;\n } else if (code == 10 || code == 13) {\n // just in case we meet a newline we must restart.\n cc = 0;\n } else {\n // ordinary character --> advance one column\n cc++;\n }\n } // based on starting column, replace any TAB characters in the string we actually\n // have to display with spaces so that they align to columns multiple of 8.\n\n\n while ((pos = str.search(\"\\t\")) >= 0) {\n var indent = \" \".substr(0, 8 - (cc + pos) % 8);\n str = str.substr(0, pos) + indent + str.substr(pos + 1);\n }\n }\n\n if (!found) {\n prevLineBottom = box.bottom;\n }\n\n drawText(str, box);\n }\n\n function drawText(str, box) {\n // In IE the box height will be approximately lineHeight, while in\n // other browsers it'll (correctly) be the height of the bounding\n // box for the current text/font. Which is to say, IE sucks again.\n // The only good solution I can think of is to measure the text\n // ourselves and center the bounding box.\n if (microsoft && !isNaN(lineHeight)) {\n var height = getFontHeight(font);\n var top = (box.top + box.bottom - height) / 2;\n box = {\n top: top,\n right: box.right,\n bottom: top + height,\n left: box.left,\n height: height,\n width: box.right - box.left\n };\n } // var path = new Path({ stroke: { color: \"red\" }});\n // path.moveTo(box.left, box.top)\n // .lineTo(box.right, box.top)\n // .lineTo(box.right, box.bottom)\n // .lineTo(box.left, box.bottom)\n // .close();\n // group.append(path);\n\n\n switch (textTransform) {\n case \"uppercase\":\n str = str.toUpperCase();\n break;\n\n case \"lowercase\":\n str = str.toLowerCase();\n break;\n\n case \"capitalize\":\n str = str.replace(/(?:^|\\s)\\S/g, function (l) {\n return l.toUpperCase();\n });\n break;\n }\n\n var text = new TextRect(str, new geo.Rect([box.left, box.top], [box.width, box.height]), {\n font: font,\n fill: {\n color: color\n }\n });\n group.append(text);\n }\n\n function decorate(box) {\n line(underline, box.bottom);\n line(lineThrough, box.bottom - box.height / 2.7);\n line(overline, box.top);\n\n function line(color, ypos) {\n if (color) {\n var width = fontSize / 12;\n var path = new Path({\n stroke: {\n width: width,\n color: color\n }\n });\n ypos -= width;\n path.moveTo(box.left, ypos).lineTo(box.right, ypos);\n group.append(path);\n }\n }\n }\n}\n\nfunction groupInStackingContext(element, group, zIndex) {\n var main;\n\n if (zIndex != \"auto\") {\n // use the current stacking context\n main = nodeInfo._stackingContext.group;\n zIndex = parseFloat(zIndex);\n } else {\n // normal flow — use given container. we still have to\n // figure out where should we insert this element with the\n // assumption that its z-index is zero, as the group might\n // already contain elements with higher z-index.\n main = group;\n zIndex = 0;\n }\n\n var a = main.children;\n\n for (var i = 0; i < a.length; ++i) {\n if (a[i]._dom_zIndex != null && a[i]._dom_zIndex > zIndex) {\n break;\n }\n }\n\n var tmp = new Group();\n main.insert(i, tmp);\n tmp._dom_zIndex = zIndex;\n\n if (main !== group) {\n // console.log(\"Placing\", element, \"in\", nodeInfo._stackingContext.element, \"at position\", i, \" / \", a.length);\n // console.log(a.slice(i+1));\n // if (nodeInfo._matrix) {\n // tmp.transform(nodeInfo._matrix);\n // }\n if (nodeInfo._clipbox) {\n var m = nodeInfo._matrix.invert();\n\n var r = nodeInfo._clipbox.transformCopy(m);\n\n setClipping(tmp, Path.fromRect(r)); // console.log(r);\n // tmp.append(Path.fromRect(r));\n // tmp.append(new Text(element.className || element.id, r.topLeft()));\n }\n }\n\n return tmp;\n}\n\nfunction renderElement(element, container) {\n var style = getComputedStyle(element);\n updateCounters(style);\n\n if (/^(style|script|link|meta|iframe|svg|col|colgroup)$/i.test(element.tagName)) {\n return;\n }\n\n if (nodeInfo._clipbox == null) {\n return;\n }\n\n var opacity = parseFloat(getPropertyValue(style, \"opacity\"));\n var visibility = getPropertyValue(style, \"visibility\");\n var display = getPropertyValue(style, \"display\");\n\n if (opacity === 0 || visibility == \"hidden\" || display == \"none\") {\n return;\n }\n\n var tr = getTransform(style);\n var group;\n var zIndex = getPropertyValue(style, \"z-index\");\n\n if ((tr || opacity < 1) && zIndex == \"auto\") {\n zIndex = 0;\n }\n\n group = groupInStackingContext(element, container, zIndex); // XXX: remove at some point\n // group._pdfElement = element;\n // group.options._pdfDebug = \"\";\n // if (element.id) {\n // group.options._pdfDebug = \"#\" + element.id;\n // }\n // if (element.className) {\n // group.options._pdfDebug += \".\" + element.className.split(\" \").join(\".\");\n // }\n\n if (opacity < 1) {\n group.opacity(opacity * group.opacity());\n }\n\n pushNodeInfo(element, style, group);\n\n if (!tr) {\n _renderWithPseudoElements(element, group);\n } else {\n saveStyle(element, function () {\n // must clear transform, so getBoundingClientRect returns correct values.\n pleaseSetPropertyValue(element.style, \"transform\", \"none\", \"important\"); // must also clear transitions, so correct values are returned *immediately*\n\n pleaseSetPropertyValue(element.style, \"transition\", \"none\", \"important\"); // the presence of any transform makes it behave like it had position: relative,\n // because why not.\n // http://meyerweb.com/eric/thoughts/2011/09/12/un-fixing-fixed-elements-with-css-transforms/\n\n if (getPropertyValue(style, \"position\") == \"static\") {\n // but only if it's not already positioned. :-/\n pleaseSetPropertyValue(element.style, \"position\", \"relative\", \"important\");\n } // must translate to origin before applying the CSS\n // transformation, then translate back.\n\n\n var bbox = element.getBoundingClientRect();\n var x = bbox.left + tr.origin[0];\n var y = bbox.top + tr.origin[1];\n var m = [1, 0, 0, 1, -x, -y];\n m = mmul(m, tr.matrix);\n m = mmul(m, [1, 0, 0, 1, x, y]);\n m = setTransform(group, m);\n nodeInfo._matrix = nodeInfo._matrix.multiplyCopy(m);\n\n _renderWithPseudoElements(element, group);\n });\n }\n\n popNodeInfo(); //drawDebugBox(element.getBoundingClientRect(), container);\n} // function drawDebugBox(box, group, color) {\n// var path = Path.fromRect(new geo.Rect([ box.left, box.top ], [ box.width, box.height ]));\n// if (color) {\n// path.stroke(color);\n// }\n// group.append(path);\n// }\n// function dumpTextNode(node) {\n// var txt = node.data.replace(/^\\s+/, \"\");\n// if (txt.length < 100) {\n// console.log(node.data.length + \": |\" + txt);\n// } else {\n// console.log(node.data.length + \": |\" + txt.substr(0, 50) + \"|...|\" + txt.substr(-50));\n// }\n// }\n\n\nfunction mmul(a, b) {\n var a1 = a[0],\n b1 = a[1],\n c1 = a[2],\n d1 = a[3],\n e1 = a[4],\n f1 = a[5];\n var a2 = b[0],\n b2 = b[1],\n c2 = b[2],\n d2 = b[3],\n e2 = b[4],\n f2 = b[5];\n return [a1 * a2 + b1 * c2, a1 * b2 + b1 * d2, c1 * a2 + d1 * c2, c1 * b2 + d1 * d2, e1 * a2 + f1 * c2 + e2, e1 * b2 + f1 * d2 + f2];\n}\n\nexport { drawDOM };","export default function template() {\n // XXX: no template engine for now\n throw new Error(\"String template not yet supported. Pass a function and use your preferred template engine.\");\n}","import { parseColor as parse, Color } from '@progress/kendo-drawing';\nimport { isPresent, fitIntoBounds } from './misc';\n/**\n * @hidden\n *\n * Returns the hex or RGBA string representation of the color.\n */\n\nexport var parseColor = function parseColor(value, format, safe) {\n if (safe === void 0) {\n safe = true;\n }\n\n var allowedFormats = ['hex', 'rgba']; // TODO: constant?\n // Angular supports third type: name : const allowedFormats: Array = ['hex', 'rgba', 'name'];\n\n if (allowedFormats.indexOf(format) === -1) {\n throw new Error(\"Unsupported color output format '\" + format + \"'. The available options are 'hex' or 'rgba'.\");\n }\n\n if (!isPresent(value)) {\n return;\n }\n\n var parsedColor = parse(value.trim(), safe);\n\n if (!isPresent(parsedColor)) {\n return;\n }\n\n return format === 'hex' ? parsedColor.toCss() : parsedColor.toCssRgba();\n};\n/**\n * @hidden\n *\n * Returns an HSV object representation of the color string.\n */\n\nexport var getHSV = function getHSV(value, safe) {\n if (safe === void 0) {\n safe = true;\n }\n\n var parsed = parse(value, safe);\n\n if (!isPresent(parsed)) {\n return {};\n }\n\n return parsed.toHSV();\n};\n/**\n * @hidden\n *\n * Returns an RGBA object representation of the color string.\n */\n\nexport var getRGBA = function getRGBA(value, safe) {\n if (safe === void 0) {\n safe = true;\n }\n\n var parsed = parse(value, safe);\n\n if (!isPresent(parsed)) {\n return {};\n }\n\n return parsed.toBytes();\n};\n/**\n * @hidden\n *\n * Returns the RGBA string representation of the color.\n */\n\nexport var getColorFromHSV = function getColorFromHSV(hsva) {\n var hue = fitIntoBounds(hsva.h, 0, 359.9);\n var saturation = fitIntoBounds(hsva.s, 0, 1);\n var value = fitIntoBounds(hsva.v, 0, 1);\n var alpha = fitIntoBounds(hsva.a, 0, 1);\n return Color.fromHSV(hue, saturation, value, alpha).toCssRgba();\n};\n/**\n * @hidden\n *\n * Returns the RGBA string representation of the color based on the `hue` and\n * assuming the `value`, `saturation`, and `alpha` have a value of `1`.\n */\n\nexport var getColorFromHue = function getColorFromHue(hue) {\n return getColorFromHSV({\n h: hue,\n s: 1,\n v: 1,\n a: 1\n });\n};\n/**\n * @hidden\n *\n * Returns the RGBA string representation of the color.\n */\n\nexport var getColorFromRGBA = function getColorFromRGBA(rgba) {\n var red = fitIntoBounds(rgba.r, 0, 255);\n var green = fitIntoBounds(rgba.g, 0, 255);\n var blue = fitIntoBounds(rgba.b, 0, 255);\n var alpha = fitIntoBounds(rgba.a, 0, 1);\n return Color.fromBytes(red, green, blue, alpha).toCssRgba();\n};","var cache = {};\n/**\n * @hidden\n */\n\nexport function cacheHsva(componentGuid, value, hsva) {\n cache[componentGuid] = {\n value: value,\n hsva: hsva\n };\n}\n/**\n * @hidden\n */\n\nexport function cacheRgba(componentGuid, value, rgba) {\n cache[componentGuid] = {\n value: value,\n rgba: rgba\n };\n}\n/**\n * @hidden\n */\n\nexport function cacheHex(componentGuid, value, hex) {\n cache[componentGuid] = {\n value: value,\n hex: hex\n };\n}\n/**\n * @hidden\n */\n\nexport function removeCachedColor(componentGuid) {\n delete cache[componentGuid];\n}\n/**\n * @hidden\n */\n\nexport function getCachedHex(componentGuid, value) {\n if (componentGuid) {\n var cachedColor = cache[componentGuid];\n return cachedColor && cachedColor.value === value ? cachedColor.hex : undefined;\n } else {\n return undefined;\n }\n}\n/**\n * @hidden\n */\n\nexport function getCachedHsva(componentGuid, value) {\n if (componentGuid) {\n var cachedColor = cache[componentGuid];\n return cachedColor && cachedColor.value === value ? cachedColor.hsva : undefined;\n } else {\n return undefined;\n }\n}\n/**\n * @hidden\n */\n\nexport function getCachedRgba(componentGuid, value) {\n if (componentGuid) {\n var cachedColor = cache[componentGuid];\n return cachedColor && cachedColor.value === value ? cachedColor.rgba : undefined;\n } else {\n return undefined;\n }\n}","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport { parseColor } from './utils/color-parser';\nimport { isPresent } from './utils/misc';\n/**\n * @hidden\n */\n\nvar HexInput =\n/** @class */\nfunction (_super) {\n __extends(HexInput, _super);\n\n function HexInput(props) {\n var _this = _super.call(this, props) || this;\n\n _this.onChange = function (event) {\n var hex = event.target.value;\n var value = parseColor(hex, 'rgba');\n\n _this.setState({\n hex: hex\n });\n\n if (isPresent(value)) {\n _this.props.onHexChange(hex, value, event);\n }\n };\n\n _this.onBlur = function () {\n if (!isPresent(parseColor(_this.state.hex, 'rgba'))) {\n _this.setState({\n hex: _this.state.originalHex\n });\n }\n };\n\n _this.state = {\n hex: _this.props.hex,\n originalHex: _this.props.hex\n };\n return _this;\n }\n\n HexInput.prototype.render = function () {\n return React.createElement(\"input\", {\n value: this.state.hex,\n className: \"k-textbox k-hex-value\",\n onChange: this.onChange,\n onBlur: this.onBlur,\n disabled: this.props.disabled\n });\n };\n\n HexInput.getDerivedStateFromProps = function (props, state) {\n if (props.hex !== state.originalHex) {\n return {\n hex: props.hex,\n originalHex: props.hex\n };\n }\n\n return null;\n };\n\n return HexInput;\n}(React.Component);\n\nexport default HexInput;","var _a;\n/**\n * @hidden\n */\n\n\nexport var numericIncreaseValue = 'numerictextbox.increment';\n/**\n * @hidden\n */\n\nexport var numericDecreaseValue = 'numerictextbox.decrement';\n/**\n * @hidden\n */\n\nexport var sliderIncreaseValue = 'slider.increment';\n/**\n * @hidden\n */\n\nexport var sliderDecreaseValue = 'slider.decrement';\n/**\n * @hidden\n */\n\nexport var sliderDragTitle = 'slider.dragTitle';\n/**\n * @hidden\n */\n\nexport var colorGradientR = 'colorGradient.r';\n/**\n * @hidden\n */\n\nexport var colorGradientG = 'colorGradient.g';\n/**\n * @hidden\n */\n\nexport var colorGradientB = 'colorGradient.b';\n/**\n * @hidden\n */\n\nexport var colorGradientA = 'colorGradient.a';\n/**\n * @hidden\n */\n\nexport var colorGradientHex = 'colorGradient.hex';\n/**\n * @hidden\n */\n\nexport var messages = (_a = {}, _a[numericIncreaseValue] = 'Increase value', _a[numericDecreaseValue] = 'Decrease value', _a[sliderIncreaseValue] = 'Increase', _a[sliderDecreaseValue] = 'Decrease', _a[sliderDragTitle] = 'Drag', _a[colorGradientR] = 'r', _a[colorGradientG] = 'g', _a[colorGradientB] = 'b', _a[colorGradientA] = 'a', _a[colorGradientHex] = 'hex', _a);","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport { NumericTextBox } from '../main';\nimport HexInput from './HexInput';\nimport { registerForIntl, registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, colorGradientR, colorGradientHex, colorGradientA, colorGradientB, colorGradientG } from '../messages';\n/**\n * @hidden\n */\n\nvar ColorInput =\n/** @class */\nfunction (_super) {\n __extends(ColorInput, _super);\n\n function ColorInput() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.onRgbaRChange = function (event) {\n _this.dispatchRgbaChange({\n r: event.value\n }, event);\n };\n\n _this.onRgbaGChange = function (event) {\n _this.dispatchRgbaChange({\n g: event.value\n }, event);\n };\n\n _this.onRgbaBChange = function (event) {\n _this.dispatchRgbaChange({\n b: event.value\n }, event);\n };\n\n _this.onRgbaAChange = function (event) {\n _this.dispatchRgbaChange({\n a: event.value\n }, event);\n };\n\n return _this;\n }\n\n ColorInput.prototype.render = function () {\n var localizationService = provideLocalizationService(this);\n var hexMessage = localizationService.toLanguageString(colorGradientR, messages[colorGradientHex]);\n var rMessage = localizationService.toLanguageString(colorGradientR, messages[colorGradientR]);\n var gMessage = localizationService.toLanguageString(colorGradientR, messages[colorGradientG]);\n var bMessage = localizationService.toLanguageString(colorGradientR, messages[colorGradientB]);\n var aMessage = localizationService.toLanguageString(colorGradientR, messages[colorGradientA]);\n return React.createElement(\"div\", null, React.createElement(\"div\", {\n className: \"k-hbox k-gradient-values\"\n }, React.createElement(HexInput, {\n hex: this.props.hex,\n onHexChange: this.props.onHexChange,\n disabled: this.props.disabled\n }), React.createElement(NumericTextBox, {\n value: this.props.rgba.r,\n min: 0,\n max: 255,\n spinners: false,\n format: \"n\",\n onChange: this.onRgbaRChange,\n disabled: this.props.disabled\n }), React.createElement(NumericTextBox, {\n value: this.props.rgba.g,\n min: 0,\n max: 255,\n spinners: false,\n format: \"n\",\n onChange: this.onRgbaGChange,\n disabled: this.props.disabled\n }), React.createElement(NumericTextBox, {\n value: this.props.rgba.b,\n min: 0,\n max: 255,\n spinners: false,\n format: \"n\",\n onChange: this.onRgbaBChange,\n disabled: this.props.disabled\n }), this.props.opacity && React.createElement(NumericTextBox, {\n value: this.props.rgba.a,\n min: 0,\n max: 1,\n step: 0.01,\n spinners: false,\n format: \"n2\",\n onChange: this.onRgbaAChange,\n disabled: this.props.disabled\n })), React.createElement(\"div\", {\n className: \"k-hbox k-gradient-values\"\n }, React.createElement(\"div\", {\n className: \"k-hex-value\"\n }, hexMessage), React.createElement(\"div\", null, rMessage), React.createElement(\"div\", null, gMessage), React.createElement(\"div\", null, bMessage), this.props.opacity && React.createElement(\"div\", null, aMessage)));\n };\n\n ColorInput.prototype.dispatchRgbaChange = function (newValue, event) {\n var rgba = __assign({}, this.props.rgba);\n\n if (newValue.r !== undefined) {\n rgba.r = newValue.r;\n }\n\n if (newValue.g !== undefined) {\n rgba.g = newValue.g;\n }\n\n if (newValue.b !== undefined) {\n rgba.b = newValue.b;\n }\n\n if (newValue.a !== undefined) {\n rgba.a = newValue.a;\n }\n\n this.props.onRgbaChange(rgba, event);\n };\n\n return ColorInput;\n}(React.Component);\n\nexport default ColorInput;\nregisterForIntl(ColorInput);\nregisterForLocalization(ColorInput);","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Draggable, guid, classNames, focusFirstFocusableChild } from '@progress/kendo-react-common';\nimport { Slider } from './../main';\nimport { fitIntoBounds, isPresent } from './utils/misc';\nimport { getColorFromHue, parseColor, getHSV, getColorFromHSV, getRGBA, getColorFromRGBA } from './utils/color-parser';\nimport { cacheHsva, removeCachedColor, getCachedHsva, getCachedRgba, getCachedHex, cacheRgba, cacheHex } from './utils/color-cache';\nimport ColorInput from './ColorInput';\nvar FORMAT = 'rgba';\nvar DEFAULT_SELECTED_COLOR = 'rgba(255, 255, 255, 1)';\n/**\n * Represents the [KendoReact ColorGradient component]({% slug overview_colorgradient %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return ;\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\n\nvar ColorGradient =\n/** @class */\nfunction (_super) {\n __extends(ColorGradient, _super);\n\n function ColorGradient(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n\n\n _this.onHexChange = function (hex, value, event) {\n if (_this.isUncontrolled) {\n var hsva = getHSV(value);\n\n _this.setState({\n hsva: hsva,\n backgroundColor: getColorFromHue(hsva.h),\n rgba: getRGBA(value),\n hex: hex\n });\n } else {\n cacheHex(_this.state.guid, value, hex);\n }\n\n _this.dispatchChangeEvent(value, event, event.nativeEvent);\n };\n /**\n * @hidden\n */\n\n\n _this.onRgbaChange = function (rgba, event) {\n var value = getColorFromRGBA(rgba);\n\n if (_this.isUncontrolled) {\n var hsva = getHSV(value);\n var hex = parseColor(value, 'hex');\n\n _this.setState({\n hsva: hsva,\n backgroundColor: getColorFromHue(hsva.h),\n rgba: rgba,\n hex: hex\n });\n } else {\n cacheRgba(_this.state.guid, value, rgba);\n }\n\n _this.dispatchChangeEvent(value, event.syntheticEvent, event.nativeEvent);\n };\n /**\n * @hidden\n */\n\n\n _this.onAlphaSliderChange = function (event) {\n _this.handleHsvaChange(Object.assign({}, _this.state.hsva, {\n a: event.value / 100\n }), event.syntheticEvent, event.nativeEvent);\n };\n /**\n * @hidden\n */\n\n\n _this.onHueSliderChange = function (event) {\n _this.handleHsvaChange(Object.assign({}, _this.state.hsva, {\n h: event.value\n }), event.syntheticEvent, event.nativeEvent);\n };\n /**\n * @hidden\n */\n\n\n _this.onDrag = function (e) {\n _this.gradientWrapper.classList.add('k-dragging');\n\n _this.changePosition(e.event);\n };\n /**\n * @hidden\n */\n\n\n _this.onRelease = function () {\n _this.gradientWrapper.classList.remove('k-dragging');\n };\n /**\n * @hidden\n */\n\n\n _this.onGradientWrapperClick = function (event) {\n _this.changePosition(event);\n };\n /**\n * @hidden\n */\n\n\n _this.changePosition = function (event) {\n var gradientRectMetrics = _this.getGradientRectMetrics();\n\n var deltaX = event.clientX - gradientRectMetrics.left;\n var deltaY = event.clientY - gradientRectMetrics.top;\n var left = fitIntoBounds(deltaX, 0, gradientRectMetrics.width);\n var top = fitIntoBounds(deltaY, 0, gradientRectMetrics.height);\n var hsva = Object.assign({}, _this.state.hsva, {\n s: left / gradientRectMetrics.width,\n v: 1 - top / gradientRectMetrics.height\n });\n\n _this.handleHsvaChange(hsva, event, event.nativeEvent);\n };\n /**\n * @hidden\n */\n\n\n _this.focus = function () {\n focusFirstFocusableChild(_this.wrapper);\n };\n\n var value = props.value || props.defaultValue || parseColor(DEFAULT_SELECTED_COLOR, FORMAT);\n _this.state = Object.assign({}, ColorGradient.getStateFromValue(value), {\n isFirstRender: true,\n guid: guid()\n });\n return _this;\n }\n /**\n * @hidden\n */\n\n\n ColorGradient.getDerivedStateFromProps = function (props, state) {\n if (props.value && !state.isFirstRender) {\n // The component is in controlled mode.\n return ColorGradient.getStateFromValue(props.value, state.guid);\n }\n\n return null;\n };\n /**\n * @hidden\n */\n\n\n ColorGradient.prototype.componentDidMount = function () {\n this.setAlphaSliderBackground(this.state.backgroundColor);\n\n if (this.state.isFirstRender) {\n this.setState({\n isFirstRender: false\n });\n }\n };\n /**\n * @hidden\n */\n\n\n ColorGradient.prototype.componentWillUnmount = function () {\n removeCachedColor(this.state.guid);\n };\n /**\n * @hidden\n */\n\n\n ColorGradient.prototype.componentDidUpdate = function (_, prevState) {\n if (prevState.backgroundColor !== this.state.backgroundColor) {\n this.setAlphaSliderBackground(this.state.backgroundColor);\n }\n };\n /**\n * @hidden\n */\n\n\n ColorGradient.prototype.renderRectangleDragHandle = function () {\n var style = {};\n\n if (!this.state.isFirstRender) {\n var gradientRectMetrics = this.getGradientRectMetrics();\n var top_1 = (1 - this.state.hsva.v) * gradientRectMetrics.height;\n var left = this.state.hsva.s * gradientRectMetrics.width;\n style.top = top_1 + \"px\";\n style.left = left + \"px\";\n }\n\n return React.createElement(\"div\", {\n className: \"k-draghandle\",\n style: style\n });\n };\n /**\n * @hidden\n */\n\n\n ColorGradient.prototype.handleHsvaChange = function (hsva, syntheticEvent, nativeEvent) {\n var value = getColorFromHSV(hsva);\n\n if (this.isUncontrolled) {\n var hex = parseColor(value, 'hex');\n this.setState({\n hsva: hsva,\n backgroundColor: getColorFromHue(hsva.h),\n rgba: getRGBA(value),\n hex: hex\n });\n } else {\n cacheHsva(this.state.guid, value, hsva);\n }\n\n this.dispatchChangeEvent(value, syntheticEvent, nativeEvent);\n };\n /**\n * @hidden\n */\n\n\n ColorGradient.prototype.dispatchChangeEvent = function (value, syntheticEvent, nativeEvent) {\n if (this.props.onChange) {\n this.props.onChange.call(undefined, {\n syntheticEvent: syntheticEvent,\n nativeEvent: nativeEvent,\n target: this,\n value: value\n });\n }\n };\n /**\n * @hidden\n */\n\n\n ColorGradient.getStateFromValue = function (value, componentGuid) {\n if (!isPresent(parseColor(value, 'hex'))) {\n // Validate/sanitize the input.\n value = DEFAULT_SELECTED_COLOR;\n }\n\n var hsva = getCachedHsva(componentGuid, value) || getHSV(value);\n var rgba = getCachedRgba(componentGuid, value) || getRGBA(value);\n var hex = getCachedHex(componentGuid, value) || parseColor(value, 'hex');\n return {\n hsva: hsva,\n backgroundColor: getColorFromHue(hsva.h),\n rgba: rgba,\n hex: hex\n };\n };\n /**\n * @hidden\n */\n\n\n ColorGradient.prototype.setAlphaSliderBackground = function (backgroundColor) {\n if (this.props.opacity && this.alphaSlider && this.alphaSlider.sliderTrack) {\n this.alphaSlider.sliderTrack.style.background = \"linear-gradient(to top, transparent, \" + backgroundColor + \")\";\n }\n };\n\n Object.defineProperty(ColorGradient.prototype, \"isUncontrolled\", {\n /**\n * @hidden\n */\n get: function get() {\n return this.props.value === undefined;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n ColorGradient.prototype.getGradientRectMetrics = function () {\n return this.gradientWrapper.getBoundingClientRect();\n };\n /**\n * @hidden\n */\n\n\n ColorGradient.prototype.render = function () {\n var _this = this;\n\n var className = classNames('k-widget k-flatcolorpicker', {\n 'k-state-disabled': this.props.disabled\n });\n return React.createElement(\"div\", {\n className: className,\n \"aria-disabled\": this.props.disabled ? 'true' : undefined,\n style: this.props.style,\n ref: function ref(el) {\n return _this.wrapper = el;\n },\n tabIndex: this.props.disabled ? undefined : this.props.tabIndex || 0\n }, React.createElement(\"div\", {\n className: \"k-hbox k-hsv-wrap\"\n }, React.createElement(\"div\", {\n className: \"k-hsv-rectangle\",\n style: {\n background: this.state.backgroundColor\n }\n }, React.createElement(Draggable, {\n onDrag: this.onDrag,\n onRelease: this.onRelease,\n ref: function ref(el) {\n return _this.gradientWrapper = el ? el.element : undefined;\n }\n }, React.createElement(\"div\", {\n className: \"k-hsv-gradient\",\n onClick: this.onGradientWrapperClick\n }, this.renderRectangleDragHandle()))), React.createElement(\"div\", {\n className: \"k-hbox k-sliders-wrap\"\n }, React.createElement(Slider, {\n value: this.state.hsva.h,\n buttons: false,\n vertical: true,\n min: 0,\n max: 360,\n step: 5,\n onChange: this.onHueSliderChange,\n className: \"k-hue-slider\",\n disabled: this.props.disabled\n }), this.props.opacity && React.createElement(Slider, {\n value: isPresent(this.state.hsva.a) ? this.state.hsva.a * 100 : 100,\n buttons: false,\n vertical: true,\n min: 0,\n max: 100,\n step: 1,\n onChange: this.onAlphaSliderChange,\n className: \"k-alpha-slider\",\n disabled: this.props.disabled,\n ref: function ref(el) {\n return _this.alphaSlider = el;\n }\n }))), React.createElement(ColorInput, {\n rgba: this.state.rgba,\n onRgbaChange: this.onRgbaChange,\n hex: this.state.hex,\n onHexChange: this.onHexChange,\n opacity: this.props.opacity,\n disabled: this.props.disabled\n }));\n };\n /**\n * @hidden\n */\n\n\n ColorGradient.propTypes = {\n defaultValue: PropTypes.string,\n value: PropTypes.string,\n onChange: PropTypes.func,\n opacity: PropTypes.bool,\n disabled: PropTypes.bool,\n style: PropTypes.any\n };\n /**\n * @hidden\n */\n\n ColorGradient.defaultProps = {\n opacity: true\n };\n return ColorGradient;\n}(React.Component);\n\nexport { ColorGradient };","/**\n * @hidden\n */\nexport var focusFirstFocusableChild = function focusFirstFocusableChild(element) {\n if (element) {\n // should focus wrapper if it's focusable in future versions\n var elements = element.querySelectorAll('input, [tabindex]:not([tabindex=\"-1\"])');\n\n if (elements.length && elements[0].focus) {\n elements[0].focus();\n }\n }\n};","import { isPresent } from './misc';\nimport { parseColor } from '@progress/kendo-drawing';\n/**\n * @hidden\n */\n\nvar ColorPaletteService =\n/** @class */\nfunction () {\n function ColorPaletteService() {\n this.colorRows = [];\n }\n\n ColorPaletteService.prototype.setColorMatrix = function (palette, columns) {\n this.colorRows = [];\n\n if (!(isPresent(palette) && palette.length)) {\n return;\n }\n\n columns = columns || palette.length;\n\n for (var start = 0; start < palette.length; start += columns) {\n var row = palette.slice(start, columns + start);\n this.colorRows.push(row);\n }\n };\n\n ColorPaletteService.prototype.getCellCoordsFor = function (color) {\n var _this = this;\n\n if (!isPresent(color)) {\n return;\n }\n\n var parsedColor = color ? parseColor(color, true) : color;\n var colors = [color];\n\n if (isPresent(parsedColor)) {\n colors.push(parsedColor.toCss(), parsedColor.toCssRgba());\n }\n\n var _loop_1 = function _loop_1(row) {\n var _loop_2 = function _loop_2(col) {\n if (colors.some(function (c) {\n return c === _this.colorRows[row][col];\n })) {\n return {\n value: {\n row: row,\n col: col\n }\n };\n }\n };\n\n for (var col = 0; col < this_1.colorRows[row].length; col++) {\n var state_2 = _loop_2(col);\n\n if (typeof state_2 === \"object\") return state_2;\n }\n };\n\n var this_1 = this;\n\n for (var row = 0; row < this.colorRows.length; row++) {\n var state_1 = _loop_1(row);\n\n if (typeof state_1 === \"object\") return state_1.value;\n }\n };\n\n ColorPaletteService.prototype.getColorAt = function (cellCoords) {\n if (!(isPresent(cellCoords) && isPresent(this.colorRows[cellCoords.row]))) {\n return;\n }\n\n return this.colorRows[cellCoords.row][cellCoords.col];\n };\n\n ColorPaletteService.prototype.getNextCell = function (current, horizontalStep, verticalStep) {\n if (!(isPresent(current) && isPresent(current.row) && isPresent(current.col))) {\n return {\n row: 0,\n col: 0\n };\n }\n\n var row = this.clampIndex(current.row + verticalStep, this.colorRows.length - 1);\n var col = this.clampIndex(current.col + horizontalStep, this.colorRows[row].length - 1);\n return {\n row: row,\n col: col\n };\n };\n\n ColorPaletteService.prototype.clampIndex = function (index, max) {\n var minArrayIndex = 0;\n\n if (index < minArrayIndex) {\n return minArrayIndex;\n }\n\n if (index > max) {\n return max;\n }\n\n return index;\n };\n\n return ColorPaletteService;\n}();\n\nexport { ColorPaletteService };","// tslint:disable:max-line-length\n\n/**\n * @hidden\n */\nexport var PALETTEPRESETS = {\n basic: {\n colors: ['#000000', '#7f7f7f', '#880015', '#ed1c24', '#ff7f27', '#fff200', '#22b14c', '#00a2e8', '#3f48cc', '#a349a4', ' ffffff', '#c3c3c3', '#b97a57', '#ffaec9', '#ffc90e', '#efe4b0', '#b5e61d', '#99d9ea', '#7092be', '#c8bfe7'],\n columns: 10\n },\n office: {\n colors: ['#ffffff', '#000000', '#e6e6e6', '#435569', '#4371c4', '#ed7e32', '#a5a4a5', '#febf04', '#5a9bd5', '#71ae48', '#f2f2f3', '#7f7f7f', '#d1cece', '#d5dde3', '#dae1f4', '#fce5d4', '#deeded', '#fff2cc', '#deeaf6', '#e1efd9', '#d7d8d8', '#585959', '#aeabab', '#adbaca', '#b4c5e7', '#f6caac', '#dbdbdb', '#ffe498', '#bcd6ee', '#c5e0b2', '#bfbfc0', '#3f3f3f', '#767070', '#8595b1', '#8fabdb', '#f5b183', '#c9c8c9', '#fed965', '#9bc4e5', '#a8d08d', '#a5a5a6', '#262625', '#393939', '#334050', '#2e5496', '#c45a11', '#7b7b7a', '#bf9000', '#2f75b5', '#548235', '#7f7f7f', '#0b0c0c', '#161616', '#222a34', '#203764', '#843d0b', '#525252', '#7f6000', '#1d4d79', '#375623'],\n columns: 10\n },\n apex: {\n colors: ['#ffffff', '#000000', '#c9c2d1', '#69676d', '#ceb966', '#9cb084', '#6bb1c9', '#6585cf', '#7e6bc9', '#a379bb', '#f2f2f2', '#7f7f7f', '#f4f2f5', '#e0e0e2', '#f5f1e0', '#ebefe6', '#e1eff4', '#e0e6f5', '#e5e1f4', '#ece4f1', '#d8d8d8', '#595959', '#e9e6ec', '#c2c1c5', '#ebe3c1', '#d7dfcd', '#c3dfe9', '#c1ceeb', '#cbc3e9', '#dac9e3', '#bfbfbf', '#3f3f3f', '#dedae3', '#a4a3a8', '#e1d5a3', '#c3cfb5', '#a6d0de', '#a2b5e2', '#b1a6de', '#c7aed6', '#a5a5a5', '#262626', '#9688a5', '#4e4d51', '#ae9638', '#758c5a', '#3d8da9', '#365bb0', '#533da9', '#7d4d99', '#7f7f7f', '#0c0c0c', '#635672', '#343336', '#746425', '#4e5d3c', '#295e70', '#243c75', '#372970', '#533366'],\n columns: 10\n },\n austin: {\n colors: ['#ffffff', '#000000', '#caf278', '#3e3d2d', '#94c600', '#71685a', '#ff6700', '#909465', '#956b43', '#fea022', '#f2f2f2', '#7f7f7f', '#f4fce4', '#dddcd0', '#efffc0', '#e3e1dc', '#ffe0cb', '#e8e9df', '#ece1d6', '#feecd2', '#d8d8d8', '#595959', '#e9f9c9', '#bbb9a1', '#dfff82', '#c8c3ba', '#ffc299', '#d2d4c0', '#dac3ad', '#fed9a6', '#bfbfbf', '#3f3f3f', '#dff7ae', '#ada598', '#cfff43', '#ada598', '#ffa365', '#bcbfa1', '#c8a585', '#fec67a', '#a5a5a5', '#262626', '#a9ea25', '#2e2d21', '#6f9400', '#544e43', '#bf4d00', '#6c6f4b', '#6f5032', '#d77b00', '#7f7f7f', '#0c0c0c', '#74a50f', '#1f1e16', '#4a6300', '#38342d', '#7f3300', '#484a32', '#4a3521', '#8f5200'],\n columns: 10\n },\n clarity: {\n colors: ['#ffffff', '#292934', '#f3f2dc', '#d2533c', '#93a299', '#ad8f67', '#726056', '#4c5a6a', '#808da0', '#79463d', '#f2f2f2', '#e7e7ec', '#e7e5b9', '#f6dcd8', '#e9ecea', '#eee8e0', '#e4dedb', '#d8dde3', '#e5e8ec', '#e9d6d3', '#d8d8d8', '#c4c4d1', '#d5d185', '#edbab1', '#d3d9d6', '#ded2c2', '#c9beb8', '#b2bcc8', '#ccd1d9', '#d3aea7', '#bfbfbf', '#8a8aa3', '#aca73b', '#e4978a', '#bec7c1', '#cdbba3', '#af9e94', '#8c9bac', '#b2bac6', '#bd857c', '#a5a5a5', '#56566e', '#56531d', '#a43925', '#6b7c72', '#866b48', '#554840', '#39434f', '#5c697b', '#5a342d', '#7f7f7f', '#3b3b4b', '#22210b', '#6d2619', '#47534c', '#594730', '#39302b', '#262d35', '#3d4652', '#3c231e'],\n columns: 10\n },\n slipstream: {\n colors: ['#ffffff', '#000000', '#b4dcfa', '#212745', '#4e67c8', '#5eccf3', '#a7ea52', '#5dceaf', '#ff8021', '#f14124', '#f2f2f2', '#7f7f7f', '#8bc9f7', '#c7cce4', '#dbe0f4', '#def4fc', '#edfadc', '#def5ef', '#ffe5d2', '#fcd9d3', '#d8d8d8', '#595959', '#4facf3', '#909aca', '#b8c2e9', '#beeafa', '#dbf6b9', '#beebdf', '#ffcca6', '#f9b3a7', '#bfbfbf', '#3f3f3f', '#0d78c9', '#5967af', '#94a3de', '#9ee0f7', '#caf297', '#9de1cf', '#ffb279', '#f68d7b', '#a5a5a5', '#262626', '#063c64', '#181d33', '#31479f', '#11b2eb', '#81d319', '#34ac8b', '#d85c00', '#c3260c', '#7f7f7f', '#0c0c0c', '#021828', '#101322', '#202f6a', '#0b769c', '#568c11', '#22725c', '#903d00', '#821908'],\n columns: 10\n },\n metro: {\n colors: ['#ffffff', '#000000', '#d6ecff', '#4e5b6f', '#7fd13b', '#ea157a', '#feb80a', '#00addc', '#738ac8', '#1ab39f', '#f2f2f2', '#7f7f7f', '#a7d6ff', '#d9dde4', '#e5f5d7', '#fad0e4', '#fef0cd', '#c5f2ff', '#e2e7f4', '#c9f7f1', '#d8d8d8', '#595959', '#60b5ff', '#b3bcca', '#cbecb0', '#f6a1c9', '#fee29c', '#8be6ff', '#c7d0e9', '#94efe3', '#bfbfbf', '#3f3f3f', '#007dea', '#8d9baf', '#b2e389', '#f272af', '#fed46b', '#51d9ff', '#aab8de', '#5fe7d5', '#a5a5a5', '#262626', '#003e75', '#3a4453', '#5ea226', '#af0f5b', '#c58c00', '#0081a5', '#425ea9', '#138677', '#7f7f7f', '#0c0c0c', '#00192e', '#272d37', '#3f6c19', '#750a3d', '#835d00', '#00566e', '#2c3f71', '#0c594f'],\n columns: 10\n },\n flow: {\n colors: ['#ffffff', '#000000', '#dbf5f9', '#04617b', '#0f6fc6', '#009dd9', '#0bd0d9', '#10cf9b', '#7cca62', '#a5c249', '#f2f2f2', '#7f7f7f', '#b2e9f2', '#b4ecfc', '#c7e2fa', '#c4eeff', '#c9fafc', '#c9faed', '#e4f4df', '#edf2da', '#d8d8d8', '#595959', '#76d9e8', '#6adafa', '#90c6f6', '#89deff', '#93f5f9', '#94f6db', '#cae9c0', '#dbe6b6', '#bfbfbf', '#3f3f3f', '#21b2c8', '#20c8f7', '#59a9f2', '#4fceff', '#5df0f6', '#5ff2ca', '#b0dfa0', '#c9da91', '#a5a5a5', '#262626', '#105964', '#02485c', '#0b5394', '#0075a2', '#089ca2', '#0b9b74', '#54a838', '#7e9532', '#7f7f7f', '#0c0c0c', '#062328', '#01303d', '#073763', '#004e6c', '#05686c', '#07674d', '#387025', '#546321'],\n columns: 10\n },\n hardcover: {\n colors: ['#ffffff', '#000000', '#ece9c6', '#895d1d', '#873624', '#d6862d', '#d0be40', '#877f6c', '#972109', '#aeb795', '#f2f2f2', '#7f7f7f', '#e1dca5', '#f2e0c6', '#f0d0c9', '#f6e6d5', '#f5f2d8', '#e7e5e1', '#fbc7bc', '#eef0e9', '#d8d8d8', '#595959', '#d0c974', '#e6c28d', '#e2a293', '#eeceaa', '#ece5b2', '#cfccc3', '#f78f7a', '#dee2d4', '#bfbfbf', '#3f3f3f', '#a29a36', '#daa454', '#d4735e', '#e6b681', '#e2d88c', '#b7b2a5', '#f35838', '#ced3bf', '#a5a5a5', '#262626', '#514d1b', '#664515', '#65281a', '#a2641f', '#a39428', '#655f50', '#711806', '#879464', '#7f7f7f', '#0c0c0c', '#201e0a', '#442e0e', '#431b11', '#6c4315', '#6d621a', '#433f35', '#4b1004', '#5a6243'],\n columns: 10\n },\n trek: {\n colors: ['#ffffff', '#000000', '#fbeec9', '#4e3b30', '#f0a22e', '#a5644e', '#b58b80', '#c3986d', '#a19574', '#c17529', '#f2f2f2', '#7f7f7f', '#f7e09e', '#e1d6cf', '#fcecd5', '#eddfda', '#f0e7e5', '#f3eae1', '#ece9e3', '#f5e3d1', '#d8d8d8', '#595959', '#f3cc5f', '#c4ad9f', '#f9d9ab', '#dcc0b6', '#e1d0cc', '#e7d5c4', '#d9d4c7', '#ebc7a3', '#bfbfbf', '#3f3f3f', '#d29f0f', '#a78470', '#f6c781', '#cba092', '#d2b9b2', '#dbc1a7', '#c6bfab', '#e1ac76', '#a5a5a5', '#262626', '#694f07', '#3a2c24', '#c87d0e', '#7b4b3a', '#926255', '#a17242', '#7b7153', '#90571e', '#7f7f7f', '#0c0c0c', '#2a1f03', '#271d18', '#855309', '#523226', '#614138', '#6b4c2c', '#524b37', '#603a14'],\n columns: 10\n },\n verve: {\n colors: ['#ffffff', '#000000', '#d2d2d2', '#666666', '#ff388c', '#e40059', '#9c007f', '#68007f', '#005bd3', '#00349e', '#f2f2f2', '#7f7f7f', '#bdbdbd', '#e0e0e0', '#ffd7e8', '#ffc6dc', '#ffb8f1', '#f1b2ff', '#c3dcff', '#b8cfff', '#d8d8d8', '#595959', '#9d9d9d', '#c1c1c1', '#ffafd1', '#ff8eba', '#ff71e4', '#e365ff', '#87baff', '#72a0ff', '#bfbfbf', '#3f3f3f', '#696969', '#a3a3a3', '#ff87ba', '#ff5597', '#ff2ad7', '#d519ff', '#4b98ff', '#2b71ff', '#a5a5a5', '#262626', '#343434', '#4c4c4c', '#e90062', '#ab0042', '#75005f', '#4e005f', '#00449e', '#002676', '#7f7f7f', '#0c0c0c', '#151515', '#333333', '#9b0041', '#72002c', '#4e003f', '#34003f', '#002d69', '#00194f'],\n columns: 10\n },\n monochrome: {\n colors: ['#000000', '#1a1a1a', '#333333', '#4d4d4d', '#666666', '#808080', '#999999', '#b3b3b3', '#cccccc', '#e6e6e6', '#f2f2f2', '#ffffff'],\n columns: 12\n }\n};","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { ColorPaletteService } from './utils/color-palette.service';\nimport { classNames, Keys, dispatchEvent, guid } from '@progress/kendo-react-common';\nimport { PALETTEPRESETS } from './models/palette-presets';\nimport { isPresent } from './utils/misc';\nimport { parseColor } from './utils/color-parser';\n/**\n * @hidden\n */\n\nexport var DEFAULT_TILE_SIZE = 24;\n/**\n * @hidden\n */\n\nexport var DEFAULT_COLUMNS_COUNT = 10;\n/**\n * @hidden\n */\n\nexport var DEFAULT_PRESET = 'office';\n/**\n * Represents the [KendoReact ColorPalette component]({% slug overview_colorpalette %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return ;\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\n\nvar ColorPalette =\n/** @class */\nfunction (_super) {\n __extends(ColorPalette, _super);\n\n function ColorPalette(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n\n\n _this.wrapper = null;\n _this.guid = guid();\n\n _this.onKeyDown = function (event) {\n switch (event.keyCode) {\n case Keys.down:\n _this.handleCellNavigation(0, 1);\n\n break;\n\n case Keys.up:\n _this.handleCellNavigation(0, -1);\n\n break;\n\n case Keys.right:\n _this.handleCellNavigation(1, 0);\n\n break;\n\n case Keys.left:\n _this.handleCellNavigation(-1, 0);\n\n break;\n\n case Keys.enter:\n _this.handleEnter(event);\n\n break;\n\n default:\n return;\n }\n\n event.preventDefault();\n };\n\n _this.onColorClick = function (color, event) {\n if (_this.isUncontrolled) {\n _this.setState({\n selectedColor: color,\n focusedColor: color\n });\n } else {\n _this.setState({\n focusedColor: color\n });\n }\n\n _this.dispatchChangeEvent(color, event);\n };\n\n _this.onFocus = function () {\n _this.setState({\n focusedColor: _this.state.selectedColor || _this.paletteService.colorRows[0][0]\n });\n };\n\n _this.onBlur = function () {\n _this.setState({\n focusedColor: undefined\n });\n }; // The empty string for the `value` prop means no selection but controlled mode.\n\n\n _this.state = {\n selectedColor: _this.props.value !== undefined ? _this.props.value : _this.props.defaultValue,\n isFirstRender: true\n };\n return _this;\n }\n /**\n * @hidden\n */\n\n\n ColorPalette.prototype.focus = function () {\n if (this.wrapper) {\n this.wrapper.focus();\n }\n };\n /**\n * @hidden\n */\n\n\n ColorPalette.prototype.render = function () {\n var _this = this;\n\n var paletteInfo = this.getPaletteInfo();\n var svc = this.paletteService = new ColorPaletteService();\n svc.setColorMatrix(paletteInfo.colors, paletteInfo.columns);\n var selectedCellCoords = svc.getCellCoordsFor(this.state.selectedColor);\n var focusedCellCoords = svc.getCellCoordsFor(this.state.focusedColor);\n var className = classNames('k-widget k-colorpalette', {\n 'k-state-disabled': this.props.disabled\n });\n\n if (paletteInfo.colors.length) {\n return React.createElement(\"div\", {\n className: className,\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n onKeyDown: this.onKeyDown,\n \"aria-disabled\": this.props.disabled ? 'true' : undefined,\n \"aria-activedescendant\": selectedCellCoords && this.createCellId(selectedCellCoords),\n tabIndex: this.props.disabled ? undefined : this.props.tabIndex || 0,\n ref: function ref(el) {\n return _this.wrapper = el;\n }\n }, React.createElement(\"div\", {\n role: \"grid\"\n }, React.createElement(\"table\", {\n className: \"k-palette k-reset\",\n role: \"presentation\"\n }, React.createElement(\"tbody\", null, this.renderRows(svc.colorRows, selectedCellCoords, focusedCellCoords)))));\n } else {\n // In this way, the code prevents an eventual focus of the component when no cells are available.\n // This is needed because upon focus the first cell gets focused.\n return '';\n }\n };\n /**\n * @hidden\n */\n\n\n ColorPalette.getDerivedStateFromProps = function (props, state) {\n if (!state.isFirstRender && props.value !== undefined) {\n // The component is in controlled mode.\n if (props.value === '' && state.selectedColor !== undefined) {\n // The selection has to be removed.\n return {\n selectedColor: undefined\n };\n } else if (props.value !== '' && props.value !== state.selectedColor) {\n return {\n selectedColor: props.value\n };\n }\n } else if (state.isFirstRender) {\n return {\n isFirstRender: false\n };\n }\n\n return null;\n };\n\n ColorPalette.prototype.handleCellNavigation = function (horizontalStep, verticalStep) {\n if (this.focusedColorCooridanates) {\n var newCoords = this.paletteService.getNextCell(this.focusedColorCooridanates, horizontalStep, verticalStep);\n this.setState({\n focusedColor: this.paletteService.getColorAt(newCoords)\n });\n } else {\n this.setState({\n focusedColor: this.paletteService.colorRows[0][0]\n });\n }\n };\n\n ColorPalette.prototype.handleEnter = function (event) {\n if (this.isUncontrolled) {\n this.setState({\n selectedColor: this.state.focusedColor\n });\n }\n\n this.dispatchChangeEvent(this.state.focusedColor, event);\n };\n\n ColorPalette.prototype.dispatchChangeEvent = function (value, event) {\n dispatchEvent(this.props.onChange, event, this, {\n value: value,\n rgbaValue: parseColor(value, 'rgba')\n });\n };\n\n Object.defineProperty(ColorPalette.prototype, \"focusedColorCooridanates\", {\n get: function get() {\n return this.state.focusedColor ? this.paletteService.getCellCoordsFor(this.state.focusedColor) : undefined;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ColorPalette.prototype, \"isUncontrolled\", {\n get: function get() {\n return this.props.value === undefined;\n },\n enumerable: true,\n configurable: true\n });\n\n ColorPalette.prototype.getPaletteInfo = function () {\n if (typeof this.props.palette === 'string') {\n var preset = PALETTEPRESETS[this.props.palette];\n\n if (isPresent(preset)) {\n return {\n colors: preset.colors,\n columns: this.props.columns || preset.columns || DEFAULT_COLUMNS_COUNT\n };\n } else {\n return {\n colors: [],\n columns: 0\n };\n }\n } else {\n return {\n colors: this.props.palette || [],\n columns: this.props.columns || DEFAULT_COLUMNS_COUNT\n };\n }\n };\n\n ColorPalette.prototype.renderRows = function (rows, selectedCellCoords, focusedCellCoords) {\n var _this = this;\n\n return rows.map(function (row, i) {\n return React.createElement(\"tr\", {\n role: \"row\",\n key: i\n }, _this.renderColumns(row, i, selectedCellCoords, focusedCellCoords));\n });\n };\n\n ColorPalette.prototype.renderColumns = function (columns, rowIndex, selectedCellCoords, focusedCellCoords) {\n var _this = this;\n\n var rowIsSelected = selectedCellCoords !== undefined && selectedCellCoords.row === rowIndex;\n var selectedColumn = selectedCellCoords && selectedCellCoords.col;\n var rowIsFocused = focusedCellCoords !== undefined && focusedCellCoords.row === rowIndex;\n var focusedColumn = focusedCellCoords && focusedCellCoords.col;\n var tileSize = typeof this.props.tileSize !== 'number' ? this.props.tileSize : {\n width: this.props.tileSize,\n height: this.props.tileSize\n };\n var width = tileSize.width + 'px';\n var height = tileSize.height + 'px';\n return columns.map(function (color, i) {\n var isSelected = rowIsSelected && selectedColumn === i;\n var className = classNames('k-item', {\n 'k-state-selected': isSelected,\n 'k-state-focused': rowIsFocused && focusedColumn === i\n });\n return React.createElement(\"td\", {\n className: className,\n \"aria-label\": color,\n \"aria-selected\": isSelected ? true : _this.props.disabled ? undefined : false,\n style: {\n backgroundColor: color,\n width: width,\n height: height,\n minWidth: width\n },\n onClick: function onClick(event) {\n return _this.onColorClick(color, event);\n },\n id: _this.createCellId({\n row: rowIndex,\n col: i\n }),\n key: i\n });\n });\n };\n\n ColorPalette.prototype.createCellId = function (cellCoords) {\n return this.guid + \"_\" + cellCoords.row + \"_\" + cellCoords.col;\n };\n /**\n * @hidden\n */\n\n\n ColorPalette.propTypes = {\n palette: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.string]),\n columns: PropTypes.number,\n tileSize: PropTypes.any,\n defaultValue: PropTypes.string,\n value: PropTypes.string,\n disabled: PropTypes.bool,\n tabIndex: PropTypes.number,\n onChange: PropTypes.func\n };\n /**\n * @hidden\n */\n\n ColorPalette.defaultProps = {\n palette: DEFAULT_PRESET,\n tileSize: DEFAULT_TILE_SIZE\n };\n return ColorPalette;\n}(React.Component);\n\nexport { ColorPalette };","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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\n\nvar ANCHOR_VERTICAL_ALIGN = 'bottom';\n/**\n * @hidden\n */\n\nvar POPUP_VERTICAL_ALIGN = 'top';\n/**\n * @hidden\n */\n\nexport var Picker = function Picker(props) {\n var popupSettings = props.popupSettings || {};\n var horizontalAlign = props.dir === 'rtl' ? 'right' : 'left';\n var anchorAlign = React.useMemo(function () {\n return {\n horizontal: horizontalAlign,\n vertical: ANCHOR_VERTICAL_ALIGN\n };\n }, [horizontalAlign]);\n var popupAlign = React.useMemo(function () {\n return {\n horizontal: horizontalAlign,\n vertical: POPUP_VERTICAL_ALIGN\n };\n }, [horizontalAlign]);\n return React.createElement(React.Fragment, null, props.input, props.button, React.createElement(Popup, __assign({\n style: __assign({}, (popupSettings || {}).style, {\n direction: props.dir\n })\n }, popupSettings, {\n anchor: props.popupAnchor,\n anchorAlign: anchorAlign,\n popupAlign: popupAlign,\n show: props.open,\n open: props.onOpen,\n close: props.onClose,\n className: classNames('k-reset', popupSettings.className)\n }), props.content));\n};\nPicker.displayName = 'KendoPickerComponent';","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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, Keys, useRtl } from '@progress/kendo-react-common';\nimport { Picker } from './Picker';\nimport { ColorGradient } from './ColorGradient';\nimport { ColorPalette, DEFAULT_PRESET, DEFAULT_TILE_SIZE } from './ColorPalette';\n/**\n * @hidden\n */\n\nvar DEFAULT_GRADIENT_SETTINGS = {\n opacity: true\n};\n/**\n * @hidden\n */\n\nvar DEFAULT_PALETTE_SETTINGS = {\n palette: DEFAULT_PRESET,\n tileSize: DEFAULT_TILE_SIZE\n};\n/**\n * @hidden\n */\n\nvar isControlled = function isControlled(prop) {\n return prop !== undefined;\n};\n/**\n * Represents the [KendoReact ColorPicker component]({% slug overview_colorpicker %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return ;\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\n\n\nexport var ColorPicker = React.forwardRef(function (props, target) {\n var popupSettings = props.popupSettings,\n gradientSettings = props.gradientSettings,\n paletteSettings = props.paletteSettings,\n disabled = props.disabled,\n _a = props.tabIndex,\n tabIndex = _a === void 0 ? 0 : _a,\n view = props.view,\n icon = props.icon,\n onChange = props.onChange,\n onFocus = props.onFocus,\n onBlur = props.onBlur;\n var focusableElementRef = React.useRef(null);\n var gradientRef = React.useRef(null);\n var paletteRef = React.useRef(null);\n var blurTimeoutRef = React.useRef();\n React.useImperativeHandle(target, function () {\n return {\n // we agreed that each element will have focus method exposed\n element: focusableElementRef.current\n };\n });\n\n var _b = React.useState(false),\n focused = _b[0],\n setFocused = _b[1];\n\n var _c = React.useState(props.defaultValue),\n stateValue = _c[0],\n setStateValue = _c[1];\n\n var _d = React.useState(false),\n stateOpen = _d[0],\n setStateOpen = _d[1];\n\n var isValueControlled = isControlled(props.value);\n var isOpenControlled = isControlled(props.open);\n var value = isValueControlled ? props.value : stateValue;\n var open = isOpenControlled ? props.open : stateOpen;\n var setOpen = React.useCallback(function (nextOpen, isBlur) {\n if (!isOpenControlled) {\n if (!nextOpen && !isBlur && focusableElementRef && focusableElementRef.current) {\n focusableElementRef.current.focus();\n }\n\n setStateOpen(nextOpen);\n }\n }, [isOpenControlled]);\n var onKeyDownHandler = React.useCallback(function (event) {\n var altKey = event.altKey,\n keyCode = event.keyCode;\n\n if (keyCode === Keys.esc) {\n setOpen(false);\n return;\n }\n\n if (keyCode === Keys.enter && !isOpenControlled) {\n event.preventDefault();\n event.stopPropagation();\n setOpen(!open);\n return;\n }\n\n if (altKey && (keyCode === Keys.up || keyCode === Keys.down)) {\n event.preventDefault();\n event.stopPropagation();\n\n if (keyCode === Keys.up && focusableElementRef && focusableElementRef.current) {\n focusableElementRef.current.focus();\n setOpen(false);\n }\n\n if (keyCode === Keys.down) {\n setOpen(true);\n }\n }\n }, [open, isOpenControlled]);\n var onOpenHandler = React.useCallback(function () {\n // Skip content autofocus when in controlled mode\n if (!isOpenControlled) {\n if (gradientRef.current) {\n gradientRef.current.focus();\n } else if (paletteRef.current) {\n paletteRef.current.focus();\n }\n }\n }, [isOpenControlled]);\n var onClickHandler = React.useCallback(function () {\n setOpen(!open, true);\n }, [open]);\n var onFocusHandler = React.useCallback(function (event) {\n if (blurTimeoutRef.current) {\n clearTimeout(blurTimeoutRef.current);\n blurTimeoutRef.current = undefined; // case where moving back to input from popup\n // if (event.target === focusableElementRef.current) {\n // setOpen(false); // in this case we should focus input on keydown\n // }\n } else {\n setFocused(true);\n }\n\n if (onFocus) {\n onFocus.call(undefined, {\n nativeEvent: event.nativeEvent,\n syntheticEvent: event\n });\n }\n }, [onFocus]);\n var onBlurTimeout = React.useCallback(function () {\n setOpen(false, true);\n setFocused(false);\n blurTimeoutRef.current = undefined;\n }, []);\n var onBlurHandler = React.useCallback(function (event) {\n clearTimeout(blurTimeoutRef.current);\n blurTimeoutRef.current = setTimeout(onBlurTimeout);\n\n if (onBlur) {\n onBlur.call(undefined, {\n nativeEvent: event.nativeEvent,\n syntheticEvent: event\n });\n }\n }, [onBlur]);\n var onChangeHandler = React.useCallback(function (event, isPalette) {\n var currentValue = isPalette ? event.rgbaValue : event.value;\n\n if (!isValueControlled) {\n setStateValue(currentValue);\n }\n\n if (isPalette) {\n setOpen(false);\n }\n\n if (onChange) {\n onChange.call(undefined, {\n value: currentValue,\n nativeEvent: event.nativeEvent,\n syntheticEvent: event.syntheticEvent\n });\n }\n }, [isValueControlled, onChange]);\n var onPaletteChangeHandler = React.useCallback(function (event) {\n return onChangeHandler(event, true);\n }, [isControlled, onChangeHandler]);\n var dir = useRtl(focusableElementRef, props.dir);\n var iconClassName = props.iconClassName || icon && \"k-icon k-i-\" + icon;\n var className = React.useMemo(function () {\n return classNames({\n 'k-picker-wrap': true,\n 'k-state-default': !disabled,\n 'k-state-disabled': disabled,\n 'k-state-focused': focused\n });\n }, [focused, disabled]);\n return React.createElement(\"span\", {\n className: 'k-widget k-colorpicker',\n dir: dir\n }, React.createElement(\"span\", {\n className: className,\n ref: focusableElementRef,\n tabIndex: disabled ? undefined : tabIndex,\n onKeyDown: onKeyDownHandler,\n onFocus: onFocusHandler,\n onBlur: onBlurHandler\n }, React.createElement(Picker, {\n dir: dir,\n open: open,\n onOpen: onOpenHandler,\n popupAnchor: focusableElementRef.current || undefined,\n popupSettings: __assign({}, popupSettings),\n input: !iconClassName ? React.createElement(\"span\", {\n className: 'k-selected-color',\n style: {\n backgroundColor: value\n }\n }, !value && React.createElement(\"span\", {\n className: 'k-icon k-i-line'\n })) : React.createElement(\"span\", {\n className: classNames('k-tool-icon', iconClassName)\n }, React.createElement(\"span\", {\n className: 'k-selected-color',\n style: {\n backgroundColor: value\n }\n })),\n button: React.createElement(\"span\", {\n onClick: onClickHandler,\n className: 'k-select'\n }, React.createElement(\"span\", {\n className: 'k-icon k-i-arrow-s'\n })),\n content: React.createElement(React.Fragment, null, (view === 'combo' || view === 'gradient') && React.createElement(ColorGradient, __assign({}, gradientSettings, {\n tabIndex: 0,\n ref: gradientRef,\n value: value,\n onChange: onChangeHandler\n })), (view === 'combo' || view === 'palette') && React.createElement(ColorPalette, __assign({}, paletteSettings, {\n ref: paletteRef,\n value: value,\n onChange: onPaletteChangeHandler\n })))\n })));\n});\nColorPicker.propTypes = {\n value: PropTypes.string,\n defaultValue: PropTypes.string,\n disabled: PropTypes.bool,\n view: PropTypes.oneOf(['gradient', 'palette', 'combo']),\n dir: PropTypes.string\n};\nColorPicker.defaultProps = {\n view: 'palette',\n gradientSettings: DEFAULT_GRADIENT_SETTINGS,\n paletteSettings: DEFAULT_PALETTE_SETTINGS\n};\nColorPicker.displayName = 'KendoColorPicker';","import * as React from 'react';\n/**\n * @hidden\n */\n\nexport var useRtl = function useRtl(elementRef, initialDir) {\n // Dir prop is read only on initial rendering due to specifics of getComputedStyles - see below\n var _a = React.useState(initialDir),\n rtl = _a[0],\n setRtl = _a[1];\n\n React.useEffect(function () {\n if (!rtl && window && elementRef.current) {\n // Note: getComputedStyle forces reflow\n var rtlCandidate = window.getComputedStyle(elementRef.current).direction;\n\n if (rtlCandidate) {\n // rerender is needed as DOM is read after first render\n setRtl(rtlCandidate);\n }\n }\n }, []);\n return rtl;\n};","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { guid, classNames, FloatingLabel } from '@progress/kendo-react-common';\n\nvar Input =\n/** @class */\nfunction (_super) {\n __extends(Input, _super);\n\n function Input(props) {\n var _this = _super.call(this, props) || this;\n\n _this._inputId = guid();\n\n _this.isInvalid = function (state) {\n var result = false;\n\n for (var prop in state) {\n if (state.hasOwnProperty(prop)) {\n result = result || state[prop];\n }\n }\n\n return result;\n };\n /**\n * @hidden\n */\n\n\n _this.setValidity = function () {\n if (_this._input && _this._input.setCustomValidity) {\n _this.validity.valid || !_this.validityStyles ? _this._input.classList.remove('k-state-invalid') : _this._input.classList.add('k-state-invalid');\n\n _this._input.setCustomValidity(_this.validity.valid ? '' : _this.props.validationMessage || '');\n }\n };\n\n _this.handleChange = function (event) {\n _this.setState({\n value: event.target.value\n });\n\n _this.valueDuringOnChange = event.target.value;\n\n if (_this.props.onChange) {\n _this.props.onChange.call(undefined, {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: event.target.value,\n target: _this\n });\n }\n\n _this.valueDuringOnChange = undefined;\n };\n\n _this.state = {\n value: _this.props.defaultValue || Input.defaultProps.defaultValue\n };\n return _this;\n }\n\n Object.defineProperty(Input.prototype, \"element\", {\n /**\n * Gets the native input element of the Input component.\n */\n get: function get() {\n return this._input;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Input.prototype, \"value\", {\n /**\n * Gets the value of the Input.\n */\n get: function get() {\n return this.valueDuringOnChange !== undefined ? this.valueDuringOnChange : this.props.value !== undefined ? this.props.value : this.state.value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Input.prototype, \"name\", {\n /**\n * Gets the `name` property of the Input.\n */\n get: function get() {\n return this.props.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Input.prototype, \"validity\", {\n /**\n * Represents the validity state into which the Input is set.\n */\n get: function get() {\n var result = {\n badInput: this._input ? this._input.validity.badInput : false,\n patternMismatch: this._input ? this._input.validity.patternMismatch : false,\n rangeOverflow: this._input ? this._input.validity.rangeOverflow : false,\n rangeUnderflow: this._input ? this._input.validity.rangeUnderflow : false,\n stepMismatch: this._input ? this._input.validity.stepMismatch : false,\n tooLong: this._input ? this._input.validity.tooLong : false,\n typeMismatch: this._input ? this._input.validity.typeMismatch : false,\n valueMissing: this._input ? this._input.validity.valueMissing : false\n };\n return __assign({}, result, {\n customError: this.props.validationMessage !== undefined,\n valid: this.props.valid !== undefined ? this.props.valid : this._input ? !this.isInvalid(result) : true\n });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Input.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function get() {\n return this.props.validityStyles !== undefined ? this.props.validityStyles : Input.defaultProps.validityStyles;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n Input.prototype.componentDidMount = function () {\n this.forceUpdate();\n };\n /**\n * @hidden\n */\n\n\n Input.prototype.componentDidUpdate = function () {\n this.setValidity();\n };\n /**\n * @hidden\n */\n\n\n Input.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n className = _a.className,\n label = _a.label,\n id = _a.id,\n validationMessage = _a.validationMessage,\n defaultValue = _a.defaultValue,\n valid = _a.valid,\n // Removed to support direct use in Form Field component\n visited = _a.visited,\n touched = _a.touched,\n modified = _a.modified,\n validityStyles = _a.validityStyles,\n style = _a.style,\n props = __rest(_a, [\"className\", \"label\", \"id\", \"validationMessage\", \"defaultValue\", \"valid\", \"visited\", \"touched\", \"modified\", \"validityStyles\", \"style\"]);\n\n var inputId = id || this._inputId;\n var isValid = !this.validityStyles || this.validity.valid;\n var inputClassName = classNames(className, 'k-textbox');\n var textbox = React.createElement(\"input\", __assign({}, props, {\n style: !label ? style : undefined,\n value: this.value,\n id: inputId,\n className: inputClassName,\n onChange: this.handleChange,\n ref: function ref(el) {\n _this._input = el;\n }\n }));\n return label ? React.createElement(FloatingLabel, {\n label: label,\n children: textbox,\n value: String(this.value),\n placeholder: props.placeholder,\n id: inputId,\n valid: isValid,\n style: style,\n dir: props.dir\n }) : textbox;\n };\n /**\n * @hidden\n */\n\n\n Input.propTypes = {\n label: PropTypes.string,\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n validate: PropTypes.bool\n };\n /**\n * @hidden\n */\n\n Input.defaultProps = {\n defaultValue: '',\n required: false,\n validityStyles: true\n };\n return Input;\n}(React.Component);\n\nexport { Input };","/**\n * @hidden\n */\nexport var ResultType;\n\n(function (ResultType) {\n ResultType[ResultType[\"Literal\"] = 0] = \"Literal\";\n ResultType[ResultType[\"Mask\"] = 1] = \"Mask\";\n ResultType[ResultType[\"Undefined\"] = 2] = \"Undefined\";\n})(ResultType || (ResultType = {}));\n/**\n * @hidden\n */\n\n\nvar Result =\n/** @class */\nfunction () {\n function Result(value, rest, type) {\n if (type === void 0) {\n type = ResultType.Undefined;\n }\n\n this.value = value;\n this.rest = rest;\n this.type = type;\n } // map :: Functor f => f a ~> (a -> b) -> f b\n\n\n Result.prototype.map = function (fn) {\n return new Result(fn(this.value), this.rest);\n }; // chain :: Chain m => m a ~> (a -> m b) -> m b\n\n\n Result.prototype.chain = function (fn) {\n return fn(this.value, this.rest);\n };\n\n Result.prototype.fold = function (s, _\n /*we don't need it*/\n ) {\n return s(this.value, this.rest);\n };\n\n Result.prototype.concat = function (r) {\n return this.map(function (vs, _) {\n return r.chain(function (v, __) {\n return vs.concat([v]);\n });\n });\n };\n\n Result.prototype.toString = function () {\n return \"Result({ value: '\" + this.value + \"', rest: \" + this.rest + \" })\";\n };\n\n return Result;\n}();\n\nexport { Result };","/**\n * @hidden\n */\nvar Stream =\n/** @class */\nfunction () {\n function Stream(input, control) {\n if (input === void 0) {\n input = [];\n }\n\n if (control === void 0) {\n control = [];\n }\n\n this.input = input;\n this.control = control;\n this.inputCursor = 0;\n this.controlCursor = 0;\n }\n\n Stream.prototype.eof = function () {\n return this.inputCursor >= this.input.length;\n }; // Get the first value from the input.\n\n\n Stream.prototype.next = function () {\n return {\n char: this.input[this.inputCursor++],\n control: this.control[this.controlCursor++]\n };\n };\n\n Stream.prototype.peek = function () {\n return {\n char: this.input[this.inputCursor],\n control: this.control[this.controlCursor]\n };\n };\n\n Stream.prototype.eat_input = function () {\n this.inputCursor++;\n };\n\n Stream.prototype.eat_control = function () {\n this.controlCursor++;\n };\n\n Stream.prototype.eat = function () {\n this.inputCursor++;\n this.controlCursor++;\n };\n\n return Stream;\n}();\n\nexport { Stream };","import { Result, ResultType } from './result';\nimport { Stream } from './stream';\n\nvar toArray = function toArray(value) {\n return (value || '').split('');\n};\n\nvar ESCAPE_CHARACTER = '\\\\';\n/**\n * @hidden\n */\n\nvar Parser =\n/** @class */\nfunction () {\n function Parser(parse) {\n this.parse = parse;\n }\n\n Parser.prototype.run = function (input, control) {\n if (control === void 0) {\n control = '';\n }\n\n if (input instanceof Stream) {\n return this.parse(input);\n } else {\n return this.parse(new Stream(toArray(input), toArray(control)));\n }\n }; // map :: Functor f => f a ~> (a -> b) -> f b\n\n\n Parser.prototype.map = function (f) {\n var _this = this;\n\n return new Parser(function (stream) {\n return _this.parse(stream).map(f);\n });\n }; // chain :: Chain m => m a ~> (a -> m b) -> m b\n\n\n Parser.prototype.chain = function (f) {\n var _this = this;\n\n return new Parser(function (stream) {\n return _this.parse(stream).chain(function (v, s) {\n return f(v).run(s);\n });\n });\n };\n\n Parser.prototype.isLiteral = function (c) {\n return this.run(c).type === ResultType.Literal;\n };\n\n return Parser;\n}();\n\nexport { Parser };\n/**\n * @hidden\n */\n\nexport var mask = function mask(_a) {\n var prompt = _a.prompt,\n promptPlaceholder = _a.promptPlaceholder;\n return function (rule) {\n return new Parser(function (stream) {\n while (!stream.eof()) {\n var _a = stream.peek(),\n char = _a.char,\n control = _a.control;\n\n if (char === control && control === prompt) {\n stream.eat();\n return new Result(prompt, stream, ResultType.Mask);\n }\n\n if (rule.test(char)) {\n stream.eat();\n return new Result(char, stream, ResultType.Mask);\n }\n\n if (char === promptPlaceholder) {\n stream.eat();\n return new Result(prompt, stream, ResultType.Mask);\n }\n\n stream.eat_input();\n }\n\n stream.eat();\n return new Result(prompt, stream, ResultType.Mask);\n });\n };\n};\n/**\n * @hidden\n */\n\nexport var literal = function literal(_token) {\n return new Parser(function (stream) {\n // let {char, control} = stream.peek();\n var char = stream.peek().char;\n\n if (char === _token) {\n stream.eat();\n return new Result(_token, stream, ResultType.Literal);\n } // if (control === _token) {\n // while (!stream.eof() && char !== _token) {\n // stream.eat_input();\n // char = stream.peek().char;\n // }\n // }\n //\n // if (control !== undefined) {\n // stream.eat();\n // }\n\n\n return new Result(_token, stream, ResultType.Literal);\n });\n};\n/**\n * @hidden\n */\n\nexport var unmask = function unmask(prompt) {\n return function (rule) {\n return new Parser(function (stream) {\n while (!stream.eof()) {\n var _a = stream.peek(),\n char = _a.char,\n control = _a.control;\n\n if (char === prompt && control === prompt) {\n stream.eat();\n return new Result(char, stream);\n }\n\n if (rule.test(char)) {\n stream.eat();\n return new Result(char, stream);\n }\n\n stream.eat_input();\n }\n\n stream.eat();\n return new Result('', stream);\n });\n };\n};\n/**\n * @hidden\n */\n\nexport var unliteral = function unliteral(_token) {\n return new Parser(function (stream) {\n if (stream.eof()) {\n return new Result('', stream);\n }\n\n var char = stream.peek().char;\n\n if (char === _token) {\n stream.eat();\n }\n\n return new Result(_token, stream);\n });\n};\n/**\n * @hidden\n */\n\nexport var token = function token(rules, creator) {\n return new Parser(function (stream) {\n var char = stream.next().char;\n var rule = rules[char];\n\n if (char === ESCAPE_CHARACTER) {\n char = stream.next().char;\n return new Result(creator.literal(char), stream);\n }\n\n if (!rule) {\n return new Result(creator.literal(char), stream);\n }\n\n return new Result(creator.mask(rule), stream);\n });\n};\n/**\n * @hidden\n */\n\nexport var rawMask = function rawMask(_a) {\n var prompt = _a.prompt,\n promptPlaceholder = _a.promptPlaceholder;\n return new Parser(function (stream) {\n var char = stream.next().char;\n\n if (char === prompt) {\n return new Result(promptPlaceholder, stream);\n }\n\n return new Result(char, stream);\n });\n};\n/**\n * @hidden\n */\n\nexport var rawLiteral = function rawLiteral(includeLiterals) {\n return new Parser(function (stream) {\n var char = stream.next().char;\n\n if (includeLiterals) {\n return new Result(char, stream);\n }\n\n return new Result('', stream);\n });\n};","import { Parser } from './parsers';\nimport { Result } from './result';\n/**\n * @hidden\n */\n\nvar always = function always(value) {\n return new Parser(function (stream) {\n return new Result(value, stream);\n });\n};\n/**\n * @hidden\n */\n\n\nvar append = function append(p1, p2) {\n return p1.chain(function (vs) {\n return p2.map(function (v) {\n return vs.concat([v]);\n });\n });\n};\n/**\n * @hidden\n */\n\n\nexport var sequence = function sequence(list) {\n return list.reduce(function (acc, parser) {\n return append(acc, parser);\n }, always([]));\n};\n/**\n * @hidden\n */\n\nexport var greedy = function greedy(parser) {\n return new Parser(function (stream) {\n var result = new Result([], stream);\n\n while (!stream.eof()) {\n result = result.concat(parser.run(stream));\n }\n\n return result;\n });\n};","import { greedy, sequence } from './parsing/combinators';\nimport { literal as _literal, mask as maskParser, rawLiteral, rawMask, token, unliteral, unmask } from './parsing/parsers';\n/**\n * @hidden\n */\n\nvar MaskingService =\n/** @class */\nfunction () {\n function MaskingService() {\n this.rules = {};\n this.prompt = '_';\n this.mask = '';\n this.promptPlaceholder = ' ';\n this.includeLiterals = false;\n this.maskTokens = [];\n this.unmaskTokens = [];\n this.rawTokens = [];\n this.validationTokens = [];\n }\n\n MaskingService.prototype.update = function (_a) {\n var _b = _a.mask,\n mask = _b === void 0 ? '' : _b,\n _c = _a.prompt,\n prompt = _c === void 0 ? '' : _c,\n _d = _a.promptPlaceholder,\n promptPlaceholder = _d === void 0 ? ' ' : _d,\n _e = _a.rules,\n rules = _e === void 0 ? {} : _e,\n _f = _a.includeLiterals,\n includeLiterals = _f === void 0 ? false : _f;\n this.mask = mask;\n this.prompt = prompt;\n this.promptPlaceholder = promptPlaceholder;\n this.rules = rules;\n this.includeLiterals = includeLiterals;\n this.tokenize();\n };\n\n MaskingService.prototype.validationValue = function (maskedValue) {\n if (maskedValue === void 0) {\n maskedValue = '';\n }\n\n var value = maskedValue;\n sequence(this.validationTokens).run(maskedValue).fold(function (unmasked) {\n value = unmasked.join('');\n });\n return value;\n };\n\n MaskingService.prototype.rawValue = function (maskedValue) {\n if (maskedValue === void 0) {\n maskedValue = '';\n }\n\n var value = maskedValue;\n\n if (!this.rawTokens.length) {\n return value;\n }\n\n sequence(this.rawTokens).run(maskedValue).fold(function (unmasked) {\n value = unmasked.join('');\n });\n return value;\n };\n /**\n * @hidden\n */\n\n\n MaskingService.prototype.maskRaw = function (rawValue) {\n if (rawValue === void 0) {\n rawValue = '';\n }\n\n var value = rawValue;\n\n if (!this.maskTokens.length) {\n return value;\n }\n\n sequence(this.maskTokens).run(rawValue).fold(function (masked) {\n value = masked.join('');\n });\n return value;\n };\n\n MaskingService.prototype.maskInput = function (input, control, splitPoint) {\n if (input.length < control.length) {\n return this.maskRemoved(input, control, splitPoint);\n }\n\n return this.maskInserted(input, control, splitPoint);\n };\n\n MaskingService.prototype.maskInRange = function (pasted, oldValue, start, end) {\n var value = '';\n var selection = end;\n var beforeChange = oldValue.split('').slice(0, start);\n var afterChange = oldValue.split('').slice(end);\n sequence(this.maskTokens.slice(start, end)).run(pasted).fold(function (masked) {\n value = beforeChange.concat(masked).concat(afterChange).join('');\n });\n return {\n selection: selection,\n value: value\n };\n };\n\n MaskingService.prototype.maskRemoved = function (input, control, splitPoint) {\n var _this = this;\n\n var value = '';\n var selection = splitPoint;\n var unchanged = input.split('').slice(splitPoint);\n var changed = input.split('').slice(0, splitPoint).join('');\n var take = this.maskTokens.length - (input.length - splitPoint);\n sequence(this.maskTokens.slice(0, take)).run(changed, control).fold(function (masked) {\n selection = _this.adjustPosition(masked, selection);\n value = masked.concat(unchanged).join('');\n });\n return {\n selection: selection,\n value: value\n };\n };\n\n MaskingService.prototype.adjustPosition = function (input, selection) {\n var caretChar = input[selection];\n var isLiteral = this.maskTokens[selection].isLiteral(caretChar);\n\n if (!isLiteral && caretChar !== this.prompt) {\n return selection + 1;\n }\n\n return selection;\n };\n\n MaskingService.prototype.maskInserted = function (input, control, splitPoint) {\n var _this = this;\n\n var value = '';\n var selection = splitPoint;\n var changed = input.slice(0, splitPoint);\n sequence(this.unmaskTokens).run(changed, control).chain(function (unmasked) {\n selection = unmasked.join('').length;\n var unchanged = control.slice(selection);\n return sequence(_this.maskTokens).run(unmasked.join('') + unchanged, control);\n }).fold(function (masked) {\n value = masked.join('');\n });\n return {\n selection: selection,\n value: value\n };\n };\n\n Object.defineProperty(MaskingService.prototype, \"maskTokenCreator\", {\n get: function get() {\n var _a = this,\n prompt = _a.prompt,\n promptPlaceholder = _a.promptPlaceholder;\n\n return {\n literal: function literal(rule) {\n return _literal(rule);\n },\n mask: function mask(rule) {\n return maskParser({\n prompt: prompt,\n promptPlaceholder: promptPlaceholder\n })(rule);\n }\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MaskingService.prototype, \"unmaskTokenCreator\", {\n get: function get() {\n var _this = this;\n\n return {\n literal: function literal(rule) {\n return unliteral(rule);\n },\n mask: function mask(rule) {\n return unmask(_this.prompt)(rule);\n }\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MaskingService.prototype, \"rawTokenCreator\", {\n get: function get() {\n var _a = this,\n prompt = _a.prompt,\n promptPlaceholder = _a.promptPlaceholder,\n includeLiterals = _a.includeLiterals;\n\n return {\n literal: function literal(_) {\n return rawLiteral(includeLiterals);\n },\n mask: function mask(_) {\n return rawMask({\n prompt: prompt,\n promptPlaceholder: promptPlaceholder\n });\n }\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MaskingService.prototype, \"validationTokenCreator\", {\n get: function get() {\n var prompt = this.prompt;\n return {\n literal: function literal(_) {\n return rawLiteral(false);\n },\n mask: function mask(_) {\n return rawMask({\n prompt: prompt,\n promptPlaceholder: ''\n });\n }\n };\n },\n enumerable: true,\n configurable: true\n });\n\n MaskingService.prototype.tokenize = function () {\n var _this = this;\n\n greedy(token(this.rules, this.maskTokenCreator)).run(this.mask).fold(function (tokens, _) {\n _this.maskTokens = tokens;\n });\n greedy(token(this.rules, this.unmaskTokenCreator)).run(this.mask).fold(function (tokens, _) {\n _this.unmaskTokens = tokens;\n });\n greedy(token(this.rules, this.rawTokenCreator)).run(this.mask).fold(function (tokens, _) {\n _this.rawTokens = tokens;\n });\n greedy(token(this.rules, this.validationTokenCreator)).run(this.mask).fold(function (tokens, _) {\n _this.validationTokens = tokens;\n });\n };\n\n return MaskingService;\n}();\n\nexport { MaskingService };","/**\n * @hidden\n */\nvar defaultRules = {\n '#': /[\\d\\s\\+\\-]/,\n '&': /[\\S]/,\n '0': /[\\d]/,\n '9': /[\\d\\s]/,\n '?': /[a-zA-Z\\s]/,\n 'A': /[a-zA-Z0-9]/,\n 'C': /./,\n 'L': /[a-zA-Z]/,\n 'a': /[a-zA-Z0-9\\s]/\n};\n/**\n * @hidden\n */\n\nvar returnFalse = function returnFalse() {\n return false;\n};\n/**\n * @hidden\n */\n\n\nvar validationMessage = 'Please enter a valid value!';\n/**\n * @hidden\n */\n\nvar maskingChanged = function maskingChanged(prev, next) {\n return prev.includeLiterals !== next.includeLiterals || prev.mask !== next.mask || prev.prompt !== next.prompt || prev.promptPlaceholder !== next.promptPlaceholder || !sameRules(prev.rules, next.rules);\n};\n/**\n * @hidden\n */\n\n\nvar sameRules = function sameRules(rules1, rules2) {\n if (!!rules1 !== !!rules2) {\n return false;\n }\n\n if (rules1 === rules2 || !rules1 || !rules2) {\n return true;\n }\n\n var same = true;\n\n for (var key in rules1) {\n if (rules1[key] !== rules2[key]) {\n same = false;\n break;\n }\n }\n\n if (same) {\n for (var key in rules2) {\n if (!rules1.hasOwnProperty(key)) {\n same = false;\n break;\n }\n }\n }\n\n return same;\n};\n\nexport { defaultRules, maskingChanged, returnFalse, validationMessage };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { MaskingService } from './masking.service';\nimport { defaultRules, maskingChanged, returnFalse, validationMessage } from './utils';\nimport { guid, classNames, FloatingLabel } from '@progress/kendo-react-common';\n/**\n * Represents the props of the [KendoReact MaskedTextBox component]({% slug overview_maskedtextbox %}).\n */\n\nvar MaskedTextBox =\n/** @class */\nfunction (_super) {\n __extends(MaskedTextBox, _super);\n\n function MaskedTextBox() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n\n\n _this.state = {};\n _this._inputId = \"k-\" + guid();\n _this._service = new MaskingService();\n _this._isPasted = false;\n _this._selection = [null, null];\n _this._input = null;\n\n _this.pasteHandler = function (event) {\n var _a = event.target,\n selectionStart = _a.selectionStart,\n selectionEnd = _a.selectionEnd;\n\n if (selectionEnd === selectionStart) {\n return;\n }\n\n _this._isPasted = true;\n _this._selection = [selectionStart || 0, selectionEnd || 0];\n };\n\n _this.onChangeHandler = function (event) {\n var input = event.currentTarget;\n var value = input.value;\n var start = _this._selection[0] || 0;\n var end = _this._selection[1] || 0;\n\n if (!_this.props.mask) {\n _this._isPasted = false;\n _this._selection = [null, null];\n\n _this.triggerOnChange(value, event);\n\n return;\n }\n\n var maskedValue = _this.value;\n var result;\n\n if (_this._isPasted) {\n _this._isPasted = false;\n var rightPart = maskedValue.length - end;\n var to = value.length - rightPart;\n result = _this._service.maskInRange(value.slice(start, to), maskedValue, start, end);\n } else {\n result = _this._service.maskInput(value, maskedValue, input.selectionStart || 0);\n }\n\n _this._selection = [result.selection, result.selection];\n\n _this.triggerOnChange(result.value, event);\n };\n\n _this.focusHandler = function (event) {\n if (!_this.state.focused) {\n _this.setState({\n focused: true\n });\n\n if (_this.props.onFocus) {\n _this.props.onFocus.call(undefined, {\n target: _this,\n syntheticEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }\n };\n\n _this.blurHandler = function (event) {\n if (_this.state.focused) {\n _this.setState({\n focused: false\n });\n\n if (_this.props.onBlur) {\n _this.props.onBlur.call(undefined, {\n target: _this,\n syntheticEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }\n };\n\n _this.setValidity = function () {\n if (_this.element) {\n _this.element.setCustomValidity(_this.validity.valid ? '' : _this.props.validationMessage || validationMessage);\n }\n };\n\n return _this;\n }\n\n Object.defineProperty(MaskedTextBox.prototype, \"element\", {\n /**\n * Gets the element of the MaskedTextBox.\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 *
    \n * \n * this.element = component ? component.element : null}\n * />\n * \n *
    \n * );\n * }\n * }\n *\n * ReactDOM.render(\n * ,\n * document.getElementsByTagName('my-app')[0]\n * );\n * ```\n */\n get: function get() {\n return this._input;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MaskedTextBox.prototype, \"value\", {\n /**\n * Gets the value with the mask of the MaskedTextBox.\n */\n get: function get() {\n if (this._valueDuringOnChange !== undefined) {\n return this._valueDuringOnChange;\n } else if (this.props.value !== undefined) {\n return this.props.value;\n } else if (this.state.value !== undefined) {\n return this.state.value;\n } else if (this.props.defaultValue !== undefined) {\n return this.props.defaultValue;\n }\n\n return '';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MaskedTextBox.prototype, \"rawValue\", {\n /**\n * Gets the raw value without the mask of the MaskedTextBox.\n */\n get: function get() {\n return this._service.rawValue(this.value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MaskedTextBox.prototype, \"validity\", {\n /**\n * Represents the validity state into which the MaskedTextBox is set.\n */\n get: function get() {\n var maskedValue = this.value;\n\n var value = this._service.validationValue(maskedValue);\n\n var customError = this.props.validationMessage !== undefined;\n var valid = this.props.valid !== undefined ? this.props.valid : (!this.required || !!value) && (!this.props.maskValidation || !this.props.prompt || maskedValue.indexOf(this.props.prompt) === -1);\n return {\n customError: customError,\n valid: valid,\n valueMissing: !value\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MaskedTextBox.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function get() {\n return this.props.validityStyles !== undefined ? this.props.validityStyles : MaskedTextBox.defaultProps.validityStyles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MaskedTextBox.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function get() {\n return this.props.required !== undefined ? this.props.required : MaskedTextBox.defaultProps.required;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MaskedTextBox.prototype, \"name\", {\n /**\n * Gets the `name` property of the MaskedTextBox.\n */\n get: function get() {\n return this.props.name;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n MaskedTextBox.prototype.componentDidUpdate = function (prevProps, prevState) {\n if (this.element && this.state.focused && prevState.focused) {\n var _a = this._selection,\n start = _a[0],\n end = _a[1];\n var prevSelection = prevProps.selection;\n var nextSelection = this.props.selection;\n\n if (!prevSelection && nextSelection || prevSelection && nextSelection && (prevSelection.start !== nextSelection.start || prevSelection.end !== nextSelection.end)) {\n start = nextSelection.start;\n end = nextSelection.end;\n }\n\n if (start !== null && end !== null) {\n this.element.setSelectionRange(start, end);\n }\n }\n\n if (maskingChanged(prevProps, this.props)) {\n this.updateService();\n }\n\n this.setValidity();\n };\n /**\n * @hidden\n */\n\n\n MaskedTextBox.prototype.componentDidMount = function () {\n this.updateService();\n this.setValidity();\n };\n /**\n * @hidden\n */\n\n\n MaskedTextBox.prototype.render = function () {\n var _this = this;\n\n var inputId = this.props.id || this._inputId;\n var isValid = !this.validityStyles || this.validity.valid;\n var component = React.createElement(\"span\", {\n dir: this.props.dir,\n className: classNames('k-widget k-maskedtextbox', this.props.className, {\n 'k-state-focused': this.state.focused,\n 'k-state-disabled': this.props.disabled,\n 'k-state-invalid': !isValid\n }),\n style: !this.props.label ? {\n width: this.props.width\n } : undefined\n }, React.createElement(\"input\", {\n type: \"text\",\n autoComplete: \"off\",\n autoCorrect: \"off\",\n autoCapitalize: \"off\",\n spellCheck: false,\n className: \"k-textbox\",\n value: this.value,\n id: inputId,\n name: this.props.name,\n tabIndex: this.props.tabIndex || undefined,\n accessKey: this.props.accessKey,\n title: this.props.title,\n disabled: this.props.disabled || undefined,\n readOnly: this.props.readonly || undefined,\n placeholder: this.props.placeholder,\n ref: function ref(input) {\n return _this._input = input;\n },\n onChange: this.onChangeHandler,\n onPaste: this.pasteHandler,\n onFocus: this.focusHandler,\n onBlur: this.blurHandler,\n onDragStart: returnFalse,\n onDrop: returnFalse\n }));\n return this.props.label ? React.createElement(FloatingLabel, {\n id: inputId,\n value: this.value,\n valid: isValid,\n placeholder: this.props.placeholder,\n label: this.props.label,\n children: component,\n style: {\n width: this.props.width\n },\n dir: this.props.dir\n }) : component;\n };\n\n MaskedTextBox.prototype.triggerOnChange = function (maskedValue, event) {\n this.setState({\n value: maskedValue\n });\n\n if (this.props.onChange) {\n this._valueDuringOnChange = maskedValue;\n this.props.onChange.call(undefined, {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n selectionStart: this._selection[0],\n selectionEnd: this._selection[1],\n target: this\n });\n this._valueDuringOnChange = undefined;\n }\n };\n\n MaskedTextBox.prototype.updateService = function (extra) {\n var config = Object.assign({\n includeLiterals: this.props.includeLiterals,\n mask: this.props.mask,\n prompt: this.props.prompt,\n promptPlaceholder: this.props.promptPlaceholder,\n rules: this.rules\n }, extra); // tslint:disable-line:align\n\n this._service.update(config);\n };\n\n Object.defineProperty(MaskedTextBox.prototype, \"rules\", {\n get: function get() {\n return Object.assign({}, defaultRules, this.props.rules);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n MaskedTextBox.propTypes = {\n value: PropTypes.string,\n defaultValue: PropTypes.string,\n placeholder: PropTypes.string,\n title: PropTypes.string,\n dir: PropTypes.string,\n id: PropTypes.string,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tabIndex: PropTypes.number,\n accessKey: PropTypes.string,\n disabled: PropTypes.bool,\n readonly: PropTypes.bool,\n prompt: PropTypes.string,\n promptPlaceholder: PropTypes.string,\n includeLiterals: PropTypes.bool,\n maskValidation: PropTypes.bool,\n mask: PropTypes.string,\n rules: function rules(props, propName, componentName) {\n var rules = props.rules;\n\n if (rules !== undefined) {\n var valid = Object.entries(rules).some(function (e) {\n return typeof e !== 'string' || !(rules[e] instanceof RegExp);\n });\n\n if (!valid) {\n return new Error('Invalid prop `' + propName + '` supplied to' + ' `' + componentName + '`. Validation failed.');\n }\n }\n },\n selection: PropTypes.shape({\n start: PropTypes.number.isRequired,\n end: PropTypes.number.isRequired\n }),\n name: PropTypes.string,\n label: PropTypes.string,\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n valid: PropTypes.bool,\n validityStyles: PropTypes.bool,\n onChange: PropTypes.func\n };\n /**\n * @hidden\n */\n\n MaskedTextBox.defaultProps = {\n prompt: '_',\n promptPlaceholder: ' ',\n includeLiterals: false,\n maskValidation: true,\n rules: defaultRules,\n required: false,\n validityStyles: true\n };\n return MaskedTextBox;\n}(React.Component);\n\nexport { MaskedTextBox };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { registerForIntl, provideIntlService, registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { guid, classNames, FloatingLabel, dispatchEvent } from '@progress/kendo-react-common';\nimport { messages, numericIncreaseValue, numericDecreaseValue } from './../messages';\nvar VALIDATION_MESSAGE = 'Please enter a valid value!'; // tslint:enable:max-line-length\n\nvar NumericTextBox =\n/** @class */\nfunction (_super) {\n __extends(NumericTextBox, _super);\n\n function NumericTextBox(props) {\n var _this = _super.call(this, props) || this;\n\n _this.valueDuringOnChange = undefined;\n _this.textBeforeInput = '';\n _this._inputId = guid();\n\n _this.setValidity = function () {\n if (_this.element && _this.element.setCustomValidity) {\n _this.element.setCustomValidity(_this.validity.valid ? '' : _this.props.validationMessage || VALIDATION_MESSAGE);\n }\n };\n\n _this.elementChange = _this.elementChange.bind(_this);\n _this.increase = _this.increase.bind(_this);\n _this.decrease = _this.decrease.bind(_this);\n _this.wheel = _this.wheel.bind(_this);\n _this.keyDown = _this.keyDown.bind(_this);\n var initialState = {\n value: null,\n looselyFormattedText: null,\n selectionStart: 0,\n selectionEnd: 0,\n decimalSelect: false\n };\n\n if (_this.props.value !== undefined) {\n initialState.value = _this.props.value;\n } else if (_this.props.defaultValue !== undefined) {\n initialState.value = _this.props.defaultValue;\n }\n\n _this.state = initialState;\n return _this;\n }\n\n Object.defineProperty(NumericTextBox.prototype, \"name\", {\n /**\n * Gets the `name` property of the NumericTextBox.\n */\n get: function get() {\n return this.props.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NumericTextBox.prototype, \"value\", {\n /**\n * Gets the value of the NumericTextBox.\n */\n get: function get() {\n if (this.valueDuringOnChange !== undefined) {\n return this.valueDuringOnChange;\n } else {\n return this.state.value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NumericTextBox.prototype, \"validity\", {\n /**\n * Represents the validity state into which the NumericTextBox is set.\n */\n get: function get() {\n // The NumericTextBox currently autocorrect its' value,\n // so the only invalid state is if it's required and\n // the value is null!\n var customError = this.props.validationMessage !== undefined;\n var isValid = !this.required || this.value !== null;\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(NumericTextBox.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function get() {\n return this.props.validityStyles !== undefined ? this.props.validityStyles : NumericTextBox.defaultProps.validityStyles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NumericTextBox.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function get() {\n return this.props.required !== undefined ? this.props.required : NumericTextBox.defaultProps.required;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NumericTextBox.prototype, \"element\", {\n /**\n * Gets the element of the NumericTextBox.\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 *
    \n * \n * this.element = numericTextBox ? numericTextBox.element : null}\n * />\n * \n *
    \n * );\n * }\n * }\n *\n * ReactDOM.render(\n * ,\n * document.getElementsByTagName('my-app')[0]\n * );\n * ```\n */\n get: function get() {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n NumericTextBox.getDerivedStateFromProps = function (props, state) {\n if (props.value !== undefined && props.value !== state.value) {\n return {\n value: props.value\n };\n }\n\n return null;\n };\n /**\n * @hidden\n */\n\n\n NumericTextBox.prototype.componentDidMount = function () {\n if (this.element) {\n this.textBeforeInput = this.element.value;\n }\n\n this.setValidity();\n };\n /**\n * @hidden\n */\n\n\n NumericTextBox.prototype.componentDidUpdate = function (_, prevState) {\n if (!(document && document.activeElement !== this.element || !this.element) && this.state.looselyFormattedText !== null) {\n // An IE related issue.\n // When having multiple inputs and if selection is applied, the caret moves to the latest changed input.\n // So, skip the application of the selection if the input is not focused.\n if (this.element.value !== this.state.looselyFormattedText && this.state.value === prevState.value) {\n // culture is changed, typing was not valid or was ranged.\n this.element.selectionStart = this.state.selectionStart;\n this.element.selectionEnd = this.state.selectionEnd;\n } else {\n var position = void 0;\n var indexOfDecimal = this.state.looselyFormattedText.indexOf(this.symbols.decimal);\n\n if (indexOfDecimal >= 0 && indexOfDecimal < this.state.selectionStart) {\n position = this.state.selectionEnd;\n } else {\n position = this.state.selectionEnd - (this.state.looselyFormattedText.length - this.element.value.length);\n }\n\n var indexOfNewDecimal = this.element.value.indexOf(this.symbols.decimal);\n\n if (this.state.decimalSelect || this.state.value === null && indexOfNewDecimal >= 0 || indexOfDecimal === -1 && indexOfNewDecimal >= 0) {\n if (this.state.selectionStart < indexOfNewDecimal + 2 && indexOfDecimal >= 0) {\n position = indexOfNewDecimal + 1;\n } else {\n position = indexOfNewDecimal;\n }\n }\n\n if (!this.state.decimalSelect && this.state.value === prevState.value) {\n position = this.state.selectionEnd - (this.state.looselyFormattedText.length - this.element.value.length);\n }\n\n if (this.state.looselyFormattedText[0] === this.symbols.decimal && prevState.looselyFormattedText === this.symbols.decimal) {\n position = this.state.value !== undefined ? this.formatNumber(this.state.value).length : 0;\n }\n\n this.element.selectionStart = this.element.selectionEnd = position;\n }\n }\n\n if (this.element) {\n this.textBeforeInput = this.element.value;\n }\n\n this.setValidity();\n };\n\n Object.defineProperty(NumericTextBox.prototype, \"valueAsLocalString\", {\n /**\n * @hidden\n */\n get: function get() {\n this.intl = provideIntlService(this);\n this.symbols = this.intl.numberSymbols();\n\n if (this.state.looselyFormattedText !== null && !this.state.decimalSelect && this.parseNumber(this.state.looselyFormattedText) === this.state.value && this.formatNumber(this.state.value).length < this.state.looselyFormattedText.length && this.state.looselyFormattedText.indexOf(this.formatNumber(this.state.value)) === 0) {\n // the user is currently typing, do not interrupt them\n return this.state.looselyFormattedText;\n }\n\n return this.formatNumber(this.state.value);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n NumericTextBox.prototype.render = function () {\n var _this = this;\n\n var inputId = this.props.id || this._inputId;\n var localizationService = provideLocalizationService(this);\n var isValid = !this.validityStyles || this.validity.valid;\n var numerictextbox = React.createElement(\"span\", {\n dir: this.props.dir,\n style: !this.props.label ? {\n width: this.props.width\n } : undefined,\n className: 'k-widget k-numerictextbox' + (this.props.className ? ' ' + this.props.className : ''),\n \"aria-disabled\": this.props.disabled ? 'true' : undefined\n }, React.createElement(\"span\", {\n className: classNames('k-numeric-wrap', {\n 'k-state-disabled': this.props.disabled,\n 'k-state-invalid': !isValid\n }),\n ref: function ref(elementWrapper) {\n _this.elementWrapper = elementWrapper;\n }\n }, React.createElement(\"input\", {\n tabIndex: this.props.tabIndex,\n accessKey: this.props.accessKey,\n disabled: this.props.disabled,\n title: this.props.title,\n \"aria-valuemin\": this.props.min,\n \"aria-valuemax\": this.props.max,\n placeholder: this.props.placeholder,\n type: this.props.inputType || 'tel',\n spellCheck: false,\n autoComplete: \"off\",\n autoCorrect: \"off\",\n className: \"k-input k-formatted-value\",\n id: inputId,\n value: this.valueAsLocalString,\n \"aria-valuenow\": this.state.value !== null ? this.state.value : undefined,\n name: this.props.name,\n onWheel: this.wheel,\n onKeyDown: this.keyDown,\n onChange: this.elementChange,\n ref: function ref(input) {\n return _this._element = input;\n }\n }), this.props.children, this.props.spinners && React.createElement(\"span\", {\n className: \"k-select\",\n onMouseDown: function onMouseDown(e) {\n if (document && _this._element) {\n e.preventDefault();\n\n if (document.activeElement !== _this._element) {\n _this._element.focus();\n }\n }\n }\n }, React.createElement(\"span\", {\n className: \"k-link k-link-increase\",\n \"aria-label\": localizationService.toLanguageString(numericIncreaseValue, messages[numericIncreaseValue]),\n title: localizationService.toLanguageString(numericIncreaseValue, messages[numericIncreaseValue]),\n onClick: this.increase\n }, React.createElement(\"span\", {\n className: \"k-icon k-i-arrow-n\"\n })), React.createElement(\"span\", {\n className: \"k-link k-link-decrease\",\n \"aria-label\": localizationService.toLanguageString(numericDecreaseValue, messages[numericDecreaseValue]),\n title: localizationService.toLanguageString(numericDecreaseValue, messages[numericDecreaseValue]),\n onClick: this.decrease\n }, React.createElement(\"span\", {\n className: \"k-icon k-i-arrow-s\"\n })))));\n return this.props.label ? React.createElement(FloatingLabel, {\n id: inputId,\n value: this.valueAsLocalString,\n valid: isValid,\n placeholder: this.props.placeholder,\n label: this.props.label,\n children: numerictextbox,\n style: {\n width: this.props.width\n },\n dir: this.props.dir\n }) : numerictextbox;\n };\n\n NumericTextBox.prototype.formatNumber = function (value) {\n if (value == null) {\n return '';\n }\n\n return this.intl.formatNumber(value, this.props.format).toString(); // the second argument actually supports null/undefined\n };\n\n NumericTextBox.prototype.parseNumber = function (text) {\n return this.intl.parseNumber(text, this.props.format);\n };\n\n NumericTextBox.prototype.elementChange = function (event) {\n if (!this.element) {\n return;\n }\n\n var element = this.element;\n var newState = {\n value: this.state.value,\n looselyFormattedText: element.value,\n selectionStart: this.element.selectionStart,\n selectionEnd: this.element.selectionEnd,\n decimalSelect: false\n };\n var text = element.value; // do NOT use 'event.target.value', always use 'element.value'\n\n var minusSign = this.symbols.minusSign;\n\n if (text === minusSign) {\n newState.value = null;\n this.triggerChange(newState, event);\n return;\n }\n\n if (text.split(minusSign).length !== this.textBeforeInput.split(minusSign).length && text.length === this.textBeforeInput.length + minusSign.length) {\n // positive/negative change\n newState.value = -this.parseNumber(this.textBeforeInput);\n this.triggerChange(newState, event);\n return;\n }\n\n var decimal = this.symbols.decimal;\n\n if (text.split(RegExp('\\\\' + decimal)).length > 2) {\n // prevent typing second decimal separator\n newState.decimalSelect = true;\n this.triggerChange(newState, event);\n return;\n }\n\n if (text.length > 1 && text.indexOf(decimal) === -1 && this.textBeforeInput.indexOf(decimal) >= 0 && text.length + decimal.length === this.textBeforeInput.length) {\n // prevent deleting of decimal separator on its own\n newState.decimalSelect = true;\n this.triggerChange(newState, event);\n return;\n }\n\n var value = this.parseNumber(text);\n\n if (value === this.state.value && text.length > 0 && text[text.length - 1] === decimal) {\n if ((this.formatNumber(1.1) || '').toString().indexOf(decimal) > -1) {\n newState.looselyFormattedText = text;\n this.triggerChange(newState, event);\n return;\n }\n }\n\n var invalid = (value === null || isNaN(value)) && text.length > 0 && text !== this.symbols.minusSign;\n var wrapper = this.elementWrapper;\n\n if (text.length > this.textBeforeInput.length && this.parseNumber(text) === this.parseNumber(text.slice(0, element.selectionStart)) && (this.parseNumber(text.slice(element.selectionStart - 1)) === null || isNaN(this.parseNumber(text.slice(element.selectionStart - 1))))) {\n invalid = true;\n }\n\n if (invalid) {\n // block typing of invalid characters\n if (wrapper && wrapper.className.indexOf(\"k-state-invalid\") === -1) {\n wrapper.className += ' k-state-invalid';\n setTimeout(function () {\n wrapper.className = wrapper.className.replace(' k-state-invalid', '');\n }, 50);\n }\n\n newState.looselyFormattedText = this.textBeforeInput;\n newState.selectionStart = newState.selectionEnd = element.selectionEnd + this.textBeforeInput.length - element.value.length;\n this.triggerChange(newState, event);\n return;\n }\n\n newState.value = value;\n this.triggerChange(newState, event);\n };\n\n NumericTextBox.prototype.nonInputActions = function (value, event) {\n var newState = {\n value: value,\n looselyFormattedText: null,\n selectionStart: 0,\n selectionEnd: 0,\n decimalSelect: false\n };\n this.triggerChange(newState, event);\n };\n\n NumericTextBox.prototype.triggerChange = function (newState, event) {\n if (this.props.disabled) {\n return;\n } // decimals ranging based on the format:\n\n\n this.valueDuringOnChange = this.ranged(this.parseNumber(this.formatNumber(this.ranged(newState.value)))); // const value = newState.value;\n\n var shouldFireEvent = this.valueDuringOnChange !== this.state.value;\n\n if (this.props.value !== undefined) {\n // controlled\n newState.value = this.props.value;\n } else {\n // uncontrolled\n newState.value = this.valueDuringOnChange;\n }\n\n this.setState(newState);\n\n if (shouldFireEvent) {\n dispatchEvent(this.props.onChange, event, this, {\n value: this.valueDuringOnChange\n });\n }\n\n this.valueDuringOnChange = undefined;\n };\n\n NumericTextBox.prototype.ranged = function (value) {\n if (value == null) {\n return value;\n }\n\n if (!(value > 1 || value < 1 || value === 1)) {\n // null, undefined or NaN\n return null;\n }\n\n if (this.props.max !== undefined && this.props.min !== undefined && this.props.max < this.props.min) {\n return null;\n } // TODO: This should be something improved like\n // while (value < max) { value *= 10 }\n // and the selection should be adjusted\n // to get good experience when typing values in ranges like [222,11111]\n\n\n if (this.props.max !== undefined && value > this.props.max) {\n value = this.props.max;\n }\n\n if (this.props.min !== undefined && value < this.props.min) {\n value = this.props.min;\n }\n\n return value;\n };\n\n NumericTextBox.prototype.increase = function (syntheticEvent) {\n this.nonInputActions((this.state.value || 0) + (this.props.step || 0), syntheticEvent);\n };\n\n NumericTextBox.prototype.decrease = function (syntheticEvent) {\n this.nonInputActions((this.state.value || 0) - (this.props.step || 0), syntheticEvent);\n };\n\n NumericTextBox.prototype.wheel = function (event) {\n if (!document || document.activeElement !== this.element || !this.element) {\n return;\n }\n\n if (event.nativeEvent.deltaY < 0) {\n event.preventDefault();\n this.increase(event);\n }\n\n if (event.nativeEvent.deltaY > 0) {\n event.preventDefault();\n this.decrease(event);\n }\n };\n\n NumericTextBox.prototype.keyDown = function (event) {\n switch (event.keyCode) {\n case 38:\n // arrow up\n this.increase(event);\n break;\n\n case 40:\n // arrow down\n this.decrease(event);\n break;\n\n case 110:\n // numpad decimal key\n var element = this.element;\n\n if (element) {\n var text = element.value;\n var selectionStart = element.selectionStart,\n selectionEnd = element.selectionEnd;\n element.value = text.slice(0, selectionStart) + this.symbols.decimal + text.slice(selectionEnd);\n element.selectionStart = element.selectionEnd = selectionStart + 1;\n this.elementChange(event); // TODO: remove this call (use triggerChange directly with custom state)\n }\n\n break;\n\n default:\n return;\n }\n\n event.preventDefault();\n };\n /**\n * @hidden\n */\n\n\n NumericTextBox.propTypes = {\n value: PropTypes.number,\n defaultValue: PropTypes.number,\n step: PropTypes.number,\n format: PropTypes.oneOfType([PropTypes.string, 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 width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\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 dir: PropTypes.string,\n name: PropTypes.string,\n label: PropTypes.string,\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n id: PropTypes.string,\n onChange: PropTypes.func\n };\n /**\n * @hidden\n */\n\n NumericTextBox.defaultProps = {\n spinners: true,\n disabled: false,\n onChange: function onChange(_) {\n return;\n },\n step: 1,\n required: false,\n validityStyles: true // the rest of the properties are undefined by default\n\n };\n return NumericTextBox;\n}(React.Component);\n\nexport { NumericTextBox };\nregisterForIntl(NumericTextBox);\nregisterForLocalization(NumericTextBox);","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\n/**\n * @hidden\n */\n\nexport var SLIDER_LABEL_ATTRIBUTE = 'data-slider-label';\n/**\n * Represents the KendoReact SliderLabel component.\n */\n\nvar SliderLabel =\n/** @class */\nfunction (_super) {\n __extends(SliderLabel, _super);\n\n function SliderLabel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n\n\n SliderLabel.prototype.render = function () {\n var _a;\n\n var style = this.props.vertical ? {\n bottom: this.props.position + \"%\",\n height: '1px',\n width: '100%'\n } : {\n left: this.props.position + \"%\",\n width: '1px'\n };\n var labelTextStyle = this.props.vertical ? {\n top: '-8px'\n } : {\n width: '40px',\n left: \"-20px\"\n };\n return React.createElement(\"li\", {\n role: \"presentation\",\n className: \"k-tick k-tick-large\",\n title: this.props.title,\n style: __assign({\n zIndex: 1,\n position: 'absolute'\n }, style)\n }, React.createElement(\"span\", __assign({\n style: __assign({\n position: 'absolute'\n }, labelTextStyle)\n }, (_a = {}, _a[SLIDER_LABEL_ATTRIBUTE] = true, _a), {\n className: \"k-label\",\n onClick: this.props.onClick\n }), \" \", this.props.children));\n };\n\n return SliderLabel;\n}(React.PureComponent);\n\nexport { SliderLabel };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { dispatchEvent, Keys, classNames, Draggable } from '@progress/kendo-react-common';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, sliderIncreaseValue, sliderDecreaseValue, sliderDragTitle } from './../messages';\nimport { SLIDER_LABEL_ATTRIBUTE } from './SliderLabel';\n/**\n * Represents the [KendoReact Slider component]({% slug overview_slider%}).\n */\n\nvar Slider =\n/** @class */\nfunction (_super) {\n __extends(Slider, _super);\n\n function Slider() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n\n\n _this.state = {\n value: _this.props.defaultValue === undefined ? _this.props.min : _this.props.defaultValue,\n focused: false\n };\n /**\n * @hidden\n */\n\n _this.buttons = function (props) {\n if (!props.enabled) {\n return props.children;\n }\n\n return React.createElement(React.Fragment, null, React.createElement(\"a\", {\n className: \"k-button k-button-decrease\",\n style: {\n position: 'relative'\n },\n title: props.decrementTitle,\n onClick: props.decrement\n }, React.createElement(\"span\", {\n className: classNames('k-icon', {\n 'k-i-arrow-s': _this.props.vertical,\n 'k-i-arrow-w': !_this.props.vertical\n })\n })), props.children, React.createElement(\"a\", {\n className: \"k-button k-button-increase\",\n style: {\n position: 'relative'\n },\n title: props.incrementTitle,\n onClick: props.increment\n }, React.createElement(\"span\", {\n className: classNames('k-icon', {\n 'k-i-arrow-n': _this.props.vertical,\n 'k-i-arrow-e': !_this.props.vertical\n })\n })));\n };\n\n _this.isLabel = function (target) {\n var currentTarget = target;\n\n while (currentTarget) {\n if (Boolean(currentTarget.getAttribute(SLIDER_LABEL_ATTRIBUTE))) {\n return true;\n }\n\n currentTarget = currentTarget.parentElement;\n }\n\n return false;\n };\n\n _this.onFocus = function () {\n _this.setState({\n focused: true\n });\n };\n\n _this.onBlur = function () {\n _this.setState({\n focused: false\n });\n };\n\n _this.onKeyDown = function (e) {\n var newValue = undefined;\n\n if (e.keyCode === Keys.left || e.keyCode === Keys.down) {\n newValue = _this.state.value - (_this.props.step || 0);\n } else if (e.keyCode === Keys.right || e.keyCode === Keys.up) {\n newValue = _this.state.value + (_this.props.step || 0);\n } else if (e.keyCode === Keys.home) {\n newValue = _this.props.min;\n } else if (e.keyCode === Keys.end) {\n newValue = _this.props.max;\n }\n\n if (newValue !== undefined) {\n e.preventDefault();\n\n _this.change(e, newValue);\n }\n };\n\n _this.decrement = function (e) {\n e.preventDefault();\n\n _this.change(e, _this.state.value - (_this.props.step || 0));\n };\n\n _this.increment = function (e) {\n e.preventDefault();\n\n _this.change(e, _this.state.value + (_this.props.step || 0));\n };\n\n _this.dragStart = function (e) {\n if (!_this.isLabel(e.event.originalEvent.target)) {\n if (e.event.isTouch) {\n e.event.originalEvent.preventDefault();\n }\n\n _this.drag(e);\n }\n };\n\n _this.dragOver = function (e) {\n e.event.originalEvent.preventDefault();\n\n _this.drag(e);\n };\n\n _this.drag = function (e) {\n var computed = e.element.getBoundingClientRect();\n var distance = _this.props.vertical ? computed.bottom - e.event.clientY : e.event.clientX - computed.left;\n var size = _this.props.vertical ? computed.height : computed.width;\n var percentage = distance / size;\n\n _this.change(e, _this.props.min + percentage * (_this.props.max - _this.props.min));\n };\n\n return _this;\n }\n /**\n * @hidden\n */\n\n\n Slider.getDerivedStateFromProps = function (props, state) {\n var value = props.value !== undefined ? props.value : state.value;\n var min = props.min,\n max = props.max;\n return value === undefined ? null : {\n value: Math.min(Math.max(value, min), max)\n };\n };\n /**\n * @hidden\n */\n\n\n Slider.prototype.render = function () {\n var _this = this;\n\n var lS = provideLocalizationService(this);\n var percentValue = (this.state.value - this.props.min) / (this.props.max - this.props.min) * 100;\n var trackStyles = this.props.vertical ? {\n marginTop: '0.5rem',\n marginBottom: '0.5rem'\n } : {\n marginLeft: '0.5rem',\n marginRight: '0.5rem'\n };\n var sliderItemsStyle = this.props.vertical ? {\n paddingTop: 0,\n height: '100%'\n } : {};\n return React.createElement(\"div\", {\n \"aria-valuemin\": this.props.min,\n \"aria-valuemax\": this.props.max,\n \"aria-valuenow\": this.state.value,\n \"aria-disabled\": this.props.disabled ? 'true' : undefined,\n role: \"slider\",\n style: this.props.style,\n tabIndex: this.props.disabled ? undefined : this.props.tabIndex || 0,\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n onKeyDown: this.onKeyDown,\n className: classNames('k-slider k-widget k-state-default', this.props.className, {\n 'k-state-focused': this.state.focused,\n 'k-state-disabled': this.props.disabled,\n 'k-slider-horizontal': !this.props.vertical,\n 'k-slider-vertical': this.props.vertical\n })\n }, React.createElement(\"div\", {\n className: classNames('k-slider-wrap', {\n 'k-slider-buttons': this.props.buttons\n }),\n style: {\n display: 'flex',\n position: 'relative',\n flexDirection: this.props.vertical ? 'column-reverse' : 'row'\n }\n }, React.createElement(this.buttons, {\n enabled: this.props.buttons,\n decrement: this.decrement,\n increment: this.increment,\n incrementTitle: lS.toLanguageString(sliderIncreaseValue, messages[sliderIncreaseValue]),\n decrementTitle: lS.toLanguageString(sliderDecreaseValue, messages[sliderDecreaseValue])\n }, React.createElement(Draggable, {\n onDrag: this.dragOver,\n onPress: this.dragStart\n }, React.createElement(\"div\", {\n className: \"k-slider-track-wrap\",\n style: __assign({\n flexGrow: 1,\n position: 'relative',\n touchAction: 'none'\n }, trackStyles)\n }, this.props.children && React.createElement(\"ul\", {\n className: \"k-reset k-slider-items\",\n style: __assign({\n margin: 0\n }, sliderItemsStyle)\n }, React.Children.map(this.props.children, function (child) {\n return child && React.cloneElement(child, {\n position: 100 * (child.props.position - _this.props.min) / (_this.props.max - _this.props.min),\n vertical: _this.props.vertical\n }, child.props.children);\n })), React.createElement(\"div\", {\n className: \"k-slider-track\",\n style: this.props.vertical ? {\n bottom: 0,\n height: '100%'\n } : {\n left: 0,\n width: '100%'\n },\n ref: function ref(el) {\n return _this._sliderTrack = el;\n }\n }, React.createElement(\"div\", {\n className: \"k-slider-selection\",\n style: this.props.vertical ? {\n height: percentValue + '%'\n } : {\n width: percentValue + '%'\n }\n }), React.createElement(\"a\", {\n className: \"k-draghandle\",\n title: lS.toLanguageString(sliderDragTitle, messages[sliderDragTitle]),\n style: this.props.vertical ? {\n bottom: 'calc(' + percentValue + '% - 8px)',\n zIndex: 1\n } : {\n left: 'calc(' + percentValue + '% - 8px)',\n zIndex: 1\n }\n })))))));\n };\n\n Object.defineProperty(Slider.prototype, \"sliderTrack\", {\n /**\n * @hidden\n */\n get: function get() {\n return this._sliderTrack;\n },\n enumerable: true,\n configurable: true\n });\n\n Slider.prototype.change = function (e, value) {\n value = Math.min(Math.max(value, this.props.min), this.props.max);\n this.setState({\n value: value\n });\n dispatchEvent(this.props.onChange, e, this, {\n value: value\n });\n };\n /**\n * @hidden\n */\n\n\n Slider.propTypes = {\n min: PropTypes.number.isRequired,\n max: PropTypes.number.isRequired,\n value: PropTypes.number,\n vertical: PropTypes.bool // TODO: validation when buttons is set to true, but no step is provided\n\n };\n return Slider;\n}(React.Component);\n\nexport { Slider };\nregisterForLocalization(Slider);","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, guid, noop, Keys, dispatchEvent } from '@progress/kendo-react-common';\nvar SWITCH_CONTAINER = 'k-switch-container';\nvar SWITCH_HANDLE = 'k-switch-handle';\nvar SWITCH_LABEL_ON = 'k-switch-label-on';\nvar SWITCH_LABEL_OFF = 'k-switch-label-off';\n/**\n * Represents the [KendoReact Switch component]({% slug overview_switch%}).\n */\n\nvar Switch =\n/** @class */\nfunction (_super) {\n __extends(Switch, _super);\n /**\n * @hidden\n */\n\n\n function Switch(props) {\n var _this = _super.call(this, props) || this;\n\n _this._id = guid();\n\n _this.limit = function (offset, drag, wrapper) {\n var wrapperWidth = wrapper.offsetWidth;\n var margin = drag.offsetWidth;\n\n if (offset < 0) {\n return 0;\n } else if (offset > wrapperWidth - margin) {\n return wrapperWidth - margin;\n }\n\n return offset;\n };\n\n _this.toggle = function (value, event) {\n _this.setState({\n checked: value\n });\n\n _this.valueDuringOnChange = value;\n dispatchEvent(_this.props.onChange, event, _this, {\n value: value\n });\n _this.valueDuringOnChange = undefined;\n };\n\n _this.handleClick = function (event) {\n _this.toggle(!_this.value, event);\n };\n\n _this.handleKeyDown = function (event) {\n if (_this.props.disabled) {\n return;\n }\n\n var keyCode = event.keyCode;\n\n if (keyCode === Keys.space || keyCode === Keys.enter) {\n _this.toggle(!_this.value, event);\n }\n };\n\n _this.handleWrapperFocus = function (event) {\n if (_this.props.disabled) {\n return;\n }\n\n _this.setState({\n focused: true\n });\n\n var onFocus = _this.props.onFocus;\n\n if (onFocus) {\n onFocus.call(undefined, event);\n }\n };\n\n _this.handleWrapperBlur = function (event) {\n if (_this.props.disabled) {\n return;\n }\n\n _this.setState({\n focused: false\n });\n\n var onBlur = _this.props.onBlur;\n\n if (onBlur) {\n onBlur.call(undefined, event);\n }\n };\n\n _this.state = {\n checked: props.defaultChecked || Switch.defaultProps.defaultChecked,\n focused: false\n };\n return _this;\n }\n /**\n * @hidden\n */\n\n\n Switch.prototype.componentDidMount = function () {\n // Due to dynamic dir calculation\n this.forceUpdate();\n };\n\n Object.defineProperty(Switch.prototype, \"value\", {\n /**\n * Gets the value of the Switch.\n */\n get: function get() {\n return this.valueDuringOnChange !== undefined ? this.valueDuringOnChange : this.props.checked !== undefined ? this.props.checked : this.state.checked;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Switch.prototype, \"element\", {\n get: function get() {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n Switch.prototype.render = function () {\n var _this = this;\n\n var focused = this.state.focused;\n var _a = this.props,\n dir = _a.dir,\n disabled = _a.disabled,\n id = _a.id,\n offLabel = _a.offLabel,\n onLabel = _a.onLabel,\n tabIndex = _a.tabIndex;\n this.dir = dir || this._wrapper && getComputedStyle(this._wrapper).direction || undefined;\n var switchClassName = classNames({\n 'k-widget': true,\n 'k-switch': true,\n 'k-switch-on': this.value,\n 'k-switch-off': !this.value,\n 'k-state-focused': focused,\n 'k-state-disabled': disabled\n }, this.props.className);\n var ariaAttributes = {\n 'aria-checked': this.value,\n 'aria-disabled': disabled || undefined\n };\n return React.createElement(\"span\", __assign({\n ref: function ref(span) {\n _this._wrapper = span;\n },\n className: switchClassName,\n dir: this.dir,\n onKeyDown: this.handleKeyDown,\n onClick: this.handleClick,\n onBlur: this.handleWrapperBlur,\n onFocus: this.handleWrapperFocus\n }, ariaAttributes), React.createElement(\"span\", {\n className: SWITCH_CONTAINER,\n id: id || this._id,\n ref: function ref(span) {\n _this._element = span;\n },\n tabIndex: disabled ? undefined : tabIndex,\n accessKey: this.props.accessKey\n }, React.createElement(\"span\", {\n className: SWITCH_LABEL_ON\n }, onLabel), React.createElement(\"span\", {\n className: SWITCH_LABEL_OFF\n }, offLabel), React.createElement(\"span\", {\n className: SWITCH_HANDLE\n })));\n };\n /**\n * @hidden\n */\n\n\n Switch.propTypes = {\n accessKey: PropTypes.string,\n checked: PropTypes.bool,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n defaultChecked: PropTypes.bool,\n dir: PropTypes.string,\n id: PropTypes.string,\n offLabel: PropTypes.string,\n onBlur: PropTypes.any,\n onChange: PropTypes.any,\n onFocus: PropTypes.any,\n onLabel: PropTypes.string,\n tabIndex: PropTypes.number\n };\n /**\n * @hidden\n */\n\n Switch.defaultProps = {\n disabled: false,\n defaultChecked: false,\n offLabel: 'OFF',\n onBlur: noop,\n onFocus: noop,\n onLabel: 'ON',\n tabIndex: 0\n };\n return Switch;\n}(React.Component);\n\nexport { Switch };","export * from './colors/ColorGradient';\nexport * from './colors/ColorPalette';\nexport * from './colors/ColorPicker';\nexport * from './input/Input';\nexport * from './maskedtextbox/MaskedTextBox';\nexport * from './numerictextbox/NumericTextBox';\nexport * from './slider/Slider';\nexport * from './slider/SliderLabel';\nexport * from './switch/Switch';","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\n\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n\n if (isProduction) {\n throw new Error(prefix);\n }\n\n throw new Error(prefix + \": \" + (message || ''));\n}\n\nexport default invariant;","'use strict';\n\nvar bind = require('./helpers/bind');\n\nvar isBuffer = require('is-buffer');\n/*global toString:true*/\n// utils is a library of generic helper functions non-specific to axios\n\n\nvar toString = Object.prototype.toString;\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 */\n\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\n\n\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\n\n\nfunction isFormData(val) {\n return typeof FormData !== 'undefined' && val instanceof FormData;\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 */\n\n\nfunction isArrayBufferView(val) {\n var result;\n\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n result = ArrayBuffer.isView(val);\n } else {\n result = val && val.buffer && val.buffer instanceof ArrayBuffer;\n }\n\n return result;\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 */\n\n\nfunction isString(val) {\n return typeof val === 'string';\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 */\n\n\nfunction isNumber(val) {\n return typeof val === 'number';\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 */\n\n\nfunction isUndefined(val) {\n return typeof val === 'undefined';\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 */\n\n\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\n\n\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\n\n\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\n\n\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\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 */\n\n\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\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 */\n\n\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\n\n\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof 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 */\n\n\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\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 */\n\n\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n return false;\n }\n\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\n\n\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n } // Force an array if not already something iterable\n\n\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 * 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 */\n\n\nfunction merge()\n/* obj1, obj2, obj3, ... */\n{\n var result = {};\n\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\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\n return result;\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 */\n\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\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 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};","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n} // About 1.5x faster than the two-arg version of Array#splice()\n\n\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} // This implementation is based heavily on node's url.parse\n\n\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n var toParts = to && to.split('/') || [];\n var fromParts = from && from.split('/') || [];\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 var hasTrailingSlash;\n\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\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) {\n fromParts.unshift('..');\n }\n if (mustEndAbs && fromParts[0] !== '' && (!fromParts[0] || !isAbsolute(fromParts[0]))) fromParts.unshift('');\n var result = fromParts.join('/');\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n return result;\n}\n\nexport default resolvePathname;","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true; // Otherwise, if either of them == null they are not equal.\n\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n return valueEqual(item, b[index]);\n });\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n return Object.keys(Object.assign({}, a, b)).every(function (key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;","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}\n\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\n\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\n\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\n\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\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}\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}\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);\n\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\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\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\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\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 };","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var observable =\n/*@__PURE__*/\nfunction () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\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'use strict';\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 invariant(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\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n 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\n throw error;\n }\n};\n\nmodule.exports = invariant;","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function hostReportError(err) {\n setTimeout(function () {\n throw err;\n }, 0);\n}","/** PURE_IMPORTS_START _InnerSubscriber,_subscribeTo,_Observable PURE_IMPORTS_END */\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeTo } from './subscribeTo';\nimport { Observable } from '../Observable';\nexport function subscribeToResult(outerSubscriber, result, outerValue, outerIndex, innerSubscriber) {\n if (innerSubscriber === void 0) {\n innerSubscriber = new InnerSubscriber(outerSubscriber, outerValue, outerIndex);\n }\n\n if (innerSubscriber.closed) {\n return undefined;\n }\n\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n\n return subscribeTo(result)(innerSubscriber);\n}","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from './Subscriber';\n\nvar InnerSubscriber =\n/*@__PURE__*/\nfunction (_super) {\n tslib_1.__extends(InnerSubscriber, _super);\n\n function InnerSubscriber(parent, outerValue, outerIndex) {\n var _this = _super.call(this) || this;\n\n _this.parent = parent;\n _this.outerValue = outerValue;\n _this.outerIndex = outerIndex;\n _this.index = 0;\n return _this;\n }\n\n InnerSubscriber.prototype._next = function (value) {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n };\n\n InnerSubscriber.prototype._error = function (error) {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n };\n\n InnerSubscriber.prototype._complete = function () {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n };\n\n return InnerSubscriber;\n}(Subscriber);\n\nexport { InnerSubscriber };","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n\n return Symbol.iterator;\n}\nexport var iterator =\n/*@__PURE__*/\ngetSymbolIterator();\nexport var $$iterator = iterator;","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from './Subscriber';\n\nvar OuterSubscriber =\n/*@__PURE__*/\nfunction (_super) {\n tslib_1.__extends(OuterSubscriber, _super);\n\n function OuterSubscriber() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n OuterSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n\n OuterSubscriber.prototype.notifyError = function (error, innerSub) {\n this.destination.error(error);\n };\n\n OuterSubscriber.prototype.notifyComplete = function (innerSub) {\n this.destination.complete();\n };\n\n return OuterSubscriber;\n}(Subscriber);\n\nexport { OuterSubscriber };","\"use strict\";\n\nvar _CSSTransition = _interopRequireDefault(require(\"./CSSTransition\"));\n\nvar _ReplaceTransition = _interopRequireDefault(require(\"./ReplaceTransition\"));\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nmodule.exports = {\n Transition: _Transition.default,\n TransitionGroup: _TransitionGroup.default,\n ReplaceTransition: _ReplaceTransition.default,\n CSSTransition: _CSSTransition.default\n};","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var rxSubscriber =\n/*@__PURE__*/\nfunction () {\n return typeof Symbol === 'function' ?\n /*@__PURE__*/\n Symbol('rxSubscriber') : '@@rxSubscriber_' +\n /*@__PURE__*/\n Math.random();\n}();\nexport var $$rxSubscriber = rxSubscriber;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"manuallyDecrementPromiseCounter\", {\n enumerable: true,\n get: function get() {\n return _trackPromise.manuallyDecrementPromiseCounter;\n }\n});\nObject.defineProperty(exports, \"manuallyIncrementPromiseCounter\", {\n enumerable: true,\n get: function get() {\n return _trackPromise.manuallyIncrementPromiseCounter;\n }\n});\nObject.defineProperty(exports, \"manuallyResetPromiseCounter\", {\n enumerable: true,\n get: function get() {\n return _trackPromise.manuallyResetPromiseCounter;\n }\n});\nObject.defineProperty(exports, \"promiseTrackerHoc\", {\n enumerable: true,\n get: function get() {\n return _trackerHoc.promiseTrackerHoc;\n }\n});\nObject.defineProperty(exports, \"trackPromise\", {\n enumerable: true,\n get: function get() {\n return _trackPromise.trackPromise;\n }\n});\nObject.defineProperty(exports, \"usePromiseTracker\", {\n enumerable: true,\n get: function get() {\n return _trackerHook.usePromiseTracker;\n }\n});\n\nvar _trackPromise = require(\"./trackPromise\");\n\nvar _trackerHoc = require(\"./trackerHoc\");\n\nvar _trackerHook = require(\"./trackerHook\");","/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function scheduleArray(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n var i = 0;\n sub.add(scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n return;\n }\n\n subscriber.next(input[i++]);\n\n if (!subscriber.closed) {\n sub.add(this.schedule());\n }\n }));\n return sub;\n });\n}","/**\n * @hidden\n */\nexport var classNames = function classNames() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return args.filter(function (arg) {\n return arg !== true && !!arg;\n }).map(function (arg) {\n return Array.isArray(arg) ? classNames.apply(void 0, arg) : typeof arg === 'object' ? Object.keys(arg).map(function (key, idx) {\n return arg[idx] || arg[key] && key || null;\n }).filter(function (el) {\n return el !== null;\n }).join(' ') : arg;\n }).filter(function (arg) {\n return !!arg;\n }).join(' ');\n};","/* tslint:disable:no-bitwise */\n\n/**\n * @hidden\n */\nvar guid = function guid() {\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);\n }\n\n return id;\n};\n\nexport { guid };","/**\n * @hidden\n */\nvar 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};\nexport { Keys };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from './classNames';\n/**\n * @hidden\n */\n\nvar FloatingLabel =\n/** @class */\nfunction (_super) {\n __extends(FloatingLabel, _super);\n\n function FloatingLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.state = {\n focused: false\n };\n\n _this.handleFocus = function (_) {\n _this.setState({\n focused: true\n });\n };\n\n _this.handleBlur = function (_) {\n _this.setState({\n focused: false\n });\n };\n\n return _this;\n }\n\n FloatingLabel.prototype.render = function () {\n var _a = this.props,\n label = _a.label,\n id = _a.id,\n className = _a.className,\n value = _a.value,\n placeholder = _a.placeholder,\n valid = _a.valid,\n style = _a.style;\n var childClassNames = classNames({\n 'k-textbox-container': true,\n 'k-state-focused': this.state.focused,\n 'k-state-empty': !(value || placeholder),\n 'k-state-invalid': !valid && valid !== undefined,\n 'k-rtl': this.props.dir === 'rtl'\n }, className);\n return React.createElement(\"span\", {\n className: childClassNames,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n style: style,\n dir: this.props.dir\n }, this.props.children, label ? id ? React.createElement(\"label\", {\n htmlFor: id,\n className: \"k-label\"\n }, label) : React.createElement(\"span\", {\n className: \"k-label\"\n }, label) : null);\n };\n\n FloatingLabel.propTypes = {\n label: PropTypes.string,\n id: PropTypes.string,\n value: PropTypes.string,\n placeholder: PropTypes.string,\n valid: PropTypes.bool\n };\n return FloatingLabel;\n}(React.Component);\n\nexport default FloatingLabel;","/**\n * @hidden\n */\nvar isServerRendering = function isServerRendering() {\n return typeof window === 'undefined';\n};\n\nexport { isServerRendering };","var proxy = function proxy(a, b) {\n return function (e) {\n return b(a(e));\n };\n};\n\nvar bind = function bind(el, event, callback) {\n return el.addEventListener && el.addEventListener(event, callback);\n};\n\nvar unbind = function unbind(el, event, callback) {\n return el && el.removeEventListener && el.removeEventListener(event, callback);\n};\n\nvar noop = function noop() {\n /* empty */\n};\n\nvar preventDefault = function preventDefault(e) {\n return e.preventDefault();\n};\n\nvar touchRegExp = /touch/; // 300ms is the usual mouse interval;\n// // However, an underpowered mobile device under a heavy load may queue mouse events for a longer period.\n\nvar IGNORE_MOUSE_TIMEOUT = 2000;\n\nfunction normalizeEvent(e) {\n if (e.type.match(touchRegExp)) {\n return {\n pageX: e.changedTouches[0].pageX,\n pageY: e.changedTouches[0].pageY,\n clientX: e.changedTouches[0].clientX,\n clientY: e.changedTouches[0].clientY,\n type: e.type,\n originalEvent: e,\n isTouch: true\n };\n }\n\n return {\n pageX: e.pageX,\n pageY: e.pageY,\n clientX: e.clientX,\n clientY: e.clientY,\n offsetX: e.offsetX,\n offsetY: e.offsetY,\n type: e.type,\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey,\n altKey: e.altKey,\n originalEvent: e\n };\n}\n\nexport var Draggable = function Draggable(ref) {\n var this$1 = this;\n var press = ref.press;\n if (press === void 0) press = noop;\n var drag = ref.drag;\n if (drag === void 0) drag = noop;\n var release = ref.release;\n if (release === void 0) release = noop;\n var mouseOnly = ref.mouseOnly;\n if (mouseOnly === void 0) mouseOnly = false;\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._ignoreMouse = false;\n this._mouseOnly = mouseOnly;\n this._touchAction;\n\n this._touchstart = function (e) {\n if (e.touches.length === 1) {\n this$1._pressHandler(e);\n }\n };\n\n this._touchmove = function (e) {\n if (e.touches.length === 1) {\n this$1._dragHandler(e);\n }\n };\n\n this._touchend = function (e) {\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 if (e.touches.length === 0 && e.changedTouches.length === 1) {\n this$1._releaseHandler(e);\n\n this$1._ignoreMouse = true;\n setTimeout(this$1._restoreMouse, IGNORE_MOUSE_TIMEOUT);\n }\n };\n\n this._restoreMouse = function () {\n this$1._ignoreMouse = false;\n };\n\n this._mousedown = function (e) {\n var which = e.which;\n\n if (which && which > 1 || this$1._ignoreMouse) {\n return;\n }\n\n bind(document, \"mousemove\", this$1._mousemove);\n bind(document, \"mouseup\", this$1._mouseup);\n\n this$1._pressHandler(e);\n };\n\n this._mousemove = function (e) {\n this$1._dragHandler(e);\n };\n\n this._mouseup = function (e) {\n unbind(document, \"mousemove\", this$1._mousemove);\n unbind(document, \"mouseup\", this$1._mouseup);\n\n this$1._releaseHandler(e);\n };\n\n this._pointerdown = function (e) {\n if (e.isPrimary && e.button === 0) {\n bind(document, \"pointermove\", this$1._pointermove);\n bind(document, \"pointerup\", this$1._pointerup);\n bind(document, \"pointercancel\", this$1._pointerup);\n bind(document, \"contextmenu\", preventDefault);\n this$1._touchAction = e.target.style.touchAction;\n e.target.style.touchAction = \"none\";\n\n this$1._pressHandler(e);\n }\n };\n\n this._pointermove = function (e) {\n if (e.isPrimary) {\n this$1._dragHandler(e);\n }\n };\n\n this._pointerup = function (e) {\n if (e.isPrimary) {\n unbind(document, \"pointermove\", this$1._pointermove);\n unbind(document, \"pointerup\", this$1._pointerup);\n unbind(document, \"pointercancel\", this$1._pointerup);\n unbind(document, \"contextmenu\", preventDefault);\n e.target.style.touchAction = this$1._touchAction;\n\n this$1._releaseHandler(e);\n }\n };\n};\n\nDraggable.supportPointerEvent = function supportPointerEvent() {\n return typeof window !== 'undefined' && window.PointerEvent;\n};\n\nDraggable.prototype.bindTo = function bindTo(element) {\n if (element === this._element) {\n return;\n }\n\n if (this._element) {\n this._unbindFromCurrent();\n }\n\n this._element = element;\n\n this._bindToCurrent();\n};\n\nDraggable.prototype._bindToCurrent = function _bindToCurrent() {\n var element = this._element;\n\n if (this._usePointers()) {\n bind(element, \"pointerdown\", this._pointerdown);\n return;\n }\n\n bind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n bind(element, \"touchstart\", this._touchstart);\n bind(element, \"touchmove\", this._touchmove);\n bind(element, \"touchend\", this._touchend);\n }\n};\n\nDraggable.prototype._unbindFromCurrent = function _unbindFromCurrent() {\n var element = this._element;\n\n if (this._usePointers()) {\n unbind(element, \"pointerdown\", this._pointerdown);\n unbind(document, \"pointermove\", this._pointermove);\n unbind(document, \"pointerup\", this._pointerup);\n unbind(document, \"contextmenu\", preventDefault);\n unbind(document, \"pointercancel\", this._pointerup);\n return;\n }\n\n unbind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n unbind(element, \"touchstart\", this._touchstart);\n unbind(element, \"touchmove\", this._touchmove);\n unbind(element, \"touchend\", this._touchend);\n }\n};\n\nDraggable.prototype._usePointers = function _usePointers() {\n return !this._mouseOnly && Draggable.supportPointerEvent();\n};\n\nDraggable.prototype.destroy = function destroy() {\n this._unbindFromCurrent();\n\n this._element = null;\n}; // Re-export as \"default\" field to address a bug\n// where the ES Module is imported by CommonJS code.\n//\n// See https://github.com/telerik/kendo-angular/issues/1314\n\n\nDraggable.default = Draggable; // Rollup won't output exports['default'] otherwise\n\nexport default Draggable;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport KendoDraggable from '@telerik/kendo-draggable';\n/**\n * @hidden\n */\n\nvar Draggable =\n/** @class */\nfunction (_super) {\n __extends(Draggable, _super);\n\n function Draggable() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n\n\n _this.element = null;\n _this.draggable = new KendoDraggable({\n press: function press(event) {\n if (_this.element && _this.props.onPress) {\n _this.props.onPress.call(undefined, {\n target: _this,\n event: event,\n element: _this.element\n });\n }\n },\n drag: function drag(event) {\n if (_this.element && _this.props.onDrag) {\n _this.props.onDrag.call(undefined, {\n target: _this,\n event: event,\n element: _this.element\n });\n }\n },\n release: function release(event) {\n if (_this.element && _this.props.onRelease) {\n _this.props.onRelease.call(undefined, {\n target: _this,\n event: event\n });\n }\n }\n });\n\n _this.assingRef = function (element) {\n _this.element = element;\n };\n\n return _this;\n }\n\n Draggable.prototype.componentDidMount = function () {\n if (this.element) {\n this.draggable.bindTo(this.element);\n }\n };\n\n Draggable.prototype.componentWillUnmount = function () {\n this.draggable.destroy();\n };\n\n Draggable.prototype.render = function () {\n return React.cloneElement(React.Children.only(this.props.children), {\n ref: this.assingRef\n });\n };\n\n Draggable.propTypes = {\n children: PropTypes.element.isRequired\n };\n return Draggable;\n}(React.Component);\n\nexport { Draggable };","import { FIELD_REGEX } from './constants';\nvar getterCache = {};\n\ngetterCache.undefined = function () {\n return undefined;\n};\n/**\n * @hidden\n */\n\n\nexport 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, fieldName) {\n fields.push(index !== undefined ? index : indexAccessor || fieldName);\n });\n\n getterCache[field] = function (obj) {\n var result = obj;\n\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}","import { FIELD_REGEX } from './constants';\nvar setterCache = {};\n\nsetterCache.undefined = function (obj) {\n return obj;\n};\n/**\n * @hidden\n */\n\n\nexport function setter(field) {\n if (setterCache[field]) {\n return setterCache[field];\n }\n\n var fields = [];\n field.replace(FIELD_REGEX, function (_match, index, indexAccessor, fieldName) {\n fields.push(index !== undefined ? index : indexAccessor || fieldName);\n });\n\n setterCache[field] = function (obj, value) {\n var root = obj;\n var depth = fields.length - 1;\n\n for (var idx = 0; idx < depth && root; idx++) {\n root = root[fields[idx]] = root[fields[idx]] || {};\n }\n\n root[fields[depth]] = value;\n };\n\n return setterCache[field];\n}","var _a;\n/**\n * @hidden\n */\n\n\nexport var nodata = 'dropdowns.nodata';\n/**\n * @hidden\n */\n\nexport var clear = 'dropdowns.clear';\n/**\n * @hidden\n */\n\nexport var messages = (_a = {}, _a[clear] = 'clear', _a[nodata] = 'NO DATA FOUND.', _a);","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport { Popup } from '@progress/kendo-react-popup';\n/**\n * @hidden\n */\n\nvar ListContainer =\n/** @class */\nfunction (_super) {\n __extends(ListContainer, _super);\n\n function ListContainer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ListContainer.prototype.render = function () {\n var _a = this.props,\n children = _a.children,\n onMouseDown = _a.onMouseDown,\n onBlur = _a.onBlur,\n width = _a.width,\n dir = _a.dir,\n popupSettings = _a.popupSettings;\n return React.createElement(Popup, __assign({\n style: {\n width: width,\n direction: dir\n }\n }, popupSettings), React.createElement(\"div\", {\n onMouseDown: onMouseDown,\n onBlur: onBlur\n }, children));\n };\n\n return ListContainer;\n}(React.Component);\n\nexport default ListContainer;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\n/**\n * @hidden\n */\n\nvar ListFilter =\n/** @class */\nfunction (_super) {\n __extends(ListFilter, _super);\n\n function ListFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ListFilter.prototype.render = function () {\n var _this = this;\n\n return React.createElement(\"span\", {\n className: \"k-list-filter\"\n }, React.createElement(\"input\", {\n ref: function ref(input) {\n return _this.input = input;\n },\n value: this.props.value || '',\n className: \"k-textbox\",\n onChange: this.props.onChange,\n onKeyDown: this.props.onKeyDown\n }), React.createElement(\"span\", {\n className: \"k-icon k-i-search\"\n }));\n };\n\n return ListFilter;\n}(React.Component);\n\nexport default ListFilter;","/**\n * @hidden\n */\nvar isPresent = function isPresent(value) {\n return value !== null && value !== undefined;\n};\n/**\n * @hidden\n */\n\n\nvar sameCharsOnly = function sameCharsOnly(word, character) {\n for (var idx = 0; idx < word.length; idx++) {\n if (word.charAt(idx) !== character) {\n return false;\n }\n }\n\n return true;\n};\n/**\n * @hidden\n */\n\n\nvar shuffleData = function shuffleData(data, splitIndex, defaultItem) {\n var result = data;\n\n if (defaultItem) {\n result = [defaultItem].concat(result);\n }\n\n return result.slice(splitIndex).concat(result.slice(0, splitIndex));\n};\n/**\n * @hidden\n */\n\n\nvar matchText = function matchText(text, word, ignoreCase) {\n if (!isPresent(text)) {\n return false;\n }\n\n var temp = String(text);\n\n if (ignoreCase) {\n temp = temp.toLowerCase();\n }\n\n return temp.indexOf(word) === 0;\n};\n/**\n * @hidden\n */\n\n\nvar scrollToItem = function scrollToItem(scrollElem, itemHeight, itemIndex, translate, virtualScroll) {\n var viewportHeight = scrollElem.offsetHeight;\n var itemOffsetTop = itemHeight * itemIndex + (virtualScroll ? translate - scrollElem.scrollTop : 0);\n\n if (virtualScroll) {\n var diff = 0;\n\n if (itemOffsetTop + itemHeight > viewportHeight) {\n diff = itemOffsetTop + itemHeight - viewportHeight;\n } else if (itemOffsetTop < 0) {\n diff = itemOffsetTop;\n }\n\n if (diff !== 0) {\n scrollElem.scrollTop += diff;\n } else if (scrollElem.scrollTop === 0 && translate !== 0) {\n scrollElem.scrollTop = translate;\n }\n } else {\n if (itemOffsetTop + itemHeight > viewportHeight + scrollElem.scrollTop) {\n scrollElem.scrollTop = itemOffsetTop + itemHeight - viewportHeight;\n } else if (itemOffsetTop < scrollElem.scrollTop) {\n scrollElem.scrollTop -= scrollElem.scrollTop - itemOffsetTop;\n }\n }\n};\n/**\n * @hidden\n */\n\n\nvar itemIndexStartsWith = function itemIndexStartsWith(items, text, field) {\n var result = -1;\n\n if (text) {\n text = text.toLowerCase();\n\n for (var i = 0; i < items.length; i++) {\n var itemText = (getItemValue(items[i], field) || '') + '';\n\n if (itemText && itemText.toLowerCase().startsWith(text)) {\n result = i;\n break;\n }\n }\n }\n\n return result;\n};\n/**\n * @hidden\n */\n\n\nvar getItemIndexByText = function getItemIndexByText(data, text, textField, matchCase) {\n if (matchCase === void 0) {\n matchCase = false;\n }\n\n var casing = function casing(value) {\n return matchCase ? value : value.toLowerCase();\n };\n\n return data.findIndex(function (item) {\n return textField ? casing(getItemValue(item, textField)) === casing(text) : casing(text) === casing(item.toString());\n });\n};\n/**\n * @hidden\n */\n\n\nvar getItemValue = function getItemValue(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\n return item;\n};\n/**\n * @hidden\n */\n\n\nvar matchDataCollections = function matchDataCollections(data1, data2, key) {\n if (data1 === void 0) {\n data1 = [];\n }\n\n if (data2 === void 0) {\n data2 = [];\n }\n\n if (data1 === data2) {\n return true;\n }\n\n if (data1.length !== data2.length) {\n return false;\n }\n\n for (var i = 0; i < data1.length; i++) {\n if (!areSame(data1[i], data2[i], key)) {\n return false;\n }\n }\n\n return true;\n};\n/**\n * @hidden\n */\n\n\nvar removeDataItems = function removeDataItems(items, toRemove, key) {\n toRemove.forEach(function (item) {\n var itemIndex = items.findIndex(function (i) {\n return areSame(i, item, key);\n });\n\n if (itemIndex !== -1) {\n items.splice(itemIndex, 1);\n }\n });\n};\n/**\n * @hidden\n */\n\n\nvar areSame = function areSame(item1, item2, key) {\n return item1 === item2 || isPresent(item1) === isPresent(item2) && getItemValue(item1, key) === getItemValue(item2, key);\n};\n/**\n * @hidden\n */\n\n\nvar getFocusedItem = function getFocusedItem(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\n return data[0];\n};\n/**\n * @hidden\n */\n\n\nvar suggestValue = function suggestValue(value, data, textField) {\n if (data === void 0) {\n data = [];\n }\n\n var suggested = '';\n\n if (value) {\n var suggestedItem = data[itemIndexStartsWith(data, value, textField)];\n\n if (suggestedItem) {\n var suggestedText = getItemValue(suggestedItem, textField);\n\n if (value.toLowerCase() !== suggestedText.toLowerCase()) {\n suggested = suggestedText.substring(value.length);\n }\n }\n }\n\n return suggested;\n};\n/**\n * @hidden\n */\n\n\nvar preventDefaultNonInputs = function preventDefaultNonInputs(event) {\n if (event.target.nodeName !== 'INPUT') {\n event.preventDefault();\n }\n};\n\nexport { isPresent, sameCharsOnly, shuffleData, matchText, scrollToItem, itemIndexStartsWith, getItemIndexByText, getItemValue, matchDataCollections, removeDataItems, areSame, getFocusedItem, preventDefaultNonInputs, suggestValue };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { getItemValue } from './utils';\n\nvar preventDefault = function preventDefault(e) {\n return e.preventDefault();\n};\n/**\n * @hidden\n */\n\n\nvar ListDefaultItem =\n/** @class */\nfunction (_super) {\n __extends(ListDefaultItem, _super);\n\n function ListDefaultItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ListDefaultItem.prototype.render = function () {\n var _a = this.props,\n selected = _a.selected,\n defaultItem = _a.defaultItem,\n textField = _a.textField;\n return React.createElement(\"div\", {\n onClick: this.props.onClick,\n onMouseDown: preventDefault,\n className: classNames('k-list-optionlabel', {\n 'k-state-selected': selected\n })\n }, getItemValue(defaultItem, textField) || '');\n };\n\n return ListDefaultItem;\n}(React.Component);\n\nexport default ListDefaultItem;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { getItemValue } from './utils'; // tslint:enable:max-line-length\n\n/**\n * @hidden\n */\n\nvar ListItem =\n/** @class */\nfunction (_super) {\n __extends(ListItem, _super);\n\n function ListItem() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.handleClick = function (e) {\n return _this.props.onClick(_this.props.index, e);\n };\n\n return _this;\n }\n\n ListItem.prototype.render = function () {\n var _a = this.props,\n selected = _a.selected,\n renderer = _a.renderer;\n var item = React.createElement(\"li\", {\n id: this.props.id,\n role: \"option\",\n \"aria-selected\": selected,\n className: classNames('k-item', {\n 'k-state-selected': selected,\n 'k-state-focused': this.props.focused\n }),\n onClick: this.handleClick\n }, getItemValue(this.props.dataItem, this.props.textField).toString());\n return renderer !== undefined ? renderer.call(undefined, item, this.props) : item;\n };\n\n return ListItem;\n}(React.Component);\n\nexport default ListItem;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport ListItem from './ListItem';\nimport { areSame } from './utils';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, nodata } from '../messages';\n/**\n * @hidden\n */\n\nvar List =\n/** @class */\nfunction (_super) {\n __extends(List, _super);\n\n function List() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n List.prototype.renderItems = function () {\n var _this = this;\n\n var _a = this.props,\n textField = _a.textField,\n valueField = _a.valueField,\n optionsGuid = _a.optionsGuid,\n _b = _a.skip,\n skip = _b === void 0 ? 0 : _b,\n focusedIndex = _a.focusedIndex,\n _c = _a.highlightSelected,\n highlightSelected = _c === void 0 ? true : _c,\n value = _a.value,\n itemRender = _a.itemRender;\n var isArray = Array.isArray(value);\n return this.props.data.map(function (item, index) {\n var realIndex = skip + index;\n var selected = highlightSelected && (!isArray && areSame(item, value, valueField) || isArray && value.findIndex(function (i) {\n return areSame(i, item, valueField);\n }) !== -1);\n return React.createElement(ListItem, {\n id: \"option-\" + optionsGuid + \"-\" + realIndex,\n dataItem: item,\n selected: selected,\n focused: focusedIndex === index,\n index: realIndex,\n key: realIndex,\n onClick: _this.props.onClick,\n textField: textField,\n renderer: itemRender\n });\n });\n };\n\n List.prototype.renderNoValueElement = function (localizationService) {\n var noDataRender = this.props.noDataRender;\n var noDataElement = React.createElement(\"div\", {\n className: 'k-nodata'\n }, React.createElement(\"div\", null, localizationService.toLanguageString(nodata, messages[nodata])));\n return noDataRender ? noDataRender.call(undefined, noDataElement) : noDataElement;\n };\n\n List.prototype.render = function () {\n var localizationService = provideLocalizationService(this);\n var _a = this.props,\n id = _a.id,\n show = _a.show,\n wrapperCssClass = _a.wrapperCssClass,\n wrapperStyle = _a.wrapperStyle,\n listStyle = _a.listStyle,\n listRef = _a.listRef;\n var items = this.renderItems();\n return items.length ? React.createElement(\"div\", {\n className: wrapperCssClass,\n style: wrapperStyle,\n ref: function ref(element) {\n return element && element.setAttribute('unselectable', 'on');\n }\n }, React.createElement(\"ul\", {\n id: id,\n role: \"listbox\",\n \"aria-hidden\": !show ? true : undefined,\n className: 'k-list k-reset',\n ref: listRef,\n style: listStyle\n }, items)) : this.renderNoValueElement(localizationService);\n };\n\n return List;\n}(React.Component);\n\nexport default List;\nregisterForLocalization(List);","var maxHeightIE = 1533915;\n/**\n * @hidden\n */\n\nvar VirtualScroll =\n/** @class */\nfunction () {\n function VirtualScroll() {\n var _this = this;\n\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\n this.scrollerRef = function (element) {\n var vs = _this;\n vs.container = element;\n\n if (element) {\n element.setAttribute('unselectable', 'on');\n setTimeout(vs.calcScrollElementHeight.bind(vs), 0);\n }\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\n if (_this.scrollElement) {\n heightChanged = _this.scrollElement.style.height !== newHeight + 'px';\n\n if (heightChanged) {\n _this.scrollElement.style.height = newHeight + 'px';\n }\n }\n\n _this.scrollSyncing = false;\n return heightChanged;\n };\n\n this.scrollHandler = this.scrollHandler.bind(this);\n }\n\n Object.defineProperty(VirtualScroll.prototype, \"translate\", {\n get: function get() {\n return this.listTranslate;\n },\n enumerable: true,\n configurable: true\n });\n\n VirtualScroll.prototype.changePage = function (skip, e) {\n var newSkip = Math.min(Math.max(0, skip), this.total - this.pageSize);\n\n if (newSkip !== this.skip) {\n this.PageChange({\n skip: newSkip,\n take: this.pageSize\n }, e);\n }\n };\n\n VirtualScroll.prototype.translateTo = function (dY) {\n this.listTranslate = dY;\n\n if (this.list) {\n this.list.style.transform = 'translateY(' + dY + 'px)';\n }\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\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\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\n if (additionalOnTop > height) {\n return;\n }\n\n for (items = 0; items < this.skip; items++) {\n if (targetTranslate + height + additionalOnTop <= scrollTop) {\n break;\n }\n\n targetTranslate -= height;\n }\n\n targetTranslate = this.validateTranslate(targetTranslate);\n\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\n if (targetTranslate !== this.listTranslate) {\n this.translateTo(targetTranslate);\n this.changePage(this.skip - items, e);\n }\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\n for (items = 0; items < itemsLenght; items++) {\n if (targetTranslate + height >= scrollTop) {\n break;\n }\n\n targetTranslate += height;\n }\n\n targetTranslate = this.validateTranslate(targetTranslate);\n\n if (items >= itemsLenght && this.skip + items >= this.total) {\n this.translateTo(targetTranslate);\n this.changePage(this.total - 1, e);\n } else if (targetTranslate !== this.listTranslate) {\n this.translateTo(targetTranslate);\n this.changePage(this.skip + items, e);\n }\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\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\n if (!this.enabled || !this.list || !this.container || this.scrollSyncing) {\n return;\n }\n\n if (scrollTop - prev <= 0 && scrollTop > this.listTranslate - this.list.scrollHeight / 10) {\n this.localScrollUp(e);\n } else if (scrollTop - prev > 0 && scrollTop < this.listTranslate + this.list.scrollHeight * 2 / 3) {\n this.localScrollDown(e);\n } else {\n this.scrollNonStrict(e);\n }\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\n return VirtualScroll;\n}();\n\nexport default VirtualScroll;","import { isPresent } from './utils';\nimport { Keys } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\n\nvar Navigation =\n/** @class */\nfunction () {\n function Navigation() {}\n\n Navigation.prototype.navigate = function (args) {\n var keyCode = args.keyCode;\n\n if (keyCode === Keys.up || keyCode === Keys.left) {\n return this.next({\n current: args.current,\n min: args.min,\n max: args.max,\n step: -1\n });\n } else if (keyCode === Keys.down || keyCode === Keys.right) {\n return this.next({\n current: args.current,\n min: args.min,\n max: args.max,\n step: 1\n });\n } else if (keyCode === Keys.home) {\n return 0;\n } else if (keyCode === Keys.end) {\n return args.max;\n }\n };\n\n Navigation.prototype.next = function (args) {\n if (!isPresent(args.current)) {\n return args.min;\n } else {\n return Math.min(args.max, Math.max(args.current + args.step, args.min));\n }\n };\n\n return Navigation;\n}();\n\nexport { Navigation };","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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\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 */\n\nvar DropDownBase =\n/** @class */\nfunction () {\n function DropDownBase(component) {\n var _this = this;\n\n this.vs = new VirtualScroll();\n this.navigation = new Navigation();\n\n this.handleItemClick = function (index, event) {\n var state = _this.initState();\n\n state.syntheticEvent = event;\n\n _this.component.handleItemSelect(index, state);\n\n _this.togglePopup(state);\n\n _this.applyState(state);\n };\n\n this.handleFocus = function (event) {\n if (!_this.component.state.focused) {\n var state = _this.initState();\n\n state.data.focused = true;\n state.events.push({\n type: 'onFocus'\n });\n state.syntheticEvent = event;\n\n _this.applyState(state);\n }\n };\n\n this.filterChanged = function (text, state) {\n var _a = _this.component.props,\n textField = _a.textField,\n filterable = _a.filterable;\n\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\n this.togglePopup = function (state) {\n var props = _this.component.props;\n var opened = props.opened !== undefined ? props.opened : _this.component.state.opened;\n\n if (props.opened === undefined) {\n state.data.opened = !opened;\n }\n\n if (opened) {\n state.events.push({\n type: 'onClose'\n });\n } else {\n state.events.push({\n type: 'onOpen'\n });\n\n _this.calculatePopupWidth();\n }\n };\n\n this.pageChange = function (page, syntheticEvent) {\n var state = _this.initState();\n\n state.syntheticEvent = syntheticEvent;\n\n _this.triggerOnPageChange(state, page.skip, page.take);\n\n _this.applyState(state);\n };\n\n this.scrollToVirtualItem = function (virtual, selectedItemIndex) {\n var vs = _this.vs;\n vs.enabled = false;\n\n if (virtual.skip === 0) {\n vs.reset();\n } else if (virtual.skip + virtual.pageSize === virtual.total) {\n vs.scrollToEnd();\n } else {\n var scrollTop = vs.translate;\n\n if (scrollTop === 0) {\n vs.calcScrollElementHeight();\n scrollTop = vs.itemHeight * virtual.skip;\n vs.translateTo(scrollTop - vs.itemHeight);\n }\n\n if (vs.container) {\n vs.container.scrollTop = scrollTop;\n }\n\n _this.scrollToItem(selectedItemIndex, true);\n }\n\n setTimeout(function () {\n return vs.enabled = true;\n }, 10);\n }; // Common rendering\n\n\n this.renderScrollWrapper = function (children) {\n var popupSettings = _this.getPopupSettings();\n\n var vs = _this.vs;\n return vs.enabled ? React.createElement(\"div\", {\n onScroll: vs.scrollHandler,\n ref: vs.scrollerRef,\n style: {\n height: popupSettings.height,\n overflowY: 'scroll'\n }\n }, children) : children;\n };\n\n this.renderScrollElement = function () {\n var vs = _this.vs;\n return vs.enabled && React.createElement(\"div\", {\n ref: function ref(element) {\n return vs.scrollElement = element;\n },\n key: 'scrollElementKey'\n });\n };\n\n this.listBoxId = guid();\n this.guid = guid();\n this.component = component;\n this.vs.PageChange = this.pageChange;\n }\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\n if (popupWidth === undefined) {\n this.calculatePopupWidth();\n }\n\n if (props.dir === undefined && style.direction === undefined) {\n this.calculateDir();\n shouldUpdate = true;\n }\n\n if (shouldUpdate) {\n this.component.forceUpdate();\n }\n };\n\n DropDownBase.prototype.calculateDir = function () {\n if (this.component.element) {\n this.dirCalculated = window.getComputedStyle(this.component.element).direction || undefined;\n }\n };\n\n DropDownBase.prototype.calculatePopupWidth = function () {\n if (this.wrapper) {\n this.popupWidth = this.wrapper.offsetWidth + 'px';\n }\n };\n\n DropDownBase.prototype.scrollToItem = function (itemIndex, vsEnabled) {\n var list = this.list || this.vs.list;\n var item = list ? list.children[0] : undefined;\n\n if (item && 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, item.offsetHeight, itemIndex, vs.translate, virtualScroll);\n }\n };\n\n DropDownBase.prototype.initState = function () {\n var state = {\n data: {},\n events: [],\n syntheticEvent: undefined\n };\n return state;\n };\n\n DropDownBase.prototype.applyState = function (state) {\n var _this = this;\n\n var eventArgs = {\n syntheticEvent: state.syntheticEvent,\n nativeEvent: state.syntheticEvent ? state.syntheticEvent.nativeEvent : undefined,\n target: this.component\n };\n\n if (Object.keys(state.data).length > 0) {\n this.component.setState(state.data);\n }\n\n state.events.forEach(function (eventData) {\n var type = eventData.type;\n delete eventData.type;\n var handler = _this.component.props[type];\n\n if (handler) {\n handler.call(undefined, __assign({}, eventArgs, eventData));\n }\n });\n };\n\n DropDownBase.prototype.triggerOnPageChange = function (state, skip, take) {\n var virtual = this.component.props.virtual;\n\n if (virtual) {\n var newSkip = Math.min(Math.max(0, skip), Math.max(0, virtual.total - take));\n\n if (newSkip !== virtual.skip) {\n state.events.push({\n type: 'onPageChange',\n page: {\n skip: newSkip,\n take: take\n }\n });\n }\n }\n };\n\n DropDownBase.prototype.triggerPageChangeCornerItems = function (item, state) {\n var props = this.component.props;\n var _a = props.data,\n data = _a === void 0 ? [] : _a,\n dataItemKey = props.dataItemKey,\n virtual = props.virtual;\n var opened = props.opened !== undefined ? props.opened : this.component.state.opened;\n\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 } else if (!opened && virtual.skip + virtual.pageSize < virtual.total && areSame(item, data[data.length - 1], dataItemKey)) {\n this.triggerOnPageChange(state, virtual.skip + 1, virtual.pageSize);\n }\n }\n };\n\n DropDownBase.prototype.getPopupSettings = function () {\n return Object.assign({}, DropDownBase.defaultProps.popupSettings, this.component.props.popupSettings);\n };\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 width: PropTypes.string,\n height: PropTypes.string\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 header: PropTypes.node,\n footer: PropTypes.node\n };\n DropDownBase.propTypes = __assign({}, DropDownBase.basicPropTypes, {\n value: PropTypes.any,\n defaultValue: PropTypes.any,\n filterable: PropTypes.bool,\n filter: PropTypes.string,\n virtual: PropTypes.shape({\n pageSize: PropTypes.number.isRequired,\n skip: PropTypes.number.isRequired,\n total: PropTypes.number.isRequired\n }),\n onFilterChange: PropTypes.func,\n onPageChange: PropTypes.func\n });\n DropDownBase.defaultProps = {\n popupSettings: {\n animate: true,\n height: '200px'\n },\n required: false,\n validityStyles: true\n };\n return DropDownBase;\n}();\n\nexport default DropDownBase;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, Keys, FloatingLabel } from '@progress/kendo-react-common';\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';\nvar VALIDATION_MESSAGE = 'Please select a value from the list!';\n/**\n * Represents the [KendoReact DropDownList component]({% slug overview_dropdownlist %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * dropdownlist = null;\n * render() {\n * return (\n *
    \n * this.dropdownlist = component}\n * />\n * \n *
    \n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\n\nvar DropDownList =\n/** @class */\nfunction (_super) {\n __extends(DropDownList, _super);\n\n function DropDownList() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n\n\n _this.state = {};\n _this.base = new DropDownBase(_this);\n _this.searchState = {\n word: '',\n last: ''\n };\n _this._skipFocusEvent = false;\n _this._filterInput = null;\n _this._navigated = false;\n /**\n * @hidden\n */\n\n _this.handleItemSelect = function (index, state) {\n var _a = _this.props,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n virtual = _a.virtual,\n dataItemKey = _a.dataItemKey,\n defaultItem = _a.defaultItem;\n var skip = virtual ? virtual.skip : 0;\n var item = index === -1 && defaultItem !== undefined ? defaultItem : data[index - skip];\n var newSelected = !areSame(item, _this.value, dataItemKey);\n\n _this.triggerOnChange(item, state);\n\n if (newSelected) {\n _this.base.triggerPageChangeCornerItems(item, state);\n }\n };\n\n _this.renderDropDownWrapper = function () {\n var _a = _this.props,\n dataItemKey = _a.dataItemKey,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n textField = _a.textField,\n disabled = _a.disabled,\n tabIndex = _a.tabIndex,\n loading = _a.loading,\n iconClassName = _a.iconClassName,\n _c = _a.virtual,\n virtual = _c === void 0 ? {\n skip: 0\n } : _c,\n 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) {\n return areSame(i, value, dataItemKey);\n });\n var text = getItemValue(value, textField);\n var valueDefaultRendering = React.createElement(\"span\", {\n className: \"k-input\"\n }, text);\n var valueElement = valueRender !== undefined ? valueRender.call(undefined, valueDefaultRendering, value) : valueDefaultRendering;\n return React.createElement(\"span\", {\n ref: function ref(el) {\n return _this.base.wrapper = el;\n },\n role: 'listbox',\n tabIndex: disabled ? undefined : tabIndex,\n accessKey: _this.props.accessKey,\n className: classNames('k-dropdown-wrap', {\n 'k-state-default': !disabled,\n 'k-state-focused': focused,\n 'k-state-disabled': disabled\n }),\n style: _this.props.style,\n onKeyDown: _this.handleKeyDown,\n onKeyPress: _this.handleKeyPress,\n onClick: disabled ? undefined : _this.handleWrapperClick,\n \"aria-disabled\": disabled || undefined,\n \"aria-haspopup\": true,\n \"aria-expanded\": opened || false,\n \"aria-owns\": _this.base.listBoxId,\n \"aria-activedescendant\": 'option-' + _this.base.guid + '-' + (selectedIndex + virtual.skip),\n \"aria-label\": _this.props.label\n }, valueElement, React.createElement(\"span\", {\n className: \"k-select\"\n }, React.createElement(\"span\", {\n 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\n _this.dummySelect = function (value) {\n /* Dummy component to support forms */\n return React.createElement(\"select\", {\n name: _this.props.name,\n ref: function ref(el) {\n _this._select = el;\n },\n tabIndex: -1,\n \"aria-hidden\": true,\n title: _this.props.label,\n style: {\n opacity: 0,\n width: 1,\n border: 0,\n zIndex: -1,\n position: 'absolute',\n left: '50%'\n }\n }, React.createElement(\"option\", {\n value: _this.props.valueMap ? _this.props.valueMap.call(undefined, value) : value\n }));\n };\n\n _this.renderListContainer = function () {\n var _a = _this.props,\n header = _a.header,\n footer = _a.footer,\n dir = _a.dir;\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 onMouseDown: preventDefaultNonInputs,\n dir: dir !== undefined ? dir : base.dirCalculated,\n width: popupWidth,\n popupSettings: {\n className: classNames('k-list-container k-reset', popupSettings.className),\n animate: popupSettings.animate,\n anchor: _this.element || undefined,\n show: opened,\n open: _this.onPopupOpened,\n close: _this.onPopupClosed\n }\n };\n return React.createElement(ListContainer, __assign({}, listContainerProps), _this.renderListFilter(), virtual ? _this.renderDefaultItem() : undefined, virtual && header, _this.base.renderScrollWrapper(!virtual ? [_this.renderDefaultItem(), header, _this.renderList(), footer, _this.base.renderScrollElement()] : [_this.renderList(), _this.base.renderScrollElement()]), virtual && footer);\n };\n\n _this.renderList = function () {\n var _a = _this.props,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n textField = _a.textField,\n dataItemKey = _a.dataItemKey,\n _c = _a.virtual,\n virtual = _c === void 0 ? {\n skip: 0\n } : _c,\n listNoDataRender = _a.listNoDataRender,\n 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\n var popupSettings = _this.base.getPopupSettings();\n\n var translate = \"translateY(\" + vs.translate + \"px)\";\n return React.createElement(List, {\n id: _this.base.listBoxId,\n show: opened,\n data: data.slice(),\n focusedIndex: _this.focusedIndex(),\n value: _this.value,\n textField: textField,\n valueField: dataItemKey,\n optionsGuid: _this.base.guid,\n listRef: function listRef(list) {\n return vs.list = _this.base.list = list;\n },\n wrapperStyle: !vs.enabled ? {\n maxHeight: popupSettings.height\n } : {\n float: 'left',\n width: '100%'\n },\n wrapperCssClass: !vs.enabled ? 'k-list-scroller' : undefined,\n listStyle: vs.enabled ? {\n transform: translate\n } : undefined,\n key: \"listkey\",\n skip: skip,\n onClick: _this.handleItemClick,\n itemRender: itemRender,\n noDataRender: listNoDataRender\n });\n };\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, {\n value: filterText,\n ref: function ref(filter) {\n return _this._filterInput = filter && filter.input;\n },\n onChange: _this.handleListFilterChange,\n onKeyDown: _this.handleKeyDown\n });\n };\n\n _this.renderDefaultItem = function () {\n var _a = _this.props,\n textField = _a.textField,\n defaultItem = _a.defaultItem,\n dataItemKey = _a.dataItemKey;\n return defaultItem !== undefined && React.createElement(ListDefaultItem, {\n defaultItem: defaultItem,\n textField: textField,\n selected: areSame(_this.value, defaultItem, dataItemKey),\n key: \"defaultitemkey\",\n onClick: _this.handleDefaultItemClick\n });\n };\n\n _this.search = function (event) {\n clearTimeout(_this._typingTimeout);\n\n if (!_this.props.filterable) {\n _this._typingTimeout = setTimeout(function () {\n return _this.searchState.word = '';\n }, _this.props.delay);\n\n _this.selectNext(event);\n }\n };\n\n _this.selectNext = function (event) {\n var _a = _this.props,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n dataItemKey = _a.dataItemKey;\n var mappedData = data.map(function (item, idx) {\n return {\n item: item,\n itemIndex: idx\n };\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) {\n return areSame(i, _this.value, dataItemKey);\n }));\n var defaultItem;\n\n if (_this.props.defaultItem) {\n defaultItem = {\n item: _this.props.defaultItem,\n itemIndex: -1\n };\n dataLength += 1;\n startIndex += 1;\n }\n\n startIndex += isInLoop ? 1 : 0;\n mappedData = shuffleData(mappedData, startIndex, defaultItem);\n var text,\n loopMatch,\n nextMatch,\n index = 0;\n var _c = _this.props,\n textField = _c.textField,\n ignoreCase = _c.ignoreCase;\n\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\n if (loopMatch || nextMatch) {\n index = mappedData[index].itemIndex;\n break;\n }\n }\n\n if (index !== dataLength) {\n var state = _this.base.initState();\n\n state.syntheticEvent = event;\n\n _this.handleItemSelect(index, state);\n\n _this.applyState(state);\n\n _this._valueDuringOnChange = undefined;\n }\n };\n\n _this.handleKeyDown = function (event) {\n var _a = _this.props,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n filterable = _a.filterable,\n disabled = _a.disabled,\n _c = _a.virtual,\n virtual = _c === void 0 ? {\n skip: 0,\n total: 0,\n pageSize: 0\n } : _c;\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 && (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 = keyCode === Keys.left || keyCode === Keys.right;\n var shouldNavigate = upOrDownKeys || !filterable && (leftOrRightKeys || homeOrEndKeys);\n\n var state = _this.base.initState();\n\n state.syntheticEvent = event;\n\n if (disabled) {\n return;\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\n _this._navigated = true;\n } else {\n _this.triggerOnChange(data[0], state);\n }\n } else {\n if (virtual.skip < virtual.total - virtual.pageSize) {\n _this.base.triggerOnPageChange(state, virtual.total - virtual.pageSize, virtual.pageSize);\n\n _this._navigated = true;\n } else {\n _this.triggerOnChange(data[data.length - 1], state);\n }\n }\n } else if (opened && keyCode === Keys.enter) {\n var focusedIndex = _this.focusedIndex();\n\n if (focusedIndex !== undefined) {\n _this.handleItemSelect(focusedIndex, state);\n }\n\n _this.base.togglePopup(state);\n\n event.preventDefault();\n } else if (shouldOpen || shouldClose) {\n _this.base.togglePopup(state);\n\n event.preventDefault();\n } else if (shouldNavigate) {\n _this.onNavigate(state, keyCode);\n\n event.preventDefault();\n }\n\n _this.applyState(state);\n };\n\n _this.handleItemClick = function (index, event) {\n _this.base.handleItemClick(index, event);\n\n _this._valueDuringOnChange = undefined;\n };\n\n _this.handleFocus = function (event) {\n if (_this._skipFocusEvent) {\n return;\n }\n\n _this.base.handleFocus(event);\n };\n\n _this.handleBlur = function (event) {\n if (_this._skipFocusEvent || !_this.state.focused) {\n return;\n }\n\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n\n var state = _this.base.initState();\n\n state.syntheticEvent = event;\n state.data.focused = false;\n state.events.push({\n type: 'onBlur'\n });\n\n if (opened) {\n _this.base.togglePopup(state);\n }\n\n _this.applyState(state);\n };\n\n _this.handleDefaultItemClick = function (event) {\n var state = _this.base.initState();\n\n state.syntheticEvent = event;\n\n _this.base.togglePopup(state);\n\n _this.triggerOnChange(_this.props.defaultItem, state);\n\n _this.applyState(state);\n };\n\n _this.handleWrapperClick = function (event) {\n var state = _this.base.initState();\n\n state.syntheticEvent = event;\n\n if (!_this.state.focused) {\n state.data.focused = true;\n }\n\n _this.base.togglePopup(state);\n\n _this.applyState(state);\n };\n\n _this.handleKeyPress = function (event) {\n if (_this.props.filterable || event.which === 0 || event.keyCode === Keys.enter) {\n return;\n }\n\n var character = String.fromCharCode(event.charCode || event.keyCode);\n\n if (_this.props.ignoreCase) {\n character = character.toLowerCase();\n }\n\n if (character === ' ') {\n event.preventDefault();\n }\n\n _this.searchState = {\n word: _this.searchState.word + character,\n last: _this.searchState.last + character\n };\n\n _this.search(event);\n };\n\n _this.handleListFilterChange = function (event) {\n var state = _this.base.initState();\n\n state.syntheticEvent = event;\n\n if (_this.props.filter === undefined) {\n state.data.text = event.target.value;\n }\n\n _this.base.filterChanged(event.target.value, state);\n\n _this.applyState(state);\n };\n\n _this.onPopupOpened = function () {\n if (_this._filterInput) {\n _this.focusElement(_this._filterInput);\n }\n };\n\n _this.onPopupClosed = function () {\n if (_this.state.focused) {\n setTimeout(function () {\n if (_this.state.focused && _this.base.wrapper) {\n _this.focusElement(_this.base.wrapper);\n }\n });\n }\n };\n\n _this.setValidity = function () {\n if (_this._select && _this._select.setCustomValidity) {\n _this._select.setCustomValidity(_this.validity.valid ? '' : _this.props.validationMessage || VALIDATION_MESSAGE);\n }\n };\n\n return _this;\n }\n\n Object.defineProperty(DropDownList.prototype, \"element\", {\n /**\n * @hidden\n */\n get: function get() {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DropDownList.prototype, \"value\", {\n /**\n * The value of the DropDownList.\n */\n get: function get() {\n var value;\n\n if (this._valueDuringOnChange !== undefined) {\n value = this._valueDuringOnChange;\n } else if (this.props.value !== undefined) {\n value = this.props.value;\n } else if (this.state.value !== undefined) {\n value = this.state.value;\n } else if (this.props.defaultValue !== undefined) {\n value = this.props.defaultValue;\n }\n\n if (!isPresent(value) && this.props.defaultItem !== undefined) {\n value = this.props.defaultItem;\n }\n\n return value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DropDownList.prototype, \"index\", {\n /**\n * The index of the selected item.\n */\n get: function get() {\n var _a = this.props,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n dataItemKey = _a.dataItemKey;\n var value = this.value; // TO DO: deprecate it!\n\n return data.findIndex(function (i) {\n return areSame(i, value, dataItemKey);\n });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DropDownList.prototype, \"name\", {\n /**\n * Gets the `name` property of the DropDownList.\n */\n get: function get() {\n return this.props.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DropDownList.prototype, \"validity\", {\n /**\n * Represents the validity state into which the DropDownList is set.\n */\n get: function get() {\n var customError = this.props.validationMessage !== undefined;\n var isValid = !this.required || 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(DropDownList.prototype, \"validityStyles\", {\n get: function get() {\n return this.props.validityStyles !== undefined ? this.props.validityStyles : DropDownList.defaultProps.validityStyles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DropDownList.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function get() {\n return this.props.required !== undefined ? this.props.required : DropDownList.defaultProps.required;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n DropDownList.prototype.componentDidUpdate = function (prevProps, prevState) {\n var _a = this.props,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n dataItemKey = _a.dataItemKey,\n 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\n if (!this.base.getPopupSettings().animate) {\n if (opening) {\n this.onPopupOpened();\n } else if (closing) {// this.onPopupClosed();\n }\n }\n\n if (virtual && virtual.total !== prevTotal) {\n this.base.vs.calcScrollElementHeight();\n this.base.vs.reset();\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) {\n return areSame(i, selectedItem_1, dataItemKey);\n });\n var selectedItemChanged = !areSame(prevSelectedItem, selectedItem_1, dataItemKey);\n\n if (opening && virtual) {\n this.base.scrollToVirtualItem(virtual, selectedItemIndex);\n } else if (opening && !virtual) {\n this.base.scrollToItem(selectedItemIndex);\n } else if (opened && prevOpened && selectedItem_1 && selectedItemChanged && !this._navigated) {\n this.base.scrollToItem(selectedItemIndex);\n } else if (opened && prevOpened && this._navigated) {\n if (this._navigated && virtual && virtual.skip === 0) {\n this.base.vs.reset();\n } else if (this._navigated && virtual && virtual.skip === virtual.total - virtual.pageSize) {\n this.base.vs.scrollToEnd();\n }\n }\n }\n\n this._navigated = false;\n this.setValidity();\n };\n /**\n * @hidden\n */\n\n\n DropDownList.prototype.componentDidMount = function () {\n this.base.didMount();\n this.setValidity();\n };\n /**\n * @hidden\n */\n\n\n DropDownList.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n style = _a.style,\n className = _a.className,\n label = _a.label,\n dir = _a.dir,\n 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\n if (virtual !== undefined) {\n base.vs.skip = virtual.skip;\n base.vs.total = virtual.total;\n base.vs.pageSize = virtual.pageSize;\n }\n\n var dropdownlist = React.createElement(\"span\", {\n ref: function ref(dropdown) {\n return _this._element = dropdown;\n },\n className: classNames('k-widget k-dropdown k-header', {\n 'k-state-invalid': !isValid\n }, className),\n style: !label ? style : __assign({}, style, {\n width: undefined\n }),\n dir: dir,\n onMouseDown: opened ? preventDefaultNonInputs : undefined,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur\n }, this.renderDropDownWrapper(), this.renderListContainer());\n return label ? React.createElement(FloatingLabel, {\n label: label,\n value: text,\n style: {\n width: style ? style.width : undefined\n },\n valid: isValid,\n children: dropdownlist\n }) : dropdownlist;\n };\n /**\n * @hidden\n */\n\n\n DropDownList.prototype.onNavigate = function (state, keyCode) {\n var _a = this.props,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n defaultItem = _a.defaultItem,\n dataItemKey = _a.dataItemKey,\n _c = _a.virtual,\n virtual = _c === void 0 ? {\n skip: 0,\n total: 0,\n pageSize: 0\n } : _c;\n var vs = this.base.vs;\n var value = this.value;\n var index = data.findIndex(function (i) {\n return areSame(i, value, dataItemKey);\n });\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\n if (newIndex !== undefined) {\n this.handleItemSelect(newIndex, state);\n }\n\n this.applyState(state);\n };\n\n DropDownList.prototype.focusedIndex = function () {\n var filterText = isPresent(this.props.filter) ? this.props.filter : this.state.text;\n var _a = this.props,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n _c = _a.virtual,\n virtual = _c === void 0 ? {\n skip: 0\n } : _c,\n dataItemKey = _a.dataItemKey;\n var value = this.value;\n var selectedIndex = data.findIndex(function (i) {\n return areSame(i, value, dataItemKey);\n });\n var hasSelected = !(selectedIndex < 0 && !this.props.defaultItem);\n\n if (!hasSelected && filterText && virtual.skip === 0) {\n return data.indexOf(getFocusedItem(data, filterText, this.props.textField));\n } else {\n return !hasSelected && virtual.skip === 0 ? 0 : undefined;\n }\n };\n\n DropDownList.prototype.focusElement = function (element) {\n var _this = this;\n\n this._skipFocusEvent = true;\n element.focus();\n setTimeout(function () {\n return _this._skipFocusEvent = false;\n }, 30);\n };\n\n DropDownList.prototype.triggerOnChange = function (item, state) {\n if (areSame(this.value, item, this.props.dataItemKey)) {\n return;\n }\n\n if (this.props.value === undefined) {\n state.data.value = item;\n }\n\n this._valueDuringOnChange = item;\n state.events.push({\n type: 'onChange'\n });\n };\n\n DropDownList.prototype.applyState = function (state) {\n this.base.applyState(state);\n this._valueDuringOnChange = undefined;\n };\n /**\n * @hidden\n */\n\n\n DropDownList.propTypes = __assign({\n delay: PropTypes.number,\n ignoreCase: PropTypes.bool,\n iconClassName: PropTypes.string,\n defaultItem: PropTypes.any,\n valueRender: PropTypes.func,\n valueMap: PropTypes.func,\n validationMessage: PropTypes.string,\n required: PropTypes.bool\n }, DropDownBase.propTypes);\n /**\n * @hidden\n */\n\n DropDownList.defaultProps = __assign({\n delay: 500,\n tabIndex: 0,\n ignoreCase: true\n }, DropDownBase.defaultProps, {\n required: false\n });\n return DropDownList;\n}(React.Component);\n\nexport default DropDownList;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, clear } from '../messages';\n/**\n * @hidden\n */\n\nvar ClearButton =\n/** @class */\nfunction (_super) {\n __extends(ClearButton, _super);\n\n function ClearButton() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.onMouseDown = function (e) {\n return e.preventDefault();\n };\n\n return _this;\n }\n\n ClearButton.prototype.render = function () {\n var title = provideLocalizationService(this).toLanguageString(clear, messages[clear]);\n return React.createElement(\"span\", {\n className: \"k-icon k-clear-value k-i-close\",\n role: \"button\",\n onClick: this.props.onClick,\n onMouseDown: this.onMouseDown,\n tabIndex: -1,\n title: title,\n key: \"clearbutton\"\n });\n };\n\n return ClearButton;\n}(React.Component);\n\nexport default ClearButton;\nregisterForLocalization(ClearButton);","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport ClearButton from './ClearButton';\n/**\n * @hidden\n */\n\nvar SearchBar =\n/** @class */\nfunction (_super) {\n __extends(SearchBar, _super);\n\n function SearchBar() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(SearchBar.prototype, \"input\", {\n /**\n * @hidden\n */\n get: function get() {\n return this._input;\n },\n enumerable: true,\n configurable: true\n });\n\n SearchBar.prototype.componentDidUpdate = function (prevProps) {\n var prevValue = prevProps.value;\n var prevSuggestedText = prevProps.suggestedText;\n var _a = this.props,\n value = _a.value,\n suggestedText = _a.suggestedText,\n focused = _a.focused;\n var input = this.input;\n var valueChanged = prevValue !== value || suggestedText !== prevSuggestedText;\n var deleting = valueChanged && prevValue.startsWith(value) && !(prevSuggestedText && suggestedText && prevSuggestedText.endsWith(suggestedText));\n\n if (focused && input && document.activeElement !== input) {\n input.focus();\n }\n\n if (suggestedText && valueChanged && !deleting && input) {\n input.setSelectionRange(value.length - suggestedText.length, value.length);\n }\n };\n\n SearchBar.prototype.render = function () {\n var _this = this;\n\n return [React.createElement(\"span\", {\n className: \"k-searchbar\",\n key: \"searchbar\"\n }, React.createElement(\"input\", {\n autoComplete: \"off\",\n id: this.props.id,\n type: \"text\",\n size: this.props.size,\n placeholder: this.props.placeholder,\n className: \"k-input\",\n tabIndex: this.props.tabIndex,\n accessKey: this.props.accessKey,\n role: \"listbox\",\n name: this.props.name,\n value: this.props.value,\n onChange: this.props.onChange,\n ref: function ref(input) {\n return _this._input = input;\n },\n onKeyDown: this.props.onKeyDown,\n onFocus: this.props.onFocus,\n onBlur: this.props.onBlur,\n \"aria-disabled\": this.props.disabled || undefined,\n disabled: this.props.disabled || undefined,\n readOnly: this.props.readOnly || undefined,\n \"aria-haspopup\": \"listbox\",\n \"aria-expanded\": this.props.expanded || false,\n \"aria-owns\": this.props.owns,\n \"aria-activedescendant\": this.props.activedescendant,\n \"aria-describedby\": this.props.describedby\n })), this.props.clearButton && React.createElement(ClearButton, {\n onClick: this.props.clearButtonClick,\n key: \"clearbutton\"\n })];\n };\n\n return SearchBar;\n}(React.Component);\n\nexport default SearchBar;","/**\n * @hidden\n */\nexport var ActiveDescendant;\n\n(function (ActiveDescendant) {\n ActiveDescendant[ActiveDescendant[\"PopupList\"] = 0] = \"PopupList\";\n ActiveDescendant[ActiveDescendant[\"TagsList\"] = 1] = \"TagsList\";\n})(ActiveDescendant || (ActiveDescendant = {}));","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport DropDownBase from '../common/DropDownBase';\nimport { guid, classNames, FloatingLabel, Keys } from '@progress/kendo-react-common';\nimport { areSame, itemIndexStartsWith, getItemIndexByText, getItemValue, isPresent, suggestValue } from '../common/utils';\nimport SearchBar from '../common/SearchBar';\nimport ListContainer from '../common/ListContainer';\nimport List from '../common/List';\nvar VALIDATION_MESSAGE = 'Please enter a valid value!';\n/**\n * Represents the [KendoReact ComboBox component]({% slug overview_combobox %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * combobox = null;\n * render() {\n * return (\n *
    \n * this.combobox = component}\n * />\n * \n *
    \n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\n\nvar ComboBox =\n/** @class */\nfunction (_super) {\n __extends(ComboBox, _super);\n\n function ComboBox() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n\n\n _this.state = {};\n _this.base = new DropDownBase(_this);\n _this._inputId = guid();\n _this._suggested = '';\n /**\n * @hidden\n */\n\n _this.handleItemSelect = function (index, state) {\n var _a = _this.props,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n virtual = _a.virtual,\n dataItemKey = _a.dataItemKey;\n var skip = virtual ? virtual.skip : 0;\n var item = data[index - skip];\n var newSelected = !areSame(item, _this.value, dataItemKey);\n\n _this.triggerOnChange(item, state);\n\n if (_this.state.text !== undefined) {\n state.data.text = undefined;\n }\n\n if (newSelected) {\n _this.base.triggerPageChangeCornerItems(item, state);\n }\n };\n\n _this.toggleBtnClick = function (event) {\n var state = _this.base.initState();\n\n state.syntheticEvent = event;\n\n _this.base.togglePopup(state);\n\n _this.applyState(state);\n };\n\n _this.handleItemClick = function (index, event) {\n _this.base.handleItemClick(index, event);\n\n _this._valueDuringOnChange = undefined;\n };\n\n _this.handleBlur = function (event) {\n if (_this.state.focused) {\n var state = _this.base.initState();\n\n state.data.focused = false;\n state.events.push({\n type: 'onBlur'\n });\n state.syntheticEvent = event;\n\n _this.applyValueOnRejectSuggestions(event.currentTarget.value, state);\n }\n };\n\n _this.onInputKeyDown = function (event) {\n var keyCode = event.keyCode;\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n\n var state = _this.base.initState();\n\n state.syntheticEvent = event;\n\n if (!event.altKey && (keyCode === Keys.up || keyCode === Keys.down)) {\n event.preventDefault();\n\n _this.onNavigate(state, keyCode);\n\n _this.applyState(state);\n\n return;\n }\n\n var togglePopup = function togglePopup() {\n event.preventDefault();\n\n _this.base.togglePopup(state);\n\n _this.applyState(state);\n };\n\n if (opened) {\n if (event.altKey && keyCode === Keys.up) {\n togglePopup();\n } else if (keyCode === Keys.enter) {\n event.preventDefault();\n\n _this.applyValueOnEnter(event.currentTarget.value, state);\n } else if (keyCode === Keys.esc) {\n _this.applyValueOnRejectSuggestions(event.currentTarget.value, state);\n }\n } else if (event.altKey && keyCode === Keys.down) {\n togglePopup();\n }\n };\n\n _this.inputOnChange = function (event) {\n var state = _this.base.initState();\n\n state.syntheticEvent = event;\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var input = event.currentTarget;\n var value = input.value;\n\n if (_this.props.suggest) {\n var selectionAtEnd = input.selectionEnd === value.length;\n var prevText = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n\n if (!isPresent(prevText)) {\n prevText = getItemValue(_this.value, _this.props.textField) || '';\n }\n\n var deletedSuggestion = prevText && prevText === value;\n var deleting = prevText && prevText.length > value.length;\n\n if (deletedSuggestion || deleting || !selectionAtEnd) {\n _this._suggested = '';\n } else {\n _this.suggestValue(value);\n }\n }\n\n if (_this.props.filter === undefined) {\n state.data.text = value;\n }\n\n if (_this.state.focusedItem !== undefined) {\n state.data.focusedItem = undefined;\n }\n\n if (!opened) {\n _this.base.togglePopup(state);\n }\n\n _this.base.filterChanged(value, state);\n\n _this.applyState(state);\n };\n\n _this.clearButtonClick = function (event) {\n var state = _this.base.initState();\n\n state.syntheticEvent = event;\n event.stopPropagation();\n _this._suggested = '';\n\n _this.base.filterChanged('', state);\n\n if (_this.props.filter === undefined && _this.state.text !== undefined) {\n state.data.text = undefined;\n }\n\n _this.triggerOnChange(null, state);\n\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n\n if (opened) {\n _this.base.togglePopup(state);\n }\n\n _this.applyState(state);\n };\n\n _this.setValidity = function () {\n if (_this._input && _this._input.setCustomValidity) {\n _this._input.setCustomValidity(_this.validity.valid ? '' : _this.props.validationMessage || VALIDATION_MESSAGE);\n }\n };\n\n return _this;\n }\n\n Object.defineProperty(ComboBox.prototype, \"element\", {\n /**\n * @hidden\n */\n get: function get() {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ComboBox.prototype, \"value\", {\n /**\n * The value of the ComboBox.\n */\n get: function get() {\n if (this._valueDuringOnChange !== undefined) {\n return this._valueDuringOnChange;\n } else if (this.props.value !== undefined) {\n return this.props.value;\n } else if (this.state.value !== undefined) {\n return this.state.value;\n } else if (this.props.defaultValue !== undefined) {\n return this.props.defaultValue;\n }\n\n return undefined;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ComboBox.prototype, \"index\", {\n /**\n * The index of the selected item.\n */\n get: function get() {\n var _a = this.props,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n dataItemKey = _a.dataItemKey;\n var value = this.value; // TO DO: deprecate it!\n\n return data.findIndex(function (i) {\n return areSame(i, value, dataItemKey);\n });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ComboBox.prototype, \"name\", {\n /**\n * Gets the `name` property of the ComboBox.\n */\n get: function get() {\n return this.props.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ComboBox.prototype, \"validity\", {\n /**\n * Represents the validity state into which the component is set.\n */\n get: function get() {\n // remove the undefined check when this is fixed:\n // https://github.com/telerik/kendo-react-private/issues/252\n var customError = this.props.validationMessage !== undefined;\n var isValid = !this.required || 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(ComboBox.prototype, \"validityStyles\", {\n get: function get() {\n return this.props.validityStyles !== undefined ? this.props.validityStyles : ComboBox.defaultProps.validityStyles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ComboBox.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function get() {\n return this.props.required !== undefined ? this.props.required : ComboBox.defaultProps.required;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n ComboBox.prototype.componentDidUpdate = function (prevProps, prevState) {\n var _a = this.props,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n dataItemKey = _a.dataItemKey,\n 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 selectedItem = this.value;\n this._valueOnDidUpdate = selectedItem;\n\n if (virtual && virtual.total !== prevTotal) {\n this.base.vs.calcScrollElementHeight();\n this.base.vs.reset();\n } else {\n var prevSelectedItem = prevProps.value !== undefined ? prevProps.value : prevState.value;\n var selectedItemIndex = data.findIndex(function (i) {\n return areSame(i, selectedItem, dataItemKey);\n });\n var selectedItemChanged = !areSame(prevSelectedItem, selectedItem, dataItemKey);\n\n if (opening && virtual) {\n this.base.scrollToVirtualItem(virtual, selectedItemIndex);\n } else if (opening && !virtual) {\n this.base.scrollToItem(selectedItemIndex);\n } else if (opened && prevOpened && selectedItem && selectedItemChanged) {\n this.base.scrollToItem(selectedItemIndex);\n }\n }\n\n if (opening && this._input) {\n this._input.focus();\n }\n\n this.setValidity();\n };\n /**\n * @hidden\n */\n\n\n ComboBox.prototype.componentDidMount = function () {\n this.base.didMount();\n this.setValidity();\n };\n /**\n * @hidden\n */\n\n\n ComboBox.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n dir = _a.dir,\n disabled = _a.disabled,\n _b = _a.clearButton,\n clearButton = _b === void 0 ? ComboBox.defaultProps.clearButton : _b,\n label = _a.label,\n textField = _a.textField,\n className = _a.className,\n style = _a.style,\n loading = _a.loading,\n iconClassName = _a.iconClassName,\n virtual = _a.virtual;\n var focused = this.state.focused;\n var isValid = !this.validityStyles || this.validity.valid;\n var text = this.props.filter !== undefined ? this.props.filter : this.state.text;\n var selectedItemText = getItemValue(this.value, textField);\n var inputText = isPresent(text) ? text : selectedItemText;\n var renderClearButton = clearButton && (!!inputText || isPresent(this.value));\n var base = this.base;\n var vs = base.vs;\n vs.enabled = virtual !== undefined;\n\n if (virtual !== undefined) {\n vs.skip = virtual.skip;\n vs.total = virtual.total;\n vs.pageSize = virtual.pageSize;\n }\n\n var combobox = React.createElement(\"span\", {\n className: classNames('k-widget k-combobox k-header', {\n 'k-combobox-clearable': clearButton,\n 'k-state-invalid': !isValid\n }, className),\n ref: function ref(element) {\n return _this._element = element;\n },\n style: !label ? style : __assign({}, style, {\n width: undefined\n }),\n dir: dir\n }, React.createElement(\"span\", {\n ref: function ref(wrapper) {\n return base.wrapper = wrapper;\n },\n className: classNames('k-dropdown-wrap', {\n 'k-state-default': !disabled,\n 'k-state-disabled': disabled,\n 'k-state-focused': focused && !disabled\n })\n }, this.renderSearchBar(renderClearButton, inputText || '', this._inputId), React.createElement(\"span\", {\n className: \"k-select\",\n onClick: this.toggleBtnClick,\n onMouseDown: function onMouseDown(e) {\n return e.preventDefault();\n }\n }, React.createElement(\"span\", {\n className: classNames('k-icon', iconClassName, {\n 'k-i-arrow-s': !loading && !iconClassName,\n 'k-i-loading': loading && !iconClassName\n })\n }))), this.renderListContainer());\n return label ? React.createElement(FloatingLabel, {\n label: label,\n value: inputText,\n style: {\n width: style ? style.width : undefined\n },\n valid: isValid,\n id: this._inputId,\n children: combobox\n }) : combobox;\n };\n /**\n * @hidden\n */\n\n\n ComboBox.prototype.onNavigate = function (state, keyCode) {\n var _a = this.props,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n _c = _a.virtual,\n virtual = _c === void 0 ? {\n skip: 0\n } : _c;\n var text = this.props.filter ? this.props.filter : this.state.text;\n var focusedIndex = this.getFocusedIndex();\n var vs = this.base.vs;\n var value = this.value;\n this._suggested = '';\n\n if (focusedIndex !== -1 && !isPresent(value)) {\n this.handleItemSelect(focusedIndex, state);\n } else if (text === '') {\n this.handleItemSelect(0, state);\n } else {\n var currentIndex = virtual.skip + focusedIndex;\n var newIndex = this.base.navigation.navigate({\n keyCode: keyCode,\n current: currentIndex,\n max: (vs.enabled ? vs.total : data.length) - 1,\n min: 0\n });\n\n if (newIndex !== undefined) {\n this.handleItemSelect(newIndex, state);\n }\n }\n };\n\n ComboBox.prototype.applyValueOnEnter = function (value, state) {\n var _a;\n\n var _b = this.props,\n _c = _b.data,\n data = _c === void 0 ? [] : _c,\n textField = _b.textField,\n allowCustom = _b.allowCustom;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var currentValueText = getItemValue(this.value, textField);\n var valueIndex = currentValueText === value ? this.index : getItemIndexByText(data, value, textField);\n var itemSelected = valueIndex !== -1;\n var newSelected = undefined;\n this._suggested = '';\n\n if (itemSelected) {\n // typed text match item from list\n newSelected = data[valueIndex];\n } else {\n if (allowCustom) {\n // any custom text not in list\n newSelected = textField !== undefined ? (_a = {}, _a[textField] = value, _a) : value;\n } else {\n return this.selectFocusedItem(value, state);\n }\n }\n\n this.triggerOnChange(newSelected, state);\n\n if (opened) {\n this.base.togglePopup(state);\n }\n\n if (this.props.filter === undefined && this.state.text !== undefined) {\n state.data.text = undefined;\n }\n\n this.applyState(state);\n };\n\n ComboBox.prototype.applyValueOnRejectSuggestions = function (text, state) {\n var _a;\n\n var _b = this.props,\n _c = _b.data,\n data = _c === void 0 ? [] : _c,\n textField = _b.textField,\n allowCustom = _b.allowCustom;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var valueItemText = getItemValue(this.value, textField);\n this._suggested = '';\n\n if (text === valueItemText || text === '' && !isPresent(valueItemText)) {\n if (opened) {\n this.base.togglePopup(state);\n }\n\n return this.applyState(state);\n }\n\n var valueIndex = getItemIndexByText(data, text, textField, true);\n var itemSelected = valueIndex !== -1;\n var newSelected = null;\n\n if (itemSelected) {\n newSelected = data[valueIndex];\n } else if (allowCustom) {\n newSelected = text ? textField ? (_a = {}, _a[textField] = text, _a) : text : null;\n }\n\n this.triggerOnChange(newSelected, state);\n\n if (this.state.text !== undefined) {\n state.data.text = undefined;\n this.base.filterChanged('', state);\n }\n\n if (opened) {\n this.base.togglePopup(state);\n }\n\n this.applyState(state);\n };\n\n ComboBox.prototype.selectFocusedItem = function (text, state) {\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var _a = this.props,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n textField = _a.textField,\n _c = _a.virtual,\n virtual = _c === void 0 ? {\n skip: 0\n } : _c;\n var skip = virtual.skip;\n var focusedItemIndex = text === '' && skip === 0 ? 0 : itemIndexStartsWith(data, text, textField);\n\n if (focusedItemIndex !== -1) {\n this.handleItemSelect(focusedItemIndex + skip, state);\n } else {\n this.triggerOnChange(null, state);\n\n if (this.state.text !== undefined) {\n state.data.text = undefined;\n }\n }\n\n if (opened) {\n this.base.togglePopup(state);\n }\n\n return this.applyState(state);\n };\n\n ComboBox.prototype.renderListContainer = function () {\n var base = this.base;\n var _a = this.props,\n dir = _a.dir,\n header = _a.header,\n footer = _a.footer;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var popupSettings = base.getPopupSettings();\n var popupWidth = popupSettings.width !== undefined ? popupSettings.width : base.popupWidth;\n return React.createElement(ListContainer, {\n onMouseDown: function onMouseDown(e) {\n return e.preventDefault();\n },\n width: popupWidth,\n popupSettings: {\n animate: popupSettings.animate,\n anchor: this.element || undefined,\n show: opened,\n className: classNames('k-list-container k-reset', popupSettings.className)\n },\n dir: dir !== undefined ? dir : this.base.dirCalculated\n }, header, base.renderScrollWrapper([this.renderList(), base.renderScrollElement()]), footer);\n };\n\n ComboBox.prototype.renderList = function () {\n var _this = this;\n\n var base = this.base;\n var _a = this.props,\n textField = _a.textField,\n dataItemKey = _a.dataItemKey,\n listNoDataRender = _a.listNoDataRender,\n itemRender = _a.itemRender,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n _c = _a.virtual,\n virtual = _c === void 0 ? {\n skip: 0\n } : _c;\n var popupSettings = base.getPopupSettings();\n var vs = base.vs;\n var skip = virtual.skip;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var translate = \"translateY(\" + vs.translate + \"px)\";\n var focusedIndex = opened ? this.getFocusedIndex() : undefined;\n var text = this.props.filter !== undefined ? this.props.filter : this.state.text;\n var selectedItemText = getItemValue(this.value, textField);\n var value = isPresent(text) && text !== selectedItemText ? null : this.value;\n return React.createElement(List, {\n id: base.listBoxId,\n show: opened,\n data: data,\n focusedIndex: focusedIndex,\n value: value,\n textField: textField,\n valueField: dataItemKey,\n optionsGuid: base.guid,\n listRef: function listRef(list) {\n return vs.list = _this.base.list = list;\n },\n wrapperStyle: !vs.enabled ? {\n maxHeight: popupSettings.height\n } : {\n float: 'left',\n width: '100%'\n },\n wrapperCssClass: !vs.enabled ? 'k-list-scroller' : undefined,\n listStyle: vs.enabled ? {\n transform: translate\n } : undefined,\n key: \"listkey\",\n skip: skip,\n onClick: this.handleItemClick,\n itemRender: itemRender,\n noDataRender: listNoDataRender\n });\n };\n\n ComboBox.prototype.renderSearchBar = function (clearButton, text, id) {\n var _this = this;\n\n var _a = this.props,\n placeholder = _a.placeholder,\n tabIndex = _a.tabIndex,\n disabled = _a.disabled,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n dataItemKey = _a.dataItemKey,\n _c = _a.virtual,\n virtual = _c === void 0 ? {\n skip: 0\n } : _c;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var value = this.value;\n var selectedIndex = Math.max(0, data.findIndex(function (i) {\n return areSame(i, value, dataItemKey);\n }));\n\n if (this._suggested && !areSame(this._valueOnDidUpdate, value, dataItemKey)) {\n this._suggested = '';\n }\n\n return React.createElement(SearchBar, {\n id: id,\n placeholder: placeholder,\n tabIndex: tabIndex || undefined,\n accessKey: this.props.accessKey,\n value: text + this._suggested,\n suggestedText: this._suggested,\n ref: function ref(el) {\n return _this._input = el && el.input;\n },\n onKeyDown: this.onInputKeyDown,\n onChange: this.inputOnChange,\n onFocus: this.base.handleFocus,\n onBlur: this.handleBlur,\n disabled: disabled,\n expanded: opened,\n owns: this.base.listBoxId,\n activedescendant: this.base.guid + '-' + (selectedIndex + virtual.skip),\n clearButton: clearButton,\n clearButtonClick: this.clearButtonClick\n });\n };\n\n ComboBox.prototype.triggerOnChange = function (item, state) {\n var value = this.value;\n\n if (!isPresent(value) && !isPresent(item) || areSame(value, item, this.props.dataItemKey)) {\n return;\n }\n\n if (this.props.value === undefined) {\n state.data.value = item;\n }\n\n this._valueDuringOnChange = item;\n state.events.push({\n type: 'onChange'\n });\n };\n\n ComboBox.prototype.getFocusedIndex = function () {\n var value = this.value;\n var _a = this.props,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n textField = _a.textField,\n dataItemKey = _a.dataItemKey,\n _c = _a.virtual,\n virtual = _c === void 0 ? {\n skip: 0\n } : _c;\n var text = this.props.filter ? this.props.filter : this.state.text;\n\n if (isPresent(value) && text === undefined) {\n return data.findIndex(function (i) {\n return areSame(i, value, dataItemKey);\n });\n } else if (text) {\n return itemIndexStartsWith(data, text, textField);\n } else {\n return virtual.skip === 0 ? 0 : -1;\n }\n };\n\n ComboBox.prototype.suggestValue = function (value) {\n var _a = this.props,\n data = _a.data,\n textField = _a.textField;\n this._suggested = suggestValue(value, data, textField);\n };\n\n ComboBox.prototype.applyState = function (state) {\n this.base.applyState(state);\n this._valueDuringOnChange = undefined;\n };\n /**\n * @hidden\n */\n\n\n ComboBox.propTypes = __assign({}, DropDownBase.propTypes, {\n dataItemKey: PropTypes.string,\n suggest: PropTypes.bool,\n placeholder: PropTypes.string,\n allowCustom: PropTypes.bool,\n clearButton: PropTypes.bool,\n iconClassName: PropTypes.string,\n validationMessage: PropTypes.string,\n required: PropTypes.bool\n });\n /**\n * @hidden\n */\n\n ComboBox.defaultProps = __assign({}, DropDownBase.defaultProps, {\n allowCustom: false,\n clearButton: true,\n required: false\n });\n return ComboBox;\n}(React.Component);\n\nexport default ComboBox;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SearchBar from './../common/SearchBar';\nimport ListContainer from './../common/ListContainer';\nimport List from './../common/List';\nimport DropDownBase from '../common/DropDownBase';\nimport { itemIndexStartsWith, getItemValue, areSame, getFocusedItem } from '../common/utils';\nimport { guid, Keys, classNames, FloatingLabel } from '@progress/kendo-react-common';\nvar VALIDATION_MESSAGE = 'Please enter a valid value!';\n/**\n * Represents the [KendoReact AutoComplete component]({% slug overview_autocomplete %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * autocomplete = null;\n * render() {\n * return (\n *
    \n * this.autocomplete = component}\n * />\n * \n *
    \n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\n\nvar AutoComplete =\n/** @class */\nfunction (_super) {\n __extends(AutoComplete, _super);\n\n function AutoComplete() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n\n\n _this.state = {};\n _this.base = new DropDownBase(_this);\n _this._inputId = guid();\n _this._suggested = '';\n /**\n * @hidden\n */\n\n _this.handleItemSelect = function (index, state) {\n var _a = _this.props.data,\n data = _a === void 0 ? [] : _a;\n var newText = getItemValue(data[index], _this.props.textField);\n\n _this.triggerOnChange(newText, state);\n };\n /**\n * @hidden\n */\n\n\n _this.itemFocus = function (index, state) {\n var _a = _this.props,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n textField = _a.textField;\n var focusedItem = data[index];\n\n if (!areSame(_this.state.focusedItem, focusedItem, textField)) {\n state.data.focusedItem = focusedItem;\n }\n };\n /**\n * @hidden\n */\n\n\n _this.togglePopup = function (state) {\n _this.base.togglePopup(state);\n };\n\n _this.setValidity = function () {\n if (_this._input && _this._input.setCustomValidity) {\n _this._input.setCustomValidity(_this.validity.valid ? '' : _this.props.validationMessage || VALIDATION_MESSAGE);\n }\n };\n\n _this.handleItemClick = function (index, event) {\n _this.base.handleItemClick(index, event);\n\n _this._valueDuringOnChange = undefined;\n };\n\n _this.onChangeHandler = function (event) {\n var base = _this.base;\n var state = base.initState();\n var input = event.currentTarget;\n var value = input.value;\n var selectionAtEnd = input.selectionEnd === value.length;\n state.syntheticEvent = event;\n var prevSuggestion = _this._suggested;\n var prevValue = _this.value;\n var prevUserInput = prevValue && prevValue.substring(0, prevValue.length - prevSuggestion.length);\n var deletedSuggestion = prevUserInput && prevUserInput === value;\n var deleting = prevUserInput && prevUserInput.length > value.length;\n var suggest = _this.props.suggest;\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n\n if (suggest !== undefined && suggest !== false) {\n if (deletedSuggestion || deleting || !selectionAtEnd) {\n _this._suggested = '';\n } else {\n _this.suggestValue(value);\n }\n\n var newValue = value + _this._suggested;\n var suggestion = {\n userInput: value,\n value: _this._suggested\n };\n\n _this.triggerOnChange(newValue, state, {\n suggestion: suggestion\n });\n } else {\n _this._suggested = '';\n\n _this.triggerOnChange(value, state);\n }\n\n if (!opened && value || opened && !value) {\n _this.togglePopup(state);\n }\n\n state.data.focusedItem = undefined;\n\n _this.applyState(state);\n };\n\n _this.clearButtonClick = function (event) {\n var base = _this.base;\n var state = base.initState();\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n state.syntheticEvent = event;\n var newValue = '';\n _this._suggested = '';\n\n _this.triggerOnChange(newValue, state);\n\n if (_this.state.focusedItem !== undefined) {\n state.data.focusedItem = undefined;\n }\n\n if (opened) {\n _this.togglePopup(state);\n }\n\n _this.applyState(state);\n };\n\n _this.onInputKeyDown = function (event) {\n var keyCode = event.keyCode;\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n\n var state = _this.base.initState();\n\n state.syntheticEvent = event;\n\n var preventDefault = function preventDefault() {\n if (opened) {\n event.preventDefault();\n }\n };\n\n if (keyCode === Keys.enter || keyCode === Keys.esc) {\n preventDefault();\n\n _this.applyInputValue(event.currentTarget.value, state, event.keyCode);\n } else if (keyCode === Keys.up || keyCode === Keys.down) {\n preventDefault();\n\n _this.onNavigate(state, keyCode);\n }\n };\n\n _this.handleBlur = function (event) {\n if (_this.state.focused) {\n var state = _this.base.initState();\n\n state.data.focused = false;\n state.events.push({\n type: 'onBlur'\n });\n state.syntheticEvent = event;\n\n _this.applyInputValue(event.currentTarget.value, state);\n }\n };\n\n return _this;\n }\n\n Object.defineProperty(AutoComplete.prototype, \"element\", {\n /**\n * @hidden\n */\n get: function get() {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AutoComplete.prototype, \"value\", {\n /**\n * The value of the AutoComplete.\n */\n get: function get() {\n if (this._valueDuringOnChange !== undefined) {\n return this._valueDuringOnChange;\n } else if (this.props.value !== undefined) {\n return this.props.value;\n } else if (this.state.value !== undefined) {\n return this.state.value;\n } else if (this.props.defaultValue !== undefined) {\n return this.props.defaultValue;\n }\n\n return '';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AutoComplete.prototype, \"name\", {\n /**\n * Gets the `name` property of the AutoComplete.\n */\n get: function get() {\n return this.props.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AutoComplete.prototype, \"validity\", {\n /**\n * Represents the validity state into which the AutoComplete is set.\n */\n get: function get() {\n // The AutoComplete component is in a invalid state\n // only if it's required and the value is null!\n var customError = this.props.validationMessage !== undefined;\n var isValid = !this.required || this.value !== '';\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(AutoComplete.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function get() {\n return this.props.validityStyles !== undefined ? this.props.validityStyles : AutoComplete.defaultProps.validityStyles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AutoComplete.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function get() {\n return this.props.required !== undefined ? this.props.required : AutoComplete.defaultProps.required;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n AutoComplete.prototype.componentDidUpdate = function (prevProps, prevState) {\n var _a = this.props.data,\n data = _a === void 0 ? [] : _a;\n var _b = prevProps.data,\n prevData = _b === void 0 ? [] : _b;\n var focusedIndex = this.focusedIndex();\n var focusedItem = data[focusedIndex];\n var dataChanged = prevData !== data;\n var focusedItemChanged = focusedItem !== undefined && prevState.focusedItem !== focusedItem;\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\n if (opened && (focusedItemChanged || dataChanged) || opening) {\n this.base.scrollToItem(focusedIndex);\n }\n\n this.setValidity();\n };\n /**\n * @hidden\n */\n\n\n AutoComplete.prototype.componentDidMount = function () {\n this.base.didMount();\n this.setValidity();\n };\n /**\n * @hidden\n */\n\n\n AutoComplete.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n dir = _a.dir,\n disabled = _a.disabled,\n label = _a.label,\n className = _a.className,\n style = _a.style,\n loading = _a.loading,\n suggest = _a.suggest;\n var isValid = !this.validityStyles || this.validity.valid;\n var focused = this.state.focused;\n var base = this.base;\n var value = this.value;\n var renderClearButton = !loading && !!value;\n\n if (typeof suggest === 'string') {\n this._suggested = suggest;\n }\n\n var autoComplete = React.createElement(\"span\", {\n className: classNames('k-widget k-autocomplete k-header', className, {\n 'k-state-disabled': disabled,\n 'k-state-focused': focused && !disabled,\n 'k-state-invalid': !isValid\n }),\n ref: function ref(element) {\n _this._element = element;\n base.wrapper = element;\n },\n style: !label ? style : __assign({}, style, {\n width: undefined\n }),\n dir: dir\n }, this.renderSearchBar(renderClearButton, value || ''), loading && React.createElement(\"span\", {\n className: \"k-icon k-i-loading\"\n }), this.renderListContainer());\n return label ? React.createElement(FloatingLabel, {\n label: label,\n value: value,\n valid: isValid,\n style: {\n width: style ? style.width : undefined\n },\n id: this._inputId,\n children: autoComplete\n }) : autoComplete;\n };\n /**\n * @hidden\n */\n\n\n AutoComplete.prototype.onNavigate = function (state, keyCode) {\n var _this = this;\n\n var typedText = this.value;\n var _a = this.props,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n textField = _a.textField;\n var focusedIndex = this.state.focusedItem !== undefined ? data.findIndex(function (i) {\n return areSame(i, _this.state.focusedItem, textField);\n }) : data.indexOf(getFocusedItem(data, typedText, textField));\n var newFocused = this.base.navigation.navigate({\n keyCode: keyCode,\n current: focusedIndex,\n max: data.length - 1,\n min: 0\n });\n\n if (newFocused !== undefined) {\n this.itemFocus(newFocused, state);\n }\n\n this.applyState(state);\n };\n /**\n * @hidden\n */\n\n\n AutoComplete.prototype.applyInputValue = function (value, state, eventKey) {\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var _a = this.props,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n textField = _a.textField;\n var focusedIndex = this.focusedIndex(value);\n var focusedItem = data[focusedIndex];\n this._suggested = '';\n\n if (opened && eventKey === Keys.enter) {\n var newValue = getItemValue(focusedItem, textField);\n this.triggerOnChange(newValue, state);\n }\n\n if (opened) {\n this.togglePopup(state);\n }\n\n this.applyState(state);\n };\n\n AutoComplete.prototype.renderSearchBar = function (clearButton, value) {\n var _this = this;\n\n var base = this.base;\n var _a = this.props,\n placeholder = _a.placeholder,\n tabIndex = _a.tabIndex,\n disabled = _a.disabled,\n readonly = _a.readonly;\n var focused = this.state.focused;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n return React.createElement(SearchBar, {\n id: this._inputId,\n placeholder: placeholder,\n tabIndex: tabIndex || undefined,\n accessKey: this.props.accessKey,\n value: value,\n suggestedText: this._suggested,\n focused: focused,\n name: this.props.name,\n ref: function ref(searchbar) {\n return _this._input = searchbar && searchbar.input;\n },\n onKeyDown: this.onInputKeyDown,\n onChange: this.onChangeHandler,\n onFocus: base.handleFocus,\n onBlur: this.handleBlur,\n disabled: disabled,\n readOnly: readonly,\n expanded: opened,\n owns: base.listBoxId,\n activedescendant: 'option-' + base.guid + '-' + this.focusedIndex(),\n clearButton: clearButton,\n clearButtonClick: this.clearButtonClick\n });\n };\n\n AutoComplete.prototype.renderListContainer = function () {\n var base = this.base;\n var _a = this.props,\n dir = _a.dir,\n header = _a.header,\n footer = _a.footer;\n var popupSettings = base.getPopupSettings();\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var popupWidth = popupSettings.width !== undefined ? popupSettings.width : base.popupWidth;\n return React.createElement(ListContainer, {\n onMouseDown: function onMouseDown(e) {\n return e.preventDefault();\n },\n width: popupWidth,\n popupSettings: {\n animate: popupSettings.animate,\n anchor: this.element || undefined,\n show: opened,\n className: classNames('k-list-container k-reset', popupSettings.className)\n },\n dir: dir !== undefined ? dir : this.base.dirCalculated\n }, header, this.renderList(), footer);\n };\n\n AutoComplete.prototype.renderList = function () {\n var base = this.base;\n var popupSettings = base.getPopupSettings();\n var _a = this.props,\n textField = _a.textField,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n listNoDataRender = _a.listNoDataRender,\n itemRender = _a.itemRender;\n var value = this.value;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n return React.createElement(List, {\n id: base.listBoxId,\n show: opened,\n data: data.slice(),\n focusedIndex: this.focusedIndex(),\n value: value,\n textField: textField,\n valueField: textField,\n highlightSelected: false,\n optionsGuid: base.guid,\n listRef: function listRef(list) {\n return base.list = list;\n },\n wrapperStyle: {\n maxHeight: popupSettings.height\n },\n wrapperCssClass: \"k-list-scroller\",\n onClick: this.handleItemClick,\n itemRender: itemRender,\n noDataRender: listNoDataRender\n });\n };\n\n AutoComplete.prototype.triggerOnChange = function (newValue, state, eventArgs) {\n if (this.value === newValue && !eventArgs) {\n return;\n }\n\n state.data.value = newValue;\n this._valueDuringOnChange = newValue;\n state.events.push(__assign({\n type: 'onChange'\n }, eventArgs || {}));\n };\n\n AutoComplete.prototype.applyState = function (state) {\n this.base.applyState(state);\n this._valueDuringOnChange = undefined;\n };\n\n AutoComplete.prototype.suggestValue = function (value) {\n this._suggested = '';\n\n if (value) {\n var _a = this.props,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n textField = _a.textField;\n var suggestedItem = data[itemIndexStartsWith(data, value, textField)];\n\n if (suggestedItem) {\n var suggestedText = getItemValue(suggestedItem, textField);\n\n if (value.toLowerCase() !== suggestedText.toLowerCase()) {\n this._suggested = suggestedText.substring(value.length);\n }\n }\n }\n };\n\n AutoComplete.prototype.focusedIndex = function (value) {\n var _this = this;\n\n var _a = this.props,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n textField = _a.textField;\n return this.state.focusedItem !== undefined ? data.findIndex(function (i) {\n return areSame(i, _this.state.focusedItem, textField);\n }) : Math.max(0, data.indexOf(getFocusedItem(data, value !== undefined ? value : this.value, textField)));\n };\n /**\n * @hidden\n */\n\n\n AutoComplete.propTypes = __assign({}, DropDownBase.basicPropTypes, {\n suggest: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n placeholder: PropTypes.string,\n value: PropTypes.string,\n defaultValue: PropTypes.string,\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n readonly: PropTypes.bool\n });\n /**\n * @hidden\n */\n\n AutoComplete.defaultProps = __assign({}, DropDownBase.defaultProps);\n return AutoComplete;\n}(React.Component);\n\nexport default AutoComplete;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nvar tagClassName = 'k-button';\nvar focusedTagClassName = tagClassName + ' k-state-focused';\n\nvar preventDefault = function preventDefault(event) {\n return event.preventDefault();\n};\n\nvar stopPropagation = function stopPropagation(event) {\n return event.stopPropagation();\n};\n/**\n * @hidden\n */\n\n\nvar TagList =\n/** @class */\nfunction (_super) {\n __extends(TagList, _super);\n\n function TagList() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TagList.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n data = _a.data,\n guid = _a.guid;\n return React.createElement(\"ul\", {\n className: \"k-reset\",\n role: \"listbox\",\n id: 'tagslist-' + guid\n }, data.map(function (tagData) {\n var tag = React.createElement(\"li\", {\n className: tagData === _this.props.focused ? focusedTagClassName : tagClassName,\n key: tagData.text,\n id: \"tag-\" + guid + \"-\" + tagData.text.replace(/\\s+/g, '-'),\n onMouseDown: preventDefault,\n onClick: stopPropagation,\n \"aria-selected\": true,\n role: \"option\",\n \"aria-setsize\": data.length\n }, React.createElement(\"span\", null, tagData.text), React.createElement(\"span\", {\n \"aria-label\": \"delete\",\n className: \"k-select\",\n onClick: function onClick(e) {\n return _this.props.onTagDelete.call(undefined, tagData.data, e);\n }\n }, React.createElement(\"span\", {\n className: \"k-icon k-i-close\"\n })));\n return _this.props.tagRender ? _this.props.tagRender(tagData, tag) : tag;\n }));\n };\n\n return TagList;\n}(React.Component);\n\nexport default TagList;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, Keys, FloatingLabel, guid } from '@progress/kendo-react-common';\nimport ListContainer from '../common/ListContainer';\nimport List from '../common/List';\nimport TagList from './TagList';\nimport SearchBar from '../common/SearchBar';\nimport DropDownBase from '../common/DropDownBase';\nimport { ActiveDescendant } from './../common/settings';\nimport { itemIndexStartsWith, getItemValue, areSame, matchDataCollections, removeDataItems, isPresent, preventDefaultNonInputs } from '../common/utils';\nvar VALIDATION_MESSAGE = 'Please enter a valid value!';\n\nvar preventDefault = function preventDefault(event) {\n return event.preventDefault();\n};\n\nvar matchTags = function matchTags(tag1, tag2, key) {\n if (!!tag1 !== !!tag2 || tag1.text !== tag2.text) {\n return false;\n }\n\n return tag1 === tag2 || matchDataCollections(tag1.data, tag2.data, key);\n};\n\nvar isCustom = function isCustom(type) {\n return type === FocusedItemType.CustomItem;\n};\n\nvar FocusedItemType;\n\n(function (FocusedItemType) {\n FocusedItemType[FocusedItemType[\"None\"] = 0] = \"None\";\n FocusedItemType[FocusedItemType[\"ListItem\"] = 1] = \"ListItem\";\n FocusedItemType[FocusedItemType[\"CustomItem\"] = 2] = \"CustomItem\";\n})(FocusedItemType || (FocusedItemType = {}));\n/**\n * Represents the [KendoReact MultiSelect component]({% slug overview_multiselect %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * multiselect = null;\n * render() {\n * return (\n *
    \n * this.multiselect = component}\n * />\n * \n *
    \n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\n\n\nvar MultiSelect =\n/** @class */\nfunction (_super) {\n __extends(MultiSelect, _super);\n\n function MultiSelect() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n\n\n _this.state = {\n activedescendant: ActiveDescendant.PopupList\n };\n _this._valueItemsDuringOnChange = null;\n _this._inputId = guid();\n _this.base = new DropDownBase(_this);\n _this._tags = [];\n _this._skipFocusEvent = false;\n /**\n * @hidden\n */\n\n _this.handleItemSelect = function (index, state) {\n var _a = _this.props,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n dataItemKey = _a.dataItemKey,\n virtual = _a.virtual;\n var skip = virtual ? virtual.skip : 0;\n var dataItem = data[index - skip];\n\n var indexInValue = _this.value.findIndex(function (i) {\n return areSame(i, dataItem, dataItemKey);\n });\n\n var newItems = [];\n\n if (indexInValue !== -1) {\n // item is already selected\n newItems = _this.value;\n newItems.splice(indexInValue, 1);\n } else {\n newItems = _this.value.concat([dataItem]);\n }\n\n var text = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n\n if (text) {\n if (_this.state.text) {\n state.data.text = '';\n }\n\n _this.base.filterChanged('', state);\n }\n\n if (_this.state.focusedIndex !== undefined) {\n state.data.focusedIndex = undefined;\n }\n\n _this.triggerOnChange(newItems, state);\n\n _this.base.triggerPageChangeCornerItems(dataItem, state);\n };\n /**\n * @hidden\n */\n\n\n _this.onTagDelete = function (itemsToRemove, event) {\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n\n var state = _this.base.initState();\n\n state.syntheticEvent = event;\n\n if (opened) {\n _this.base.togglePopup(state);\n }\n\n if (!_this.state.focused) {\n state.data.focused = true;\n }\n\n var selected = _this.value;\n removeDataItems(selected, itemsToRemove, _this.props.dataItemKey);\n\n _this.triggerOnChange(selected, state);\n\n _this.applyState(state);\n };\n /**\n * @hidden\n */\n\n\n _this.itemFocus = function (index, state) {\n var _a = _this.props,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n allowCustom = _a.allowCustom,\n virtual = _a.virtual;\n var skip = virtual ? virtual.skip : 0;\n var text = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n\n var focusedIndex = _this.getFocusedState().focusedIndex;\n\n var customItem = allowCustom && text;\n var nextFocusedItem = data[index - skip];\n\n if (nextFocusedItem && focusedIndex !== index) {\n if (_this.state.focusedIndex !== index) {\n state.data.focusedIndex = index;\n state.data.activedescendant = ActiveDescendant.PopupList;\n }\n } else if (customItem && index === -1) {\n if (_this.state.focusedIndex !== undefined) {\n state.data.focusedIndex = undefined;\n }\n }\n\n _this.base.triggerPageChangeCornerItems(nextFocusedItem, state);\n };\n\n _this.searchbarRef = function (searchbar) {\n var input = _this._input = searchbar && searchbar.input;\n\n if (input && _this.state.focused) {\n setTimeout(function () {\n return input.focus();\n }, 0);\n }\n };\n\n _this.onChangeHandler = function (event) {\n var state = _this.base.initState();\n\n var value = event.currentTarget.value;\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n state.syntheticEvent = event;\n\n if (_this.props.filter === undefined) {\n state.data.text = value;\n }\n\n state.data.focusedIndex = undefined;\n\n if (!opened) {\n _this.base.togglePopup(state);\n }\n\n _this.base.filterChanged(value, state);\n\n _this.applyState(state);\n };\n\n _this.clearButtonClick = function (event) {\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n\n var state = _this.base.initState();\n\n state.syntheticEvent = event;\n event.stopPropagation();\n\n if (_this.value.length > 0) {\n _this.triggerOnChange([], state);\n }\n\n if (_this.state.focusedIndex !== undefined) {\n state.data.focusedIndex = undefined;\n }\n\n if (opened) {\n _this.base.togglePopup(state);\n }\n\n var text = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n\n if (isPresent(text) && text !== '') {\n _this.base.filterChanged('', state);\n }\n\n if (_this.state.text) {\n state.data.text = '';\n }\n\n _this.applyState(state);\n };\n\n _this.onInputKeyDown = function (event) {\n var keyCode = event.keyCode;\n var text = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n\n var focusedItem = _this.getFocusedState().focusedItem;\n\n var state = _this.base.initState();\n\n state.syntheticEvent = event;\n\n if (!text && _this.value.length > 0 && (keyCode === Keys.left || keyCode === Keys.right || keyCode === Keys.home || keyCode === Keys.end || keyCode === Keys.delete || keyCode === Keys.backspace)) {\n return _this.onTagsNavigate(event, state);\n }\n\n var togglePopup = function togglePopup() {\n event.preventDefault();\n\n _this.base.togglePopup(state);\n\n _this.applyState(state);\n };\n\n if (opened) {\n if (event.altKey && keyCode === Keys.up) {\n togglePopup();\n } else if (keyCode === Keys.up || keyCode === Keys.down) {\n event.preventDefault();\n\n _this.onNavigate(state, keyCode);\n } else if (keyCode === Keys.enter) {\n event.preventDefault();\n\n if (_this.props.allowCustom && text && focusedItem === null) {\n _this.customItemSelect(event);\n } else {\n _this.selectFocusedItem(event);\n }\n } else if (keyCode === Keys.esc) {\n togglePopup();\n }\n } else if (event.altKey && keyCode === Keys.down) {\n togglePopup();\n }\n };\n\n _this.renderListContainer = function () {\n var base = _this.base;\n var _a = _this.props,\n header = _a.header,\n footer = _a.footer,\n allowCustom = _a.allowCustom,\n dir = _a.dir;\n\n var popupSettings = _this.base.getPopupSettings();\n\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var text = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n var virtual = _this.props.virtual !== undefined;\n var popupWidth = popupSettings.width !== undefined ? popupSettings.width : base.popupWidth;\n var listContainerProps = {\n onMouseDown: preventDefault,\n dir: dir !== undefined ? dir : base.dirCalculated,\n onBlur: _this.handleBlur,\n width: popupWidth,\n popupSettings: {\n className: classNames('k-list-container k-reset', popupSettings.className),\n animate: popupSettings.animate,\n anchor: _this.element || undefined,\n show: opened,\n open: _this.onPopupOpened,\n close: _this.onPopupClosed\n }\n };\n\n var focusedType = _this.getFocusedState().focusedType;\n\n var customItem = allowCustom && text && React.createElement(\"div\", {\n className: \"k-list\",\n key: \"customitem\",\n onClick: _this.customItemSelect\n }, React.createElement(\"div\", {\n className: classNames('k-item k-custom-item', {\n 'k-state-focused': isCustom(focusedType)\n })\n }, text, React.createElement(\"span\", {\n className: \"k-icon k-i-plus\",\n style: {\n float: 'right'\n }\n })));\n return React.createElement(ListContainer, __assign({}, listContainerProps), virtual && header, _this.base.renderScrollWrapper(!virtual ? [header, customItem, _this.renderList(), footer, _this.base.renderScrollElement()] : [customItem, _this.renderList(), _this.base.renderScrollElement()]), virtual && footer);\n };\n\n _this.renderList = function () {\n var _a = _this.props,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n textField = _a.textField,\n listNoDataRender = _a.listNoDataRender,\n itemRender = _a.itemRender,\n dataItemKey = _a.dataItemKey,\n virtual = _a.virtual;\n var vs = _this.base.vs;\n var skip = virtual ? virtual.skip : 0;\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n\n var focusedIndex = _this.getFocusedState().focusedIndex;\n\n var popupSettings = _this.base.getPopupSettings();\n\n var translate = \"translateY(\" + vs.translate + \"px)\";\n return React.createElement(List, {\n id: _this.base.listBoxId,\n show: opened,\n data: data.slice(),\n focusedIndex: focusedIndex - skip,\n value: _this.value,\n textField: textField,\n valueField: dataItemKey,\n optionsGuid: _this.base.guid,\n listRef: function listRef(list) {\n return vs.list = _this.base.list = list;\n },\n wrapperStyle: vs.enabled ? {\n float: 'left',\n width: '100%'\n } : {\n maxHeight: popupSettings.height\n },\n wrapperCssClass: vs.enabled ? undefined : 'k-list-scroller',\n listStyle: vs.enabled ? {\n transform: translate\n } : undefined,\n key: \"listKey\",\n skip: skip,\n onClick: _this.handleItemClick,\n itemRender: itemRender,\n noDataRender: listNoDataRender\n });\n };\n\n _this.customItemSelect = function (event) {\n var _a;\n\n var itemText = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n var textField = _this.props.textField;\n\n if (!itemText) {\n return;\n }\n\n var state = _this.base.initState();\n\n state.syntheticEvent = event;\n var item = textField ? (_a = {}, _a[textField] = itemText, _a) : itemText;\n\n if (_this.state.text !== undefined) {\n state.data.text = '';\n }\n\n state.data.focusedIndex = undefined;\n\n _this.base.filterChanged('', state);\n\n var newItems = _this.value.concat([item]);\n\n _this.triggerOnChange(newItems, state);\n\n _this.base.togglePopup(state);\n\n _this.applyState(state);\n };\n\n _this.handleWrapperClick = function (event) {\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var input = _this._input;\n\n if (!opened && input) {\n _this.focusElement(input);\n }\n\n var state = _this.base.initState();\n\n state.syntheticEvent = event;\n\n if (!_this.state.focused) {\n state.events.push({\n type: 'onFocus'\n });\n state.data.focused = true;\n }\n\n _this.base.togglePopup(state);\n\n _this.applyState(state);\n };\n\n _this.handleItemClick = function (index, event) {\n var state = _this.base.initState();\n\n state.syntheticEvent = event;\n\n _this.handleItemSelect(index, state);\n\n if (_this.props.autoClose) {\n _this.base.togglePopup(state);\n }\n\n _this.applyState(state);\n };\n\n _this.handleBlur = function (event) {\n if (!_this.state.focused || _this._skipFocusEvent) {\n return;\n }\n\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n\n var state = _this.base.initState();\n\n var _a = _this.props,\n allowCustom = _a.allowCustom,\n filterable = _a.filterable;\n state.syntheticEvent = event;\n state.data.focused = false;\n state.events.push({\n type: 'onBlur'\n });\n\n if (opened) {\n if (_this.state.opened) {\n state.data.opened = false;\n }\n\n state.events.push({\n type: 'onClose'\n });\n }\n\n if (!allowCustom && !filterable && _this.state.text) {\n state.data.text = '';\n }\n\n _this.applyState(state);\n };\n\n _this.handleFocus = function (event) {\n if (_this._skipFocusEvent) {\n return;\n }\n\n _this.base.handleFocus(event);\n };\n\n _this.onPopupOpened = function () {\n if (_this._input && _this.state.focused) {\n _this.focusElement(_this._input);\n }\n };\n\n _this.onPopupClosed = function () {\n if (_this.state.focused) {\n setTimeout(function () {\n if (_this.state.focused) {\n _this.focusElement(_this._input);\n }\n }, 0);\n }\n };\n\n _this.setValidity = function () {\n if (_this._input && _this._input.setCustomValidity) {\n _this._input.setCustomValidity(_this.validity.valid ? '' : _this.props.validationMessage || VALIDATION_MESSAGE);\n }\n };\n\n return _this;\n }\n\n Object.defineProperty(MultiSelect.prototype, \"element\", {\n /**\n * @hidden\n */\n get: function get() {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MultiSelect.prototype, \"value\", {\n /**\n * Represents the value of the MultiSelect.\n */\n get: function get() {\n var result = [];\n\n if (this._valueItemsDuringOnChange) {\n result.push.apply(result, this._valueItemsDuringOnChange);\n } else if (this.props.value) {\n result.push.apply(result, this.props.value);\n } else if (this.state.value) {\n result.push.apply(result, this.state.value);\n } else if (this.props.defaultValue) {\n result.push.apply(result, this.props.defaultValue);\n }\n\n return result;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MultiSelect.prototype, \"name\", {\n /**\n * Gets the `name` property of the MultiSelect.\n */\n get: function get() {\n return this.props.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MultiSelect.prototype, \"validity\", {\n /**\n * Represents the validity state into which the MultiSelect is set.\n */\n get: function get() {\n var customError = this.props.validationMessage !== undefined;\n var isValid = !this.required || this.value !== null && this.value.length > 0 && 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(MultiSelect.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function get() {\n return this.props.required !== undefined ? this.props.required : MultiSelect.defaultProps.required;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MultiSelect.prototype, \"validityStyles\", {\n get: function get() {\n return this.props.validityStyles !== undefined ? this.props.validityStyles : MultiSelect.defaultProps.validityStyles;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n MultiSelect.prototype.componentDidUpdate = function (prevProps, prevState) {\n var _a = this.props,\n virtual = _a.virtual,\n data = _a.data;\n var skip = virtual ? virtual.skip : 0;\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 var popupSettings = this.base.getPopupSettings();\n\n if (!popupSettings.animate && closing) {\n this.onPopupClosed();\n }\n\n if (virtual && virtual.total !== prevTotal) {\n this.base.vs.calcScrollElementHeight();\n this.base.vs.reset();\n } else {\n var _b = this.getFocusedState(),\n focusedItem = _b.focusedItem,\n focusedIndex = _b.focusedIndex;\n\n var focusedItemChanged = focusedIndex !== undefined && prevState.focusedIndex !== focusedIndex;\n var prevData = prevProps.data;\n\n if (opening && virtual) {\n this.base.scrollToVirtualItem(virtual, focusedIndex - skip);\n } else if (opening && !virtual) {\n this.base.scrollToItem(focusedIndex);\n } else if (opened && prevOpened && focusedItem && (focusedItemChanged || prevData !== data)) {\n this.base.scrollToItem(focusedIndex - skip);\n }\n }\n\n this.setValidity();\n };\n /**\n * @hidden\n */\n\n\n MultiSelect.prototype.componentDidMount = function () {\n this.base.didMount();\n this.setValidity();\n };\n /**\n * @hidden\n */\n\n\n MultiSelect.prototype.onNavigate = function (state, keyCode) {\n var _a = this.props,\n allowCustom = _a.allowCustom,\n _b = _a.data,\n data = _b === void 0 ? [] : _b;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var text = this.props.filter !== undefined ? this.props.filter : this.state.text;\n\n var _c = this.getFocusedState(),\n focusedType = _c.focusedType,\n focusedIndex = _c.focusedIndex;\n\n var customItem = allowCustom && text;\n var customItemFocused = isCustom(focusedType);\n var base = this.base;\n var vs = base.vs;\n\n if (opened && keyCode === Keys.up && customItemFocused) {\n if (this.state.focusedIndex !== undefined) {\n state.data.focusedIndex = undefined;\n }\n } else {\n var newFocused = base.navigation.navigate({\n keyCode: keyCode,\n current: focusedIndex,\n max: (vs.enabled ? vs.total : data.length) - 1,\n min: customItem ? -1 : 0\n });\n\n if (newFocused !== undefined) {\n this.itemFocus(newFocused, state);\n }\n }\n\n this.applyState(state);\n };\n /**\n * @hidden\n */\n\n\n MultiSelect.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n style = _a.style,\n className = _a.className,\n label = _a.label,\n dir = _a.dir,\n disabled = _a.disabled,\n tags = _a.tags,\n textField = _a.textField,\n dataItemKey = _a.dataItemKey,\n virtual = _a.virtual;\n var _b = this.state,\n focused = _b.focused,\n text = _b.text,\n focusedTag = _b.focusedTag;\n var vs = this.base.vs;\n vs.enabled = virtual !== undefined;\n\n if (virtual !== undefined) {\n vs.skip = virtual.skip;\n vs.total = virtual.total;\n vs.pageSize = virtual.pageSize;\n }\n\n var tagsToRender = [];\n\n if (tags === undefined) {\n this.value.forEach(function (item) {\n tagsToRender.push({\n text: getItemValue(item, textField),\n data: [item]\n });\n });\n } else {\n tagsToRender.push.apply(tagsToRender, tags);\n }\n\n this.setItems(tagsToRender, this._tags);\n var isValid = !this.validityStyles || this.validity.valid;\n var component = React.createElement(\"span\", {\n ref: function ref(dropdown) {\n return _this._element = dropdown;\n },\n className: classNames('k-widget k-multiselect k-header', className, {\n 'k-state-focused': focused && !disabled,\n 'k-state-invalid': !isValid,\n 'k-state-disabled': disabled\n }),\n style: !label ? style : __assign({}, style, {\n width: undefined\n }),\n dir: dir,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur\n }, React.createElement(\"div\", {\n onClick: this.handleWrapperClick,\n ref: function ref(wrapper) {\n return _this.base.wrapper = wrapper;\n },\n className: \"k-multiselect-wrap k-floatwrap\",\n onMouseDown: preventDefaultNonInputs\n }, tagsToRender.length > 0 && React.createElement(TagList, {\n tagRender: this.props.tagRender,\n onTagDelete: this.onTagDelete,\n data: tagsToRender,\n guid: this.base.guid,\n focused: focusedTag ? tagsToRender.find(function (t) {\n return matchTags(t, focusedTag, dataItemKey);\n }) : undefined\n }), this.renderSearchbar(), this.props.loading && React.createElement(\"span\", {\n className: \"k-icon k-i-loading\"\n })), this.renderListContainer());\n return label ? React.createElement(FloatingLabel, {\n label: label,\n value: text || getItemValue(this.value[0], textField),\n style: {\n width: style ? style.width : undefined\n },\n children: component,\n valid: isValid,\n id: this._inputId\n }) : component;\n };\n\n MultiSelect.prototype.renderSearchbar = function () {\n var _a = this.state,\n activedescendant = _a.activedescendant,\n focusedTag = _a.focusedTag;\n var _b = this.props,\n disabled = _b.disabled,\n placeholder = _b.placeholder;\n var text = (this.props.filter !== undefined ? this.props.filter : this.state.text) || '';\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var focusedIndex = this.getFocusedState().focusedIndex;\n var clearButton = !!text || this.value.length > 0;\n var placeholderToShow = this.value.length === 0 && !text ? placeholder : undefined;\n var ariaActivedescendant = activedescendant === ActiveDescendant.TagsList && focusedTag !== undefined ? \"tag-\" + this.base.guid + \"-\" + focusedTag.text.replace(/\\s+/g, '-') : \"option-\" + this.base.guid + \"-\" + focusedIndex;\n return React.createElement(SearchBar, {\n id: this._inputId,\n size: Math.max((placeholderToShow || '').length, text.length, 1),\n tabIndex: this.props.tabIndex,\n accessKey: this.props.accessKey,\n placeholder: placeholderToShow,\n value: text,\n onChange: this.onChangeHandler,\n onKeyDown: this.onInputKeyDown,\n ref: this.searchbarRef,\n disabled: disabled,\n expanded: opened,\n owns: this.base.listBoxId,\n activedescendant: ariaActivedescendant,\n describedby: 'tagslist-' + this.base.guid,\n clearButton: clearButton,\n clearButtonClick: this.clearButtonClick\n });\n };\n\n MultiSelect.prototype.onTagsNavigate = function (event, state) {\n var keyCode = event.keyCode;\n var focusedTag = this.state.focusedTag;\n var tags = this._tags;\n var itemsKey = this.props.dataItemKey;\n var focusedIndex = focusedTag ? tags.findIndex(function (t) {\n return matchTags(t, focusedTag, itemsKey);\n }) : -1;\n var newFocusedTag = undefined;\n var hasFocused = focusedIndex !== -1;\n\n if (keyCode === Keys.left) {\n if (hasFocused) {\n focusedIndex = Math.max(0, focusedIndex - 1);\n } else {\n focusedIndex = tags.length - 1;\n }\n\n newFocusedTag = tags[focusedIndex];\n } else if (keyCode === Keys.right) {\n if (focusedIndex === tags.length - 1) {\n newFocusedTag = undefined;\n } else if (hasFocused) {\n focusedIndex = Math.min(tags.length - 1, focusedIndex + 1);\n newFocusedTag = tags[focusedIndex];\n }\n } else if (keyCode === Keys.home) {\n newFocusedTag = tags[0];\n } else if (keyCode === Keys.end) {\n newFocusedTag = tags[tags.length - 1];\n } else if (keyCode === Keys.delete) {\n if (hasFocused) {\n var items = this.value;\n removeDataItems(items, tags[focusedIndex].data, itemsKey);\n this.triggerOnChange(items, state);\n }\n } else if (keyCode === Keys.backspace) {\n var items = this.value;\n\n if (hasFocused) {\n removeDataItems(items, tags[focusedIndex].data, itemsKey);\n this.triggerOnChange(items, state);\n } else if (!hasFocused && tags.length) {\n var removed = tags.pop();\n removeDataItems(items, removed.data, itemsKey);\n this.triggerOnChange(items, state);\n }\n }\n\n if (newFocusedTag !== focusedTag) {\n state.data.focusedTag = newFocusedTag;\n state.data.activedescendant = ActiveDescendant.TagsList;\n }\n\n this.applyState(state);\n };\n\n MultiSelect.prototype.triggerOnChange = function (items, state) {\n if (this.props.value === undefined) {\n state.data.value = items.slice();\n }\n\n this._valueItemsDuringOnChange = [];\n this.setItems(items, this._valueItemsDuringOnChange);\n state.events.push({\n type: 'onChange'\n });\n };\n\n MultiSelect.prototype.selectFocusedItem = function (event) {\n var _a = this.props,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n virtual = _a.virtual;\n var focusedIndex = this.getFocusedState().focusedIndex;\n var skip = virtual ? virtual.skip : 0;\n\n if (data[focusedIndex - skip] !== undefined) {\n this.handleItemClick(focusedIndex, event);\n }\n };\n\n MultiSelect.prototype.setItems = function (srcItems, destItems) {\n destItems.length = 0;\n destItems.push.apply(destItems, srcItems);\n };\n\n MultiSelect.prototype.getFocusedState = function () {\n var focusedIndex = this.state.focusedIndex;\n var text = this.props.filter !== undefined ? this.props.filter : this.state.text;\n var _a = this.props,\n allowCustom = _a.allowCustom,\n _b = _a.data,\n data = _b === void 0 ? [] : _b,\n dataItemKey = _a.dataItemKey,\n virtual = _a.virtual,\n textField = _a.textField;\n var skip = virtual && virtual.skip || 0;\n var focusedInd;\n\n if (focusedIndex !== undefined) {\n return {\n focusedIndex: focusedIndex,\n focusedItem: data[focusedIndex - skip],\n focusedType: FocusedItemType.ListItem\n };\n }\n\n var selected = this.value;\n\n if (allowCustom && text) {\n return {\n focusedItem: null,\n focusedIndex: -1,\n focusedType: FocusedItemType.CustomItem\n };\n } else if (text) {\n focusedInd = itemIndexStartsWith(data, text, textField);\n return {\n focusedItem: data[focusedInd],\n focusedIndex: focusedInd + skip,\n focusedType: FocusedItemType.ListItem\n };\n } else if (selected.length) {\n var last_1 = selected[selected.length - 1];\n focusedInd = data.findIndex(function (i) {\n return areSame(i, last_1, dataItemKey);\n });\n\n if (data[focusedInd] !== undefined) {\n return {\n focusedIndex: focusedInd + skip,\n focusedItem: data[focusedInd],\n focusedType: FocusedItemType.ListItem\n };\n }\n\n return {\n focusedType: FocusedItemType.None,\n focusedIndex: -1\n };\n }\n\n return skip === 0 ? {\n focusedItem: data[0],\n focusedIndex: 0,\n focusedType: FocusedItemType.ListItem\n } : {\n focusedType: FocusedItemType.None,\n focusedIndex: -1\n };\n };\n\n MultiSelect.prototype.focusElement = function (element) {\n var _this = this;\n\n this._skipFocusEvent = true;\n element.focus();\n setTimeout(function () {\n return _this._skipFocusEvent = false;\n }, 30);\n };\n\n MultiSelect.prototype.applyState = function (state) {\n this.base.applyState(state);\n this._valueItemsDuringOnChange = null;\n };\n /**\n * @hidden\n */\n\n\n MultiSelect.propTypes = __assign({}, DropDownBase.propTypes, {\n autoClose: PropTypes.bool,\n value: PropTypes.arrayOf(PropTypes.any),\n defaultValue: PropTypes.arrayOf(PropTypes.any),\n dataItemKey: PropTypes.string,\n placeholder: PropTypes.string,\n tags: PropTypes.arrayOf(PropTypes.shape({\n text: PropTypes.string,\n data: PropTypes.arrayOf(PropTypes.any)\n })),\n tagRender: PropTypes.func\n });\n /**\n * @hidden\n */\n\n MultiSelect.defaultProps = __assign({}, DropDownBase.defaultProps, {\n autoClose: true,\n required: false\n });\n return MultiSelect;\n}(React.Component);\n\nexport default MultiSelect;","import DropDownList from './DropDownList/DropDownList';\nimport ComboBox from './ComboBox/ComboBox';\nimport AutoComplete from './AutoComplete/AutoComplete';\nimport MultiSelect from './MultiSelect/MultiSelect';\nexport { AutoComplete, DropDownList, ComboBox, MultiSelect };","// This file is a workaround for a bug in web browsers' \"native\"\n// ES6 importing system which is uncapable of importing \"*.json\" files.\n// https://github.com/catamphetamine/libphonenumber-js/issues/239\nexport default {\n \"version\": 4,\n \"country_calling_codes\": {\n \"1\": [\"US\", \"AG\", \"AI\", \"AS\", \"BB\", \"BM\", \"BS\", \"CA\", \"DM\", \"DO\", \"GD\", \"GU\", \"JM\", \"KN\", \"KY\", \"LC\", \"MP\", \"MS\", \"PR\", \"SX\", \"TC\", \"TT\", \"VC\", \"VG\", \"VI\"],\n \"7\": [\"RU\", \"KZ\"],\n \"20\": [\"EG\"],\n \"27\": [\"ZA\"],\n \"30\": [\"GR\"],\n \"31\": [\"NL\"],\n \"32\": [\"BE\"],\n \"33\": [\"FR\"],\n \"34\": [\"ES\"],\n \"36\": [\"HU\"],\n \"39\": [\"IT\", \"VA\"],\n \"40\": [\"RO\"],\n \"41\": [\"CH\"],\n \"43\": [\"AT\"],\n \"44\": [\"GB\", \"GG\", \"IM\", \"JE\"],\n \"45\": [\"DK\"],\n \"46\": [\"SE\"],\n \"47\": [\"NO\", \"SJ\"],\n \"48\": [\"PL\"],\n \"49\": [\"DE\"],\n \"51\": [\"PE\"],\n \"52\": [\"MX\"],\n \"53\": [\"CU\"],\n \"54\": [\"AR\"],\n \"55\": [\"BR\"],\n \"56\": [\"CL\"],\n \"57\": [\"CO\"],\n \"58\": [\"VE\"],\n \"60\": [\"MY\"],\n \"61\": [\"AU\", \"CC\", \"CX\"],\n \"62\": [\"ID\"],\n \"63\": [\"PH\"],\n \"64\": [\"NZ\"],\n \"65\": [\"SG\"],\n \"66\": [\"TH\"],\n \"81\": [\"JP\"],\n \"82\": [\"KR\"],\n \"84\": [\"VN\"],\n \"86\": [\"CN\"],\n \"90\": [\"TR\"],\n \"91\": [\"IN\"],\n \"92\": [\"PK\"],\n \"93\": [\"AF\"],\n \"94\": [\"LK\"],\n \"95\": [\"MM\"],\n \"98\": [\"IR\"],\n \"211\": [\"SS\"],\n \"212\": [\"MA\", \"EH\"],\n \"213\": [\"DZ\"],\n \"216\": [\"TN\"],\n \"218\": [\"LY\"],\n \"220\": [\"GM\"],\n \"221\": [\"SN\"],\n \"222\": [\"MR\"],\n \"223\": [\"ML\"],\n \"224\": [\"GN\"],\n \"225\": [\"CI\"],\n \"226\": [\"BF\"],\n \"227\": [\"NE\"],\n \"228\": [\"TG\"],\n \"229\": [\"BJ\"],\n \"230\": [\"MU\"],\n \"231\": [\"LR\"],\n \"232\": [\"SL\"],\n \"233\": [\"GH\"],\n \"234\": [\"NG\"],\n \"235\": [\"TD\"],\n \"236\": [\"CF\"],\n \"237\": [\"CM\"],\n \"238\": [\"CV\"],\n \"239\": [\"ST\"],\n \"240\": [\"GQ\"],\n \"241\": [\"GA\"],\n \"242\": [\"CG\"],\n \"243\": [\"CD\"],\n \"244\": [\"AO\"],\n \"245\": [\"GW\"],\n \"246\": [\"IO\"],\n \"247\": [\"AC\"],\n \"248\": [\"SC\"],\n \"249\": [\"SD\"],\n \"250\": [\"RW\"],\n \"251\": [\"ET\"],\n \"252\": [\"SO\"],\n \"253\": [\"DJ\"],\n \"254\": [\"KE\"],\n \"255\": [\"TZ\"],\n \"256\": [\"UG\"],\n \"257\": [\"BI\"],\n \"258\": [\"MZ\"],\n \"260\": [\"ZM\"],\n \"261\": [\"MG\"],\n \"262\": [\"RE\", \"YT\"],\n \"263\": [\"ZW\"],\n \"264\": [\"NA\"],\n \"265\": [\"MW\"],\n \"266\": [\"LS\"],\n \"267\": [\"BW\"],\n \"268\": [\"SZ\"],\n \"269\": [\"KM\"],\n \"290\": [\"SH\", \"TA\"],\n \"291\": [\"ER\"],\n \"297\": [\"AW\"],\n \"298\": [\"FO\"],\n \"299\": [\"GL\"],\n \"350\": [\"GI\"],\n \"351\": [\"PT\"],\n \"352\": [\"LU\"],\n \"353\": [\"IE\"],\n \"354\": [\"IS\"],\n \"355\": [\"AL\"],\n \"356\": [\"MT\"],\n \"357\": [\"CY\"],\n \"358\": [\"FI\", \"AX\"],\n \"359\": [\"BG\"],\n \"370\": [\"LT\"],\n \"371\": [\"LV\"],\n \"372\": [\"EE\"],\n \"373\": [\"MD\"],\n \"374\": [\"AM\"],\n \"375\": [\"BY\"],\n \"376\": [\"AD\"],\n \"377\": [\"MC\"],\n \"378\": [\"SM\"],\n \"380\": [\"UA\"],\n \"381\": [\"RS\"],\n \"382\": [\"ME\"],\n \"383\": [\"XK\"],\n \"385\": [\"HR\"],\n \"386\": [\"SI\"],\n \"387\": [\"BA\"],\n \"389\": [\"MK\"],\n \"420\": [\"CZ\"],\n \"421\": [\"SK\"],\n \"423\": [\"LI\"],\n \"500\": [\"FK\"],\n \"501\": [\"BZ\"],\n \"502\": [\"GT\"],\n \"503\": [\"SV\"],\n \"504\": [\"HN\"],\n \"505\": [\"NI\"],\n \"506\": [\"CR\"],\n \"507\": [\"PA\"],\n \"508\": [\"PM\"],\n \"509\": [\"HT\"],\n \"590\": [\"GP\", \"BL\", \"MF\"],\n \"591\": [\"BO\"],\n \"592\": [\"GY\"],\n \"593\": [\"EC\"],\n \"594\": [\"GF\"],\n \"595\": [\"PY\"],\n \"596\": [\"MQ\"],\n \"597\": [\"SR\"],\n \"598\": [\"UY\"],\n \"599\": [\"CW\", \"BQ\"],\n \"670\": [\"TL\"],\n \"672\": [\"NF\"],\n \"673\": [\"BN\"],\n \"674\": [\"NR\"],\n \"675\": [\"PG\"],\n \"676\": [\"TO\"],\n \"677\": [\"SB\"],\n \"678\": [\"VU\"],\n \"679\": [\"FJ\"],\n \"680\": [\"PW\"],\n \"681\": [\"WF\"],\n \"682\": [\"CK\"],\n \"683\": [\"NU\"],\n \"685\": [\"WS\"],\n \"686\": [\"KI\"],\n \"687\": [\"NC\"],\n \"688\": [\"TV\"],\n \"689\": [\"PF\"],\n \"690\": [\"TK\"],\n \"691\": [\"FM\"],\n \"692\": [\"MH\"],\n \"850\": [\"KP\"],\n \"852\": [\"HK\"],\n \"853\": [\"MO\"],\n \"855\": [\"KH\"],\n \"856\": [\"LA\"],\n \"880\": [\"BD\"],\n \"886\": [\"TW\"],\n \"960\": [\"MV\"],\n \"961\": [\"LB\"],\n \"962\": [\"JO\"],\n \"963\": [\"SY\"],\n \"964\": [\"IQ\"],\n \"965\": [\"KW\"],\n \"966\": [\"SA\"],\n \"967\": [\"YE\"],\n \"968\": [\"OM\"],\n \"970\": [\"PS\"],\n \"971\": [\"AE\"],\n \"972\": [\"IL\"],\n \"973\": [\"BH\"],\n \"974\": [\"QA\"],\n \"975\": [\"BT\"],\n \"976\": [\"MN\"],\n \"977\": [\"NP\"],\n \"992\": [\"TJ\"],\n \"993\": [\"TM\"],\n \"994\": [\"AZ\"],\n \"995\": [\"GE\"],\n \"996\": [\"KG\"],\n \"998\": [\"UZ\"]\n },\n \"countries\": {\n \"AC\": [\"247\", \"00\", \"(?:[01589]\\\\d|[46])\\\\d{4}\", [5, 6]],\n \"AD\": [\"376\", \"00\", \"(?:1|6\\\\d)\\\\d{7}|[135-9]\\\\d{5}\", [6, 8, 9], [[\"(\\\\d{3})(\\\\d{3})\", \"$1 $2\", [\"[135-9]\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"1\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"6\"]]]],\n \"AE\": [\"971\", \"00\", \"(?:[4-7]\\\\d|9[0-689])\\\\d{7}|800\\\\d{2,9}|[2-4679]\\\\d{7}\", [5, 6, 7, 8, 9, 10, 11, 12], [[\"(\\\\d{3})(\\\\d{2,9})\", \"$1 $2\", [\"60|8\"]], [\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[236]|[479][2-8]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d)(\\\\d{5})\", \"$1 $2 $3\", [\"[479]\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"5\"], \"0$1\"]], \"0\"],\n \"AF\": [\"93\", \"00\", \"[2-7]\\\\d{8}\", [9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[2-7]\"], \"0$1\"]], \"0\"],\n \"AG\": [\"1\", \"011\", \"(?:268|[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"1|([457]\\\\d{6})$\", \"268$1\", 0, \"268\"],\n \"AI\": [\"1\", \"011\", \"(?:264|[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"1|([2457]\\\\d{6})$\", \"264$1\", 0, \"264\"],\n \"AL\": [\"355\", \"00\", \"(?:700\\\\d\\\\d|900)\\\\d{3}|8\\\\d{5,7}|(?:[2-5]|6\\\\d)\\\\d{7}\", [6, 7, 8, 9], [[\"(\\\\d{3})(\\\\d{3,4})\", \"$1 $2\", [\"80|9\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"4[2-6]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[2358][2-5]|4\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"[23578]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"6\"], \"0$1\"]], \"0\"],\n \"AM\": [\"374\", \"00\", \"(?:[1-489]\\\\d|55|60|77)\\\\d{6}\", [8], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"[89]0\"], \"0 $1\"], [\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"2|3[12]\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"1|47\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"[3-9]\"], \"0$1\"]], \"0\"],\n \"AO\": [\"244\", \"00\", \"[29]\\\\d{8}\", [9], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[29]\"]]]],\n \"AR\": [\"54\", \"00\", \"(?:11|[89]\\\\d\\\\d)\\\\d{8}|[2368]\\\\d{9}\", [10, 11], [[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\", \"$1 $2-$3\", [\"2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])\", \"2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)\", \"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\", \"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"], \"0$1\", 1], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2-$3\", [\"1\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1-$2-$3\", [\"[68]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2-$3\", [\"[23]\"], \"0$1\", 1], [\"(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})\", \"$2 15-$3-$4\", [\"9(?:2[2-469]|3[3-578])\", \"9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))\", \"9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)\", \"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\", \"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"], \"0$1\", 0, \"$1 $2 $3-$4\"], [\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$2 15-$3-$4\", [\"91\"], \"0$1\", 0, \"$1 $2 $3-$4\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\", \"$1-$2-$3\", [\"8\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$2 15-$3-$4\", [\"9\"], \"0$1\", 0, \"$1 $2 $3-$4\"]], \"0\", 0, \"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?\", \"9$1\"],\n \"AS\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|684|900)\\\\d{7}\", [10], 0, \"1\", 0, \"1|([267]\\\\d{6})$\", \"684$1\", 0, \"684\"],\n \"AT\": [\"43\", \"00\", \"1\\\\d{3,12}|2\\\\d{6,12}|43(?:(?:0\\\\d|5[02-9])\\\\d{3,9}|2\\\\d{4,5}|[3467]\\\\d{4}|8\\\\d{4,6}|9\\\\d{4,7})|5\\\\d{4,12}|8\\\\d{7,12}|9\\\\d{8,12}|(?:[367]\\\\d|4[0-24-9])\\\\d{4,11}\", [4, 5, 6, 7, 8, 9, 10, 11, 12, 13], [[\"(\\\\d)(\\\\d{3,12})\", \"$1 $2\", [\"1(?:11|[2-9])\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})\", \"$1 $2\", [\"517\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3,5})\", \"$1 $2\", [\"5[079]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3,10})\", \"$1 $2\", [\"(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3,9})\", \"$1 $2\", [\"[2-467]|5[2-6]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"5\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4,7})\", \"$1 $2 $3\", [\"5\"], \"0$1\"]], \"0\"],\n \"AU\": [\"61\", \"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\", \"1(?:[0-79]\\\\d{7}(?:\\\\d(?:\\\\d{2})?)?|8[0-24-9]\\\\d{7})|[2-478]\\\\d{8}|1\\\\d{4,7}\", [5, 6, 7, 8, 9, 10, 12], [[\"(\\\\d{2})(\\\\d{3,4})\", \"$1 $2\", [\"16\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2,4})\", \"$1 $2 $3\", [\"16\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"14|4\"], \"0$1\"], [\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"[2378]\"], \"(0$1)\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"1(?:30|[89])\"]]], \"0\", 0, \"0|(183[12])\", 0, 0, 0, [[\"(?:(?:2(?:[0-26-9]\\\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\\\d|2[0-8]))\\\\d{3}|8(?:51(?:0(?:0[03-9]|[12479]\\\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\\\d|7[89]|9[0-4]))|(?:6[0-8]|[78]\\\\d)\\\\d{3}|9(?:[02-9]\\\\d{3}|1(?:(?:[0-58]\\\\d|6[0135-9])\\\\d|7(?:0[0-24-9]|[1-9]\\\\d)|9(?:[0-46-9]\\\\d|5[0-79])))))\\\\d{3}\", [9]], [\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\", [9]], [\"180(?:0\\\\d{3}|2)\\\\d{3}\", [7, 10]], [\"190[0-26]\\\\d{6}\", [10]], 0, 0, 0, [\"163\\\\d{2,6}\", [5, 6, 7, 8, 9]], [\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\", [9]], [\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\", [6, 8, 10, 12]]], \"0011\"],\n \"AW\": [\"297\", \"00\", \"(?:[25-79]\\\\d\\\\d|800)\\\\d{4}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[25-9]\"]]]],\n \"AX\": [\"358\", \"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\", \"2\\\\d{4,9}|35\\\\d{4,5}|(?:60\\\\d\\\\d|800)\\\\d{4,6}|7\\\\d{5,11}|(?:[14]\\\\d|3[0-46-9]|50)\\\\d{4,8}\", [5, 6, 7, 8, 9, 10, 11, 12], 0, \"0\", 0, 0, 0, 0, \"18\", 0, \"00\"],\n \"AZ\": [\"994\", \"00\", \"365\\\\d{6}|(?:[124579]\\\\d|60|88)\\\\d{7}\", [9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"90\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"1[28]|2|365|46\", \"1[28]|2|365[45]|46\", \"1[28]|2|365(?:4|5[02])|46\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[13-9]\"], \"0$1\"]], \"0\"],\n \"BA\": [\"387\", \"00\", \"6\\\\d{8}|(?:[35689]\\\\d|49|70)\\\\d{6}\", [8, 9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"6[1-3]|[7-9]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2-$3\", [\"[3-5]|6[56]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"6\"], \"0$1\"]], \"0\"],\n \"BB\": [\"1\", \"011\", \"(?:246|[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"1|([2-9]\\\\d{6})$\", \"246$1\", 0, \"246\"],\n \"BD\": [\"880\", \"00\", \"[1-469]\\\\d{9}|8[0-79]\\\\d{7,8}|[2-79]\\\\d{8}|[2-9]\\\\d{7}|[3-9]\\\\d{6}|[57-9]\\\\d{5}\", [6, 7, 8, 9, 10], [[\"(\\\\d{2})(\\\\d{4,6})\", \"$1-$2\", [\"31[5-8]|[459]1\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3,7})\", \"$1-$2\", [\"3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3,6})\", \"$1-$2\", [\"[13-9]|22\"], \"0$1\"], [\"(\\\\d)(\\\\d{7,8})\", \"$1-$2\", [\"2\"], \"0$1\"]], \"0\"],\n \"BE\": [\"32\", \"00\", \"4\\\\d{8}|[1-9]\\\\d{7}\", [8, 9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"(?:80|9)0\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[239]|4[23]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[15-8]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"4\"], \"0$1\"]], \"0\"],\n \"BF\": [\"226\", \"00\", \"[025-7]\\\\d{7}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[025-7]\"]]]],\n \"BG\": [\"359\", \"00\", \"[2-7]\\\\d{6,7}|[89]\\\\d{6,8}|2\\\\d{5}\", [6, 7, 8, 9], [[\"(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"2\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"43[1-6]|70[1-9]\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"2\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\", \"$1 $2 $3\", [\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"(?:70|8)0\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\", \"$1 $2 $3\", [\"43[1-7]|7\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[48]|9[08]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"9\"], \"0$1\"]], \"0\"],\n \"BH\": [\"973\", \"00\", \"[136-9]\\\\d{7}\", [8], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[13679]|8[047]\"]]]],\n \"BI\": [\"257\", \"00\", \"(?:[267]\\\\d|31)\\\\d{6}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[2367]\"]]]],\n \"BJ\": [\"229\", \"00\", \"[25689]\\\\d{7}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[25689]\"]]]],\n \"BL\": [\"590\", \"00\", \"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\", [9], 0, \"0\", 0, 0, 0, 0, 0, [[\"590(?:2[7-9]|5[12]|87)\\\\d{4}\"], [\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\"], [\"80[0-5]\\\\d{6}\"], 0, 0, 0, 0, 0, [\"976[01]\\\\d{5}\"]]],\n \"BM\": [\"1\", \"011\", \"(?:441|[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"1|([2-8]\\\\d{6})$\", \"441$1\", 0, \"441\"],\n \"BN\": [\"673\", \"00\", \"[2-578]\\\\d{6}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[2-578]\"]]]],\n \"BO\": [\"591\", \"00(?:1\\\\d)?\", \"(?:[2-467]\\\\d\\\\d|8001)\\\\d{5}\", [8, 9], [[\"(\\\\d)(\\\\d{7})\", \"$1 $2\", [\"[23]|4[46]\"]], [\"(\\\\d{8})\", \"$1\", [\"[67]\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3\", [\"8\"]]], \"0\", 0, \"0(1\\\\d)?\"],\n \"BQ\": [\"599\", \"00\", \"(?:[34]1|7\\\\d)\\\\d{5}\", [7], 0, 0, 0, 0, 0, 0, \"[347]\"],\n \"BR\": [\"55\", \"00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)\", \"(?:[1-46-9]\\\\d\\\\d|5(?:[0-46-9]\\\\d|5[0-24679]))\\\\d{8}|[1-9]\\\\d{9}|[3589]\\\\d{8}|[34]\\\\d{7}\", [8, 9, 10, 11], [[\"(\\\\d{4})(\\\\d{4})\", \"$1-$2\", [\"300|4(?:0[02]|37)\", \"4(?:02|37)0|[34]00\"]], [\"(\\\\d{3})(\\\\d{2,3})(\\\\d{4})\", \"$1 $2 $3\", [\"(?:[358]|90)0\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2-$3\", [\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]\"], \"($1)\"], [\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\", \"$1 $2-$3\", [\"[16][1-9]|[2-57-9]\"], \"($1)\"]], \"0\", 0, \"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\\\d{10,11}))?\", \"$2\"],\n \"BS\": [\"1\", \"011\", \"(?:242|[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"1|([3-8]\\\\d{6})$\", \"242$1\", 0, \"242\"],\n \"BT\": [\"975\", \"00\", \"[17]\\\\d{7}|[2-8]\\\\d{6}\", [7, 8], [[\"(\\\\d)(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[2-68]|7[246]\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"1[67]|7\"]]]],\n \"BW\": [\"267\", \"00\", \"(?:0800|(?:[37]|800)\\\\d)\\\\d{6}|(?:[2-6]\\\\d|90)\\\\d{5}\", [7, 8, 10], [[\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"90\"]], [\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[24-6]|3[15-79]\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[37]\"]], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"0\"]], [\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\", \"$1 $2 $3\", [\"8\"]]]],\n \"BY\": [\"375\", \"810\", \"(?:[12]\\\\d|33|44|902)\\\\d{7}|8(?:0[0-79]\\\\d{5,7}|[1-7]\\\\d{9})|8(?:1[0-489]|[5-79]\\\\d)\\\\d{7}|8[1-79]\\\\d{6,7}|8[0-79]\\\\d{5}|8\\\\d{5}\", [6, 7, 8, 9, 10, 11], [[\"(\\\\d{3})(\\\\d{3})\", \"$1 $2\", [\"800\"], \"8 $1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2,4})\", \"$1 $2 $3\", [\"800\"], \"8 $1\"], [\"(\\\\d{4})(\\\\d{2})(\\\\d{3})\", \"$1 $2-$3\", [\"1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])\", \"1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])\"], \"8 0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2-$3-$4\", [\"1(?:[56]|7[467])|2[1-3]\"], \"8 0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2-$3-$4\", [\"[1-4]\"], \"8 0$1\"], [\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\", \"$1 $2 $3\", [\"[89]\"], \"8 $1\"]], \"8\", 0, \"0|80?\", 0, 0, 0, 0, \"8~10\"],\n \"BZ\": [\"501\", \"00\", \"(?:0800\\\\d|[2-8])\\\\d{6}\", [7, 11], [[\"(\\\\d{3})(\\\\d{4})\", \"$1-$2\", [\"[2-8]\"]], [\"(\\\\d)(\\\\d{3})(\\\\d{4})(\\\\d{3})\", \"$1-$2-$3-$4\", [\"0\"]]]],\n \"CA\": [\"1\", \"011\", \"(?:[2-8]\\\\d|90)\\\\d{8}\", [10], 0, \"1\", 0, 0, 0, 0, 0, [[\"(?:2(?:04|[23]6|[48]9|50)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|74)|5(?:06|1[49]|48|79|8[17])|6(?:04|13|39|47|72)|7(?:0[59]|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\\\d{6}\"], [\"\"], [\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"], [\"900[2-9]\\\\d{6}\"], [\"52(?:355[0-46-9]|4(?:5(?:2[024-9]|5[0-46-9])|60[1-9]|9(?:2[0-5]|49)))\\\\d{4}|52(?:3(?:[2-46-9][02-9]|5[02-46-9])|4(?:[2-478][02-9]|5[034]|6[2-9]|9[05-9])|7[2-4]\\\\d)\\\\d{5}|52[34][2-9]1[02-9]\\\\d{4}|(?:5(?:00|2[1256]|33|44|66|77|88)|622)[2-9]\\\\d{6}\"], 0, 0, 0, [\"600[2-9]\\\\d{6}\"]]],\n \"CC\": [\"61\", \"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\", \"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\", [6, 7, 8, 9, 10, 12], 0, \"0\", 0, \"0|([59]\\\\d{7})$\", \"8$1\", 0, 0, [[\"8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\\\d|70[23]|959))\\\\d{3}\", [9]], [\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\", [9]], [\"180(?:0\\\\d{3}|2)\\\\d{3}\", [7, 10]], [\"190[0-26]\\\\d{6}\", [10]], 0, 0, 0, 0, [\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\", [9]], [\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\", [6, 8, 10, 12]]], \"0011\"],\n \"CD\": [\"243\", \"00\", \"[189]\\\\d{8}|[1-68]\\\\d{6}\", [7, 9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"88\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"[1-6]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[89]\"], \"0$1\"]], \"0\"],\n \"CF\": [\"236\", \"00\", \"(?:[27]\\\\d{3}|8776)\\\\d{4}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[278]\"]]]],\n \"CG\": [\"242\", \"00\", \"222\\\\d{6}|(?:0\\\\d|80)\\\\d{7}\", [9], [[\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"8\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[02]\"]]]],\n \"CH\": [\"41\", \"00\", \"8\\\\d{11}|[2-9]\\\\d{8}\", [9], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"8[047]|90\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[2-79]|81\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4 $5\", [\"8\"], \"0$1\"]], \"0\"],\n \"CI\": [\"225\", \"00\", \"[02]\\\\d{9}\", [10], [[\"(\\\\d{2})(\\\\d{2})(\\\\d)(\\\\d{5})\", \"$1 $2 $3 $4\", [\"2\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3 $4\", [\"0\"]]]],\n \"CK\": [\"682\", \"00\", \"[2-578]\\\\d{4}\", [5], [[\"(\\\\d{2})(\\\\d{3})\", \"$1 $2\", [\"[2-578]\"]]]],\n \"CL\": [\"56\", \"(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0\", \"12300\\\\d{6}|6\\\\d{9,10}|[2-9]\\\\d{8}\", [9, 10, 11], [[\"(\\\\d{5})(\\\\d{4})\", \"$1 $2\", [\"219\", \"2196\"], \"($1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"44\"]], [\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"2[1-36]\"], \"($1)\"], [\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"9[2-9]\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])\"], \"($1)\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"60|8\"]], [\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"60\"]]]],\n \"CM\": [\"237\", \"00\", \"[26]\\\\d{8}|88\\\\d{6,7}\", [8, 9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"88\"]], [\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4 $5\", [\"[26]|88\"]]]],\n \"CN\": [\"86\", \"00|1(?:[12]\\\\d|79)\\\\d\\\\d00\", \"1[127]\\\\d{8,9}|2\\\\d{9}(?:\\\\d{2})?|[12]\\\\d{6,7}|86\\\\d{6}|(?:1[03-689]\\\\d|6)\\\\d{7,9}|(?:[3-579]\\\\d|8[0-57-9])\\\\d{6,9}\", [7, 8, 9, 10, 11, 12], [[\"(\\\\d{2})(\\\\d{5,6})\", \"$1 $2\", [\"(?:10|2[0-57-9])[19]\", \"(?:10|2[0-57-9])(?:10|9[56])\", \"(?:10|2[0-57-9])(?:100|9[56])\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{5,6})\", \"$1 $2\", [\"3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]\", \"(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]\", \"85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])\", \"85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"(?:4|80)0\"]], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"10|2(?:[02-57-9]|1[1-9])\", \"10|2(?:[02-57-9]|1[1-9])\", \"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{7,8})\", \"$1 $2\", [\"9\"]], [\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"80\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"[3-578]\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"1[3-9]\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3 $4\", [\"[12]\"], \"0$1\", 1]], \"0\", 0, \"0|(1(?:[12]\\\\d|79)\\\\d\\\\d)\", 0, 0, 0, 0, \"00\"],\n \"CO\": [\"57\", \"00(?:4(?:[14]4|56)|[579])\", \"(?:(?:1\\\\d|[36])\\\\d{3}|9101)\\\\d{6}|[124-8]\\\\d{7}\", [8, 10, 11], [[\"(\\\\d)(\\\\d{7})\", \"$1 $2\", [\"[146][2-9]|[2578]\"], \"($1)\"], [\"(\\\\d{3})(\\\\d{7})\", \"$1 $2\", [\"6\"], \"($1)\"], [\"(\\\\d{3})(\\\\d{7})\", \"$1 $2\", [\"[39]\"]], [\"(\\\\d)(\\\\d{3})(\\\\d{7})\", \"$1-$2-$3\", [\"1\"], \"0$1\", 0, \"$1 $2 $3\"]], \"0\", 0, \"0([3579]|4(?:[14]4|56))?\"],\n \"CR\": [\"506\", \"00\", \"(?:8\\\\d|90)\\\\d{8}|(?:[24-8]\\\\d{3}|3005)\\\\d{4}\", [8, 10], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[2-7]|8[3-9]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1-$2-$3\", [\"[89]\"]]], 0, 0, \"(19(?:0[0-2468]|1[09]|20|66|77|99))\"],\n \"CU\": [\"53\", \"119\", \"[27]\\\\d{6,7}|[34]\\\\d{5,7}|(?:5|8\\\\d\\\\d)\\\\d{7}\", [6, 7, 8, 10], [[\"(\\\\d{2})(\\\\d{4,6})\", \"$1 $2\", [\"2[1-4]|[34]\"], \"(0$1)\"], [\"(\\\\d)(\\\\d{6,7})\", \"$1 $2\", [\"7\"], \"(0$1)\"], [\"(\\\\d)(\\\\d{7})\", \"$1 $2\", [\"5\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{7})\", \"$1 $2\", [\"8\"], \"0$1\"]], \"0\"],\n \"CV\": [\"238\", \"0\", \"(?:[2-59]\\\\d\\\\d|800)\\\\d{4}\", [7], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"[2-589]\"]]]],\n \"CW\": [\"599\", \"00\", \"(?:[34]1|60|(?:7|9\\\\d)\\\\d)\\\\d{5}\", [7, 8], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[3467]\"]], [\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"9[4-8]\"]]], 0, 0, 0, 0, 0, \"[69]\"],\n \"CX\": [\"61\", \"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\", \"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\", [6, 7, 8, 9, 10, 12], 0, \"0\", 0, \"0|([59]\\\\d{7})$\", \"8$1\", 0, 0, [[\"8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\\\d|7(?:0[01]|1[0-2])|958))\\\\d{3}\", [9]], [\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\", [9]], [\"180(?:0\\\\d{3}|2)\\\\d{3}\", [7, 10]], [\"190[0-26]\\\\d{6}\", [10]], 0, 0, 0, 0, [\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\", [9]], [\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\", [6, 8, 10, 12]]], \"0011\"],\n \"CY\": [\"357\", \"00\", \"(?:[279]\\\\d|[58]0)\\\\d{6}\", [8], [[\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"[257-9]\"]]]],\n \"CZ\": [\"420\", \"00\", \"(?:[2-578]\\\\d|60)\\\\d{7}|9\\\\d{8,11}\", [9], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[2-8]|9[015-7]\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"96\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"9\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"9\"]]]],\n \"DE\": [\"49\", \"00\", \"[2579]\\\\d{5,14}|49(?:[34]0|69|8\\\\d)\\\\d\\\\d?|49(?:37|49|60|7[089]|9\\\\d)\\\\d{1,3}|49(?:1\\\\d|2[02-9]|3[2-689]|7[1-7])\\\\d{1,8}|(?:1|[368]\\\\d|4[0-8])\\\\d{3,13}|49(?:[05]\\\\d|[23]1|[46][1-8])\\\\d{1,9}\", [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [[\"(\\\\d{2})(\\\\d{3,13})\", \"$1 $2\", [\"3[02]|40|[68]9\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3,12})\", \"$1 $2\", [\"2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\", \"2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{2,11})\", \"$1 $2\", [\"[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]\", \"[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"138\"], \"0$1\"], [\"(\\\\d{5})(\\\\d{2,10})\", \"$1 $2\", [\"3\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{5,11})\", \"$1 $2\", [\"181\"], \"0$1\"], [\"(\\\\d{3})(\\\\d)(\\\\d{4,10})\", \"$1 $2 $3\", [\"1(?:3|80)|9\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{7,8})\", \"$1 $2\", [\"1[67]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{7,12})\", \"$1 $2\", [\"8\"], \"0$1\"], [\"(\\\\d{5})(\\\\d{6})\", \"$1 $2\", [\"185\", \"1850\", \"18500\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"7\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{7})\", \"$1 $2\", [\"18[68]\"], \"0$1\"], [\"(\\\\d{5})(\\\\d{6})\", \"$1 $2\", [\"15[0568]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{7})\", \"$1 $2\", [\"15[1279]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{8})\", \"$1 $2\", [\"18\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{7,8})\", \"$1 $2 $3\", [\"1(?:6[023]|7)\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{2})(\\\\d{7})\", \"$1 $2 $3\", [\"15[279]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{8})\", \"$1 $2 $3\", [\"15\"], \"0$1\"]], \"0\"],\n \"DJ\": [\"253\", \"00\", \"(?:2\\\\d|77)\\\\d{6}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[27]\"]]]],\n \"DK\": [\"45\", \"00\", \"[2-9]\\\\d{7}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[2-9]\"]]]],\n \"DM\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|767|900)\\\\d{7}\", [10], 0, \"1\", 0, \"1|([2-7]\\\\d{6})$\", \"767$1\", 0, \"767\"],\n \"DO\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, 0, 0, 0, \"8001|8[024]9\"],\n \"DZ\": [\"213\", \"00\", \"(?:[1-4]|[5-79]\\\\d|80)\\\\d{7}\", [8, 9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[1-4]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"9\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[5-8]\"], \"0$1\"]], \"0\"],\n \"EC\": [\"593\", \"00\", \"1\\\\d{9,10}|(?:[2-7]|9\\\\d)\\\\d{7}\", [8, 9, 10, 11], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2-$3\", [\"[2-7]\"], \"(0$1)\", 0, \"$1-$2-$3\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"9\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"1\"]]], \"0\"],\n \"EE\": [\"372\", \"00\", \"8\\\\d{9}|[4578]\\\\d{7}|(?:[3-8]\\\\d|90)\\\\d{5}\", [7, 8, 10], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88\", \"[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88\"]], [\"(\\\\d{4})(\\\\d{3,4})\", \"$1 $2\", [\"[45]|8(?:00|[1-49])\", \"[45]|8(?:00[1-9]|[1-49])\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3\", [\"7\"]], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"8\"]]]],\n \"EG\": [\"20\", \"00\", \"[189]\\\\d{8,9}|[24-6]\\\\d{8}|[135]\\\\d{7}\", [8, 9, 10], [[\"(\\\\d)(\\\\d{7,8})\", \"$1 $2\", [\"[23]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{6,7})\", \"$1 $2\", [\"1[35]|[4-6]|8[2468]|9[235-7]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[189]\"], \"0$1\"]], \"0\"],\n \"EH\": [\"212\", \"00\", \"[5-8]\\\\d{8}\", [9], 0, \"0\", 0, 0, 0, 0, \"528[89]\"],\n \"ER\": [\"291\", \"00\", \"[178]\\\\d{6}\", [7], [[\"(\\\\d)(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[178]\"], \"0$1\"]], \"0\"],\n \"ES\": [\"34\", \"00\", \"[5-9]\\\\d{8}\", [9], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[89]00\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[5-9]\"]]]],\n \"ET\": [\"251\", \"00\", \"(?:11|[2-59]\\\\d)\\\\d{7}\", [9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[1-59]\"], \"0$1\"]], \"0\"],\n \"FI\": [\"358\", \"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\", \"[1-35689]\\\\d{4}|7\\\\d{10,11}|(?:[124-7]\\\\d|3[0-46-9])\\\\d{8}|[1-9]\\\\d{5,8}\", [5, 6, 7, 8, 9, 10, 11, 12], [[\"(\\\\d)(\\\\d{4,9})\", \"$1 $2\", [\"[2568][1-8]|3(?:0[1-9]|[1-9])|9\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3,7})\", \"$1 $2\", [\"[12]00|[368]|70[07-9]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4,8})\", \"$1 $2\", [\"[1245]|7[135]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{6,10})\", \"$1 $2\", [\"7\"], \"0$1\"]], \"0\", 0, 0, 0, 0, \"1[03-79]|[2-9]\", 0, \"00\"],\n \"FJ\": [\"679\", \"0(?:0|52)\", \"45\\\\d{5}|(?:0800\\\\d|[235-9])\\\\d{6}\", [7, 11], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[235-9]|45\"]], [\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"0\"]]], 0, 0, 0, 0, 0, 0, 0, \"00\"],\n \"FK\": [\"500\", \"00\", \"[2-7]\\\\d{4}\", [5]],\n \"FM\": [\"691\", \"00\", \"(?:[39]\\\\d\\\\d|820)\\\\d{4}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[389]\"]]]],\n \"FO\": [\"298\", \"00\", \"[2-9]\\\\d{5}\", [6], [[\"(\\\\d{6})\", \"$1\", [\"[2-9]\"]]], 0, 0, \"(10(?:01|[12]0|88))\"],\n \"FR\": [\"33\", \"00\", \"[1-9]\\\\d{8}\", [9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"8\"], \"0 $1\"], [\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4 $5\", [\"[1-79]\"], \"0$1\"]], \"0\"],\n \"GA\": [\"241\", \"00\", \"(?:[067]\\\\d|11)\\\\d{6}|[2-7]\\\\d{6}\", [7, 8], [[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[2-7]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"0\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"11|[67]\"], \"0$1\"]], 0, 0, \"0(11\\\\d{6}|60\\\\d{6}|61\\\\d{6}|6[256]\\\\d{6}|7[467]\\\\d{6})\", \"$1\"],\n \"GB\": [\"44\", \"00\", \"[1-357-9]\\\\d{9}|[18]\\\\d{8}|8\\\\d{6}\", [7, 9, 10], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"800\", \"8001\", \"80011\", \"800111\", \"8001111\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"845\", \"8454\", \"84546\", \"845464\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{6})\", \"$1 $2\", [\"800\"], \"0$1\"], [\"(\\\\d{5})(\\\\d{4,5})\", \"$1 $2\", [\"1(?:38|5[23]|69|76|94)\", \"1(?:(?:38|69)7|5(?:24|39)|768|946)\", \"1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{5,6})\", \"$1 $2\", [\"1(?:[2-69][02-9]|[78])\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"[25]|7(?:0|6[02-9])\", \"[25]|7(?:0|6(?:[03-9]|2[356]))\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{6})\", \"$1 $2\", [\"7\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[1389]\"], \"0$1\"]], \"0\", 0, 0, 0, 0, 0, [[\"(?:1(?:1(?:3(?:[0-58]\\\\d\\\\d|73[0235])|4(?:[0-5]\\\\d\\\\d|69[7-9]|70[0359])|(?:5[0-26-9]|[78][0-49])\\\\d\\\\d|6(?:[0-4]\\\\d\\\\d|50[0-24-69]))|2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\\\d)\\\\d\\\\d|1(?:[0-7]\\\\d\\\\d|8(?:[02]\\\\d|1[0-278])))|(?:3(?:0\\\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\\\d\\\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\\\d{3})\\\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\\\d)|76\\\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\\\d|7[4-79])|295[5-7]|35[34]\\\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\\\d{3}\", [9, 10]], [\"7(?:457[0-57-9]|700[01]|911[028])\\\\d{5}|7(?:[1-3]\\\\d\\\\d|4(?:[0-46-9]\\\\d|5[0-689])|5(?:0[0-8]|[13-9]\\\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\\\d|8[02-9]|9[0-689])|8(?:[014-9]\\\\d|[23][0-8])|9(?:[024-9]\\\\d|1[02-9]|3[0-689]))\\\\d{6}\", [10]], [\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"], [\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[2-49]))\\\\d{7}|845464\\\\d\", [7, 10]], [\"70\\\\d{8}\", [10]], 0, [\"(?:3[0347]|55)\\\\d{8}\", [10]], [\"76(?:464|652)\\\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|81|9[139])\\\\d{6}\", [10]], [\"56\\\\d{8}\", [10]]], 0, \" x\"],\n \"GD\": [\"1\", \"011\", \"(?:473|[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"1|([2-9]\\\\d{6})$\", \"473$1\", 0, \"473\"],\n \"GE\": [\"995\", \"00\", \"(?:[3-57]\\\\d\\\\d|800)\\\\d{6}\", [9], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"70\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"32\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[57]\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[348]\"], \"0$1\"]], \"0\"],\n \"GF\": [\"594\", \"00\", \"(?:[56]94|80\\\\d|976)\\\\d{6}\", [9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[569]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"8\"], \"0$1\"]], \"0\"],\n \"GG\": [\"44\", \"00\", \"(?:1481|[357-9]\\\\d{3})\\\\d{6}|8\\\\d{6}(?:\\\\d{2})?\", [7, 9, 10], 0, \"0\", 0, \"0|([25-9]\\\\d{5})$\", \"1481$1\", 0, 0, [[\"1481[25-9]\\\\d{5}\", [10]], [\"7(?:(?:781|839)\\\\d|911[17])\\\\d{5}\", [10]], [\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"], [\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[0-3]))\\\\d{7}|845464\\\\d\", [7, 10]], [\"70\\\\d{8}\", [10]], 0, [\"(?:3[0347]|55)\\\\d{8}\", [10]], [\"76(?:464|652)\\\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|81|9[139])\\\\d{6}\", [10]], [\"56\\\\d{8}\", [10]]]],\n \"GH\": [\"233\", \"00\", \"(?:[235]\\\\d{3}|800)\\\\d{5}\", [8, 9], [[\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"8\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[235]\"], \"0$1\"]], \"0\"],\n \"GI\": [\"350\", \"00\", \"(?:[25]\\\\d\\\\d|606)\\\\d{5}\", [8], [[\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"2\"]]]],\n \"GL\": [\"299\", \"00\", \"(?:19|[2-689]\\\\d|70)\\\\d{4}\", [6], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"19|[2-9]\"]]]],\n \"GM\": [\"220\", \"00\", \"[2-9]\\\\d{6}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[2-9]\"]]]],\n \"GN\": [\"224\", \"00\", \"722\\\\d{6}|(?:3|6\\\\d)\\\\d{7}\", [8, 9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"3\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[67]\"]]]],\n \"GP\": [\"590\", \"00\", \"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\", [9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[569]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"8\"], \"0$1\"]], \"0\", 0, 0, 0, 0, 0, [[\"590(?:0[1-68]|1[0-24-7]|2[0-68]|3[1289]|4[0-24-9]|5[3-579]|6[0189]|7[08]|8[0-689]|9\\\\d)\\\\d{4}\"], [\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\"], [\"80[0-5]\\\\d{6}\"], 0, 0, 0, 0, 0, [\"976[01]\\\\d{5}\"]]],\n \"GQ\": [\"240\", \"00\", \"222\\\\d{6}|(?:3\\\\d|55|[89]0)\\\\d{7}\", [9], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[235]\"]], [\"(\\\\d{3})(\\\\d{6})\", \"$1 $2\", [\"[89]\"]]]],\n \"GR\": [\"30\", \"00\", \"5005000\\\\d{3}|8\\\\d{9,11}|(?:[269]\\\\d|70)\\\\d{8}\", [10, 11, 12], [[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"21|7\"]], [\"(\\\\d{4})(\\\\d{6})\", \"$1 $2\", [\"2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[2689]\"]], [\"(\\\\d{3})(\\\\d{3,4})(\\\\d{5})\", \"$1 $2 $3\", [\"8\"]]]],\n \"GT\": [\"502\", \"00\", \"(?:1\\\\d{3}|[2-7])\\\\d{7}\", [8, 11], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[2-7]\"]], [\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"]]]],\n \"GU\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|671|900)\\\\d{7}\", [10], 0, \"1\", 0, \"1|([3-9]\\\\d{6})$\", \"671$1\", 0, \"671\"],\n \"GW\": [\"245\", \"00\", \"[49]\\\\d{8}|4\\\\d{6}\", [7, 9], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"40\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[49]\"]]]],\n \"GY\": [\"592\", \"001\", \"9008\\\\d{3}|(?:[2-467]\\\\d\\\\d|862)\\\\d{4}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[2-46-9]\"]]]],\n \"HK\": [\"852\", \"00(?:30|5[09]|[126-9]?)\", \"8[0-46-9]\\\\d{6,7}|9\\\\d{4,7}|(?:[2-7]|9\\\\d{3})\\\\d{7}\", [5, 6, 7, 8, 9, 11], [[\"(\\\\d{3})(\\\\d{2,5})\", \"$1 $2\", [\"900\", \"9003\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[2-7]|8[1-4]|9(?:0[1-9]|[1-8])\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"8\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"9\"]]], 0, 0, 0, 0, 0, 0, 0, \"00\"],\n \"HN\": [\"504\", \"00\", \"8\\\\d{10}|[237-9]\\\\d{7}\", [8, 11], [[\"(\\\\d{4})(\\\\d{4})\", \"$1-$2\", [\"[237-9]\"]]]],\n \"HR\": [\"385\", \"00\", \"(?:[24-69]\\\\d|3[0-79])\\\\d{7}|80\\\\d{5,7}|[1-79]\\\\d{7}|6\\\\d{5,6}\", [6, 7, 8, 9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\", \"$1 $2 $3\", [\"6[01]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\", \"$1 $2 $3\", [\"8\"], \"0$1\"], [\"(\\\\d)(\\\\d{4})(\\\\d{3})\", \"$1 $2 $3\", [\"1\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[67]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"9\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[2-5]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"8\"], \"0$1\"]], \"0\"],\n \"HT\": [\"509\", \"00\", \"[2-489]\\\\d{7}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3\", [\"[2-489]\"]]]],\n \"HU\": [\"36\", \"00\", \"[235-7]\\\\d{8}|[1-9]\\\\d{7}\", [8, 9], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"], \"(06 $1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]\"], \"(06 $1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[2-9]\"], \"06 $1\"]], \"06\"],\n \"ID\": [\"62\", \"00[89]\", \"(?:(?:00[1-9]|8\\\\d)\\\\d{4}|[1-36])\\\\d{6}|00\\\\d{10}|[1-9]\\\\d{8,10}|[2-9]\\\\d{7}\", [7, 8, 9, 10, 11, 12, 13], [[\"(\\\\d)(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"15\"]], [\"(\\\\d{2})(\\\\d{5,9})\", \"$1 $2\", [\"2[124]|[36]1\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{5,7})\", \"$1 $2\", [\"800\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{5,8})\", \"$1 $2\", [\"[2-79]\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{3,4})(\\\\d{3})\", \"$1-$2-$3\", [\"8[1-35-9]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{6,8})\", \"$1 $2\", [\"1\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"804\"], \"0$1\"], [\"(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"80\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\", \"$1-$2-$3\", [\"8\"], \"0$1\"]], \"0\"],\n \"IE\": [\"353\", \"00\", \"(?:1\\\\d|[2569])\\\\d{6,8}|4\\\\d{6,9}|7\\\\d{8}|8\\\\d{8,9}\", [7, 8, 9, 10], [[\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"2[24-9]|47|58|6[237-9]|9[35-9]\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"[45]0\"], \"(0$1)\"], [\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[2569]|4[1-69]|7[14]\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"70\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"81\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[78]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"1\"]], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"4\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3 $4\", [\"8\"], \"0$1\"]], \"0\"],\n \"IL\": [\"972\", \"0(?:0|1[2-9])\", \"1\\\\d{6}(?:\\\\d{3,5})?|[57]\\\\d{8}|[1-489]\\\\d{7}\", [7, 8, 9, 10, 11, 12], [[\"(\\\\d{4})(\\\\d{3})\", \"$1-$2\", [\"125\"]], [\"(\\\\d{4})(\\\\d{2})(\\\\d{2})\", \"$1-$2-$3\", [\"121\"]], [\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1-$2-$3\", [\"[2-489]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1-$2-$3\", [\"[57]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1-$2-$3\", [\"12\"]], [\"(\\\\d{4})(\\\\d{6})\", \"$1-$2\", [\"159\"]], [\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1-$2-$3-$4\", [\"1[7-9]\"]], [\"(\\\\d{3})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\", \"$1-$2 $3-$4\", [\"15\"]]], \"0\"],\n \"IM\": [\"44\", \"00\", \"1624\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\", [10], 0, \"0\", 0, \"0|([25-8]\\\\d{5})$\", \"1624$1\", 0, \"74576|(?:16|7[56])24\"],\n \"IN\": [\"91\", \"00\", \"(?:000800|[2-9]\\\\d\\\\d)\\\\d{7}|1\\\\d{7,12}\", [8, 9, 10, 11, 12, 13], [[\"(\\\\d{8})\", \"$1\", [\"5(?:0|2[23]|3[03]|[67]1|88)\", \"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)\", \"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)\"], 0, 1], [\"(\\\\d{4})(\\\\d{4,5})\", \"$1 $2\", [\"180\", \"1800\"], 0, 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"140\"], 0, 1], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"11|2[02]|33|4[04]|79[1-7]|80[2-46]\", \"11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])\", \"11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]\", \"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]\", \"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]\"], \"0$1\", 1], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807\", \"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]\", \"1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\\\d|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]))[2-7]\"], \"0$1\", 1], [\"(\\\\d{5})(\\\\d{5})\", \"$1 $2\", [\"[6-9]\"], \"0$1\", 1], [\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\", \"$1 $2 $3\", [\"1(?:6|8[06])\", \"1(?:6|8[06]0)\"], 0, 1], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"18\"], 0, 1]], \"0\"],\n \"IO\": [\"246\", \"00\", \"3\\\\d{6}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"3\"]]]],\n \"IQ\": [\"964\", \"00\", \"(?:1|7\\\\d\\\\d)\\\\d{7}|[2-6]\\\\d{7,8}\", [8, 9, 10], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[2-6]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"7\"], \"0$1\"]], \"0\"],\n \"IR\": [\"98\", \"00\", \"[1-9]\\\\d{9}|(?:[1-8]\\\\d\\\\d|9)\\\\d{3,4}\", [4, 5, 6, 7, 10], [[\"(\\\\d{4,5})\", \"$1\", [\"96\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4,5})\", \"$1 $2\", [\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"9\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"[1-8]\"], \"0$1\"]], \"0\"],\n \"IS\": [\"354\", \"00|1(?:0(?:01|[12]0)|100)\", \"(?:38\\\\d|[4-9])\\\\d{6}\", [7, 9], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[4-9]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"3\"]]], 0, 0, 0, 0, 0, 0, 0, \"00\"],\n \"IT\": [\"39\", \"00\", \"0\\\\d{5,10}|1\\\\d{8,10}|3(?:[0-8]\\\\d{7,10}|9\\\\d{7,8})|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?\", [6, 7, 8, 9, 10, 11], [[\"(\\\\d{2})(\\\\d{4,6})\", \"$1 $2\", [\"0[26]\"]], [\"(\\\\d{3})(\\\\d{3,6})\", \"$1 $2\", [\"0[13-57-9][0159]|8(?:03|4[17]|9[2-5])\", \"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))\"]], [\"(\\\\d{4})(\\\\d{2,6})\", \"$1 $2\", [\"0(?:[13-579][2-46-8]|8[236-8])\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"894\"]], [\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\", \"$1 $2 $3\", [\"0[26]|5\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"1(?:44|[679])|[38]\"]], [\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\", \"$1 $2 $3\", [\"0[13-57-9][0159]|14\"]], [\"(\\\\d{2})(\\\\d{4})(\\\\d{5})\", \"$1 $2 $3\", [\"0[26]\"]], [\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"0\"]], [\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\", \"$1 $2 $3\", [\"3\"]]], 0, 0, 0, 0, 0, 0, [[\"0669[0-79]\\\\d{1,6}|0(?:1(?:[0159]\\\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\\\d\\\\d|3(?:[0159]\\\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\\\d|6[0-8])|7(?:[0159]\\\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\\\d{2,7}\"], [\"3[1-9]\\\\d{8}|3[2-9]\\\\d{7}\", [9, 10]], [\"80(?:0\\\\d{3}|3)\\\\d{3}\", [6, 9]], [\"(?:0878\\\\d{3}|89(?:2\\\\d|3[04]|4(?:[0-4]|[5-9]\\\\d\\\\d)|5[0-4]))\\\\d\\\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\\\d{6}\", [6, 8, 9, 10]], [\"1(?:78\\\\d|99)\\\\d{6}\", [9, 10]], 0, 0, 0, [\"55\\\\d{8}\", [10]], [\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\", [6, 9]]]],\n \"JE\": [\"44\", \"00\", \"1534\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\", [10], 0, \"0\", 0, \"0|([0-24-8]\\\\d{5})$\", \"1534$1\", 0, 0, [[\"1534[0-24-8]\\\\d{5}\"], [\"7(?:(?:(?:50|82)9|937)\\\\d|7(?:00[378]|97[7-9]))\\\\d{5}\"], [\"80(?:07(?:35|81)|8901)\\\\d{4}\"], [\"(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\\\d{4}\"], [\"701511\\\\d{4}\"], 0, [\"(?:3(?:0(?:07(?:35|81)|8901)|3\\\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\\\d{4})\\\\d{4}\"], [\"76(?:464|652)\\\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|81|9[139])\\\\d{6}\"], [\"56\\\\d{8}\"]]],\n \"JM\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|658|900)\\\\d{7}\", [10], 0, \"1\", 0, 0, 0, 0, \"658|876\"],\n \"JO\": [\"962\", \"00\", \"(?:(?:[2689]|7\\\\d)\\\\d|32|53)\\\\d{6}\", [8, 9], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[2356]|87\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{5,6})\", \"$1 $2\", [\"[89]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{7})\", \"$1 $2\", [\"70\"], \"0$1\"], [\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"7\"], \"0$1\"]], \"0\"],\n \"JP\": [\"81\", \"010\", \"00[1-9]\\\\d{6,14}|[257-9]\\\\d{9}|(?:00|[1-9]\\\\d\\\\d)\\\\d{6}\", [8, 9, 10, 11, 12, 13, 14, 15, 16, 17], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1-$2-$3\", [\"(?:12|57|99)0\"], \"0$1\"], [\"(\\\\d{4})(\\\\d)(\\\\d{4})\", \"$1-$2-$3\", [\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:49|80|9[16])\", \"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]\", \"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1-$2-$3\", [\"60\"], \"0$1\"], [\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1-$2-$3\", [\"[36]|4(?:2[09]|7[01])\", \"[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1-$2-$3\", [\"1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])\", \"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]\", \"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\", \"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\", \"$1-$2-$3\", [\"[14]|[289][2-9]|5[3-9]|7[2-4679]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1-$2-$3\", [\"800\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1-$2-$3\", [\"[257-9]\"], \"0$1\"]], \"0\"],\n \"KE\": [\"254\", \"000\", \"(?:[17]\\\\d\\\\d|900)\\\\d{6}|(?:2|80)0\\\\d{6,7}|[4-6]\\\\d{6,8}\", [7, 8, 9, 10], [[\"(\\\\d{2})(\\\\d{5,7})\", \"$1 $2\", [\"[24-6]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{6})\", \"$1 $2\", [\"[17]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[89]\"], \"0$1\"]], \"0\"],\n \"KG\": [\"996\", \"00\", \"8\\\\d{9}|(?:[235-8]\\\\d|99)\\\\d{7}\", [9, 10], [[\"(\\\\d{4})(\\\\d{5})\", \"$1 $2\", [\"3(?:1[346]|[24-79])\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[235-79]|88\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d)(\\\\d{2,3})\", \"$1 $2 $3 $4\", [\"8\"], \"0$1\"]], \"0\"],\n \"KH\": [\"855\", \"00[14-9]\", \"1\\\\d{9}|[1-9]\\\\d{7,8}\", [8, 9, 10], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[1-9]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"1\"]]], \"0\"],\n \"KI\": [\"686\", \"00\", \"(?:[37]\\\\d|6[0-79])\\\\d{6}|(?:[2-48]\\\\d|50)\\\\d{3}\", [5, 8], 0, \"0\"],\n \"KM\": [\"269\", \"00\", \"[3478]\\\\d{6}\", [7], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"[3478]\"]]]],\n \"KN\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"1|([2-7]\\\\d{6})$\", \"869$1\", 0, \"869\"],\n \"KP\": [\"850\", \"00|99\", \"85\\\\d{6}|(?:19\\\\d|[2-7])\\\\d{7}\", [8, 10], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"8\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[2-7]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"], \"0$1\"]], \"0\"],\n \"KR\": [\"82\", \"00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))\", \"00[1-9]\\\\d{8,11}|(?:[12]|5\\\\d{3})\\\\d{7}|[13-6]\\\\d{9}|(?:[1-6]\\\\d|80)\\\\d{7}|[3-6]\\\\d{4,5}|(?:00|7)0\\\\d{8}\", [5, 6, 8, 9, 10, 11, 12, 13, 14], [[\"(\\\\d{2})(\\\\d{3,4})\", \"$1-$2\", [\"(?:3[1-3]|[46][1-4]|5[1-5])1\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{4})\", \"$1-$2\", [\"1\"]], [\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\", \"$1-$2-$3\", [\"2\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1-$2-$3\", [\"60|8\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\", \"$1-$2-$3\", [\"[1346]|5[1-5]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1-$2-$3\", [\"[57]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\", \"$1-$2-$3\", [\"5\"], \"0$1\"]], \"0\", 0, \"0(8(?:[1-46-8]|5\\\\d\\\\d))?\"],\n \"KW\": [\"965\", \"00\", \"18\\\\d{5}|(?:[2569]\\\\d|41)\\\\d{6}\", [7, 8], [[\"(\\\\d{4})(\\\\d{3,4})\", \"$1 $2\", [\"[169]|2(?:[235]|4[1-35-9])|52\"]], [\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"[245]\"]]]],\n \"KY\": [\"1\", \"011\", \"(?:345|[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"1|([2-9]\\\\d{6})$\", \"345$1\", 0, \"345\"],\n \"KZ\": [\"7\", \"810\", \"(?:33622|8\\\\d{8})\\\\d{5}|[78]\\\\d{9}\", [10, 14], 0, \"8\", 0, 0, 0, 0, \"33|7\", 0, \"8~10\"],\n \"LA\": [\"856\", \"00\", \"[23]\\\\d{9}|3\\\\d{8}|(?:[235-8]\\\\d|41)\\\\d{6}\", [8, 9, 10], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"2[13]|3[14]|[4-8]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"30[013-9]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"[23]\"], \"0$1\"]], \"0\"],\n \"LB\": [\"961\", \"00\", \"[27-9]\\\\d{7}|[13-9]\\\\d{6}\", [7, 8], [[\"(\\\\d)(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[27-9]\"]]], \"0\"],\n \"LC\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|758|900)\\\\d{7}\", [10], 0, \"1\", 0, \"1|([2-8]\\\\d{6})$\", \"758$1\", 0, \"758\"],\n \"LI\": [\"423\", \"00\", \"[68]\\\\d{8}|(?:[2378]\\\\d|90)\\\\d{5}\", [7, 9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"[2379]|8(?:0[09]|7)\", \"[2379]|8(?:0(?:02|9)|7)\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"8\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"69\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"6\"]]], \"0\", 0, \"0|(1001)\"],\n \"LK\": [\"94\", \"00\", \"[1-9]\\\\d{8}\", [9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"7\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[1-689]\"], \"0$1\"]], \"0\"],\n \"LR\": [\"231\", \"00\", \"(?:2|33|5\\\\d|77|88)\\\\d{7}|[4-6]\\\\d{6}\", [7, 8, 9], [[\"(\\\\d)(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[4-6]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"2\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[3578]\"], \"0$1\"]], \"0\"],\n \"LS\": [\"266\", \"00\", \"(?:[256]\\\\d\\\\d|800)\\\\d{5}\", [8], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[2568]\"]]]],\n \"LT\": [\"370\", \"00\", \"(?:[3469]\\\\d|52|[78]0)\\\\d{6}\", [8], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"52[0-7]\"], \"(8-$1)\", 1], [\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"[7-9]\"], \"8 $1\", 1], [\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"37|4(?:[15]|6[1-8])\"], \"(8-$1)\", 1], [\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"[3-6]\"], \"(8-$1)\", 1]], \"8\", 0, \"[08]\"],\n \"LU\": [\"352\", \"00\", \"35[013-9]\\\\d{4,8}|6\\\\d{8}|35\\\\d{2,4}|(?:[2457-9]\\\\d|3[0-46-9])\\\\d{2,9}\", [4, 5, 6, 7, 8, 9, 10, 11], [[\"(\\\\d{2})(\\\\d{3})\", \"$1 $2\", [\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"20[2-689]\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\", \"$1 $2 $3 $4\", [\"2(?:[0367]|4[3-8])\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"80[01]|90[015]\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"20\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"6\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\", \"$1 $2 $3 $4 $5\", [\"2(?:[0367]|4[3-8])\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,5})\", \"$1 $2 $3 $4\", [\"[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]\"]]], 0, 0, \"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\\\d)\"],\n \"LV\": [\"371\", \"00\", \"(?:[268]\\\\d|90)\\\\d{6}\", [8], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[269]|8[01]\"]]]],\n \"LY\": [\"218\", \"00\", \"[2-9]\\\\d{8}\", [9], [[\"(\\\\d{2})(\\\\d{7})\", \"$1-$2\", [\"[2-9]\"], \"0$1\"]], \"0\"],\n \"MA\": [\"212\", \"00\", \"[5-8]\\\\d{8}\", [9], [[\"(\\\\d{5})(\\\\d{4})\", \"$1-$2\", [\"5(?:29|38)\", \"5(?:29|38)[89]\", \"5(?:29|38)[89]0\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"5[45]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{5})\", \"$1-$2\", [\"5(?:2[2-489]|3[5-9]|9)|892\", \"5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{7})\", \"$1-$2\", [\"8\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{6})\", \"$1-$2\", [\"[5-7]\"], \"0$1\"]], \"0\", 0, 0, 0, 0, 0, [[\"5(?:29(?:[189][05]|2[29]|3[01])|38(?:8[057]|9[05]))\\\\d{4}|5(?:2(?:[0-25-7]\\\\d|3[1-578]|4[02-46-8]|8[0235-7]|90)|3(?:[0-47]\\\\d|5[02-9]|6[02-8]|80|9[3-9])|(?:4[067]|5[03])\\\\d)\\\\d{5}\"], [\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:[017]\\\\d|6[0-367]))\\\\d{6}\"], [\"80\\\\d{7}\"], [\"89\\\\d{7}\"], 0, 0, 0, 0, [\"592(?:4[0-2]|93)\\\\d{4}\"]]],\n \"MC\": [\"377\", \"00\", \"(?:[3489]|6\\\\d)\\\\d{7}\", [8, 9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"4\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[389]\"]], [\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4 $5\", [\"6\"], \"0$1\"]], \"0\"],\n \"MD\": [\"373\", \"00\", \"(?:[235-7]\\\\d|[89]0)\\\\d{6}\", [8], [[\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"[89]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"22|3\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"[25-7]\"], \"0$1\"]], \"0\"],\n \"ME\": [\"382\", \"00\", \"(?:20|[3-79]\\\\d)\\\\d{6}|80\\\\d{6,7}\", [8, 9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[2-9]\"], \"0$1\"]], \"0\"],\n \"MF\": [\"590\", \"00\", \"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\", [9], 0, \"0\", 0, 0, 0, 0, 0, [[\"590(?:0[079]|[14]3|[27][79]|30|5[0-268]|87)\\\\d{4}\"], [\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\"], [\"80[0-5]\\\\d{6}\"], 0, 0, 0, 0, 0, [\"976[01]\\\\d{5}\"]]],\n \"MG\": [\"261\", \"00\", \"[23]\\\\d{8}\", [9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[23]\"], \"0$1\"]], \"0\", 0, \"0|([24-9]\\\\d{6})$\", \"20$1\"],\n \"MH\": [\"692\", \"011\", \"329\\\\d{4}|(?:[256]\\\\d|45)\\\\d{5}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1-$2\", [\"[2-6]\"]]], \"1\"],\n \"MK\": [\"389\", \"00\", \"[2-578]\\\\d{7}\", [8], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"2|34[47]|4(?:[37]7|5[47]|64)\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[347]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[58]\"], \"0$1\"]], \"0\"],\n \"ML\": [\"223\", \"00\", \"[24-9]\\\\d{7}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[24-9]\"]]]],\n \"MM\": [\"95\", \"00\", \"1\\\\d{5,7}|95\\\\d{6}|(?:[4-7]|9[0-46-9])\\\\d{6,8}|(?:2|8\\\\d)\\\\d{5,8}\", [6, 7, 8, 9, 10], [[\"(\\\\d)(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"16|2\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[12]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[4-7]|8[1-35]\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{4,6})\", \"$1 $2 $3\", [\"9(?:2[0-4]|[35-9]|4[137-9])\"], \"0$1\"], [\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"2\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"8\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"92\"], \"0$1\"], [\"(\\\\d)(\\\\d{5})(\\\\d{4})\", \"$1 $2 $3\", [\"9\"], \"0$1\"]], \"0\"],\n \"MN\": [\"976\", \"001\", \"[12]\\\\d{7,9}|[57-9]\\\\d{7}\", [8, 9, 10], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3\", [\"[12]1\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[57-9]\"]], [\"(\\\\d{3})(\\\\d{5,6})\", \"$1 $2\", [\"[12]2[1-3]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{5,6})\", \"$1 $2\", [\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])\", \"[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]\"], \"0$1\"], [\"(\\\\d{5})(\\\\d{4,5})\", \"$1 $2\", [\"[12]\"], \"0$1\"]], \"0\"],\n \"MO\": [\"853\", \"00\", \"0800\\\\d{3}|(?:28|[68]\\\\d)\\\\d{6}\", [7, 8], [[\"(\\\\d{4})(\\\\d{3})\", \"$1 $2\", [\"0\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[268]\"]]]],\n \"MP\": [\"1\", \"011\", \"[58]\\\\d{9}|(?:67|90)0\\\\d{7}\", [10], 0, \"1\", 0, \"1|([2-9]\\\\d{6})$\", \"670$1\", 0, \"670\"],\n \"MQ\": [\"596\", \"00\", \"(?:69|80)\\\\d{7}|(?:59|97)6\\\\d{6}\", [9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[569]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"8\"], \"0$1\"]], \"0\"],\n \"MR\": [\"222\", \"00\", \"(?:[2-4]\\\\d\\\\d|800)\\\\d{5}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[2-48]\"]]]],\n \"MS\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|664|900)\\\\d{7}\", [10], 0, \"1\", 0, \"1|([34]\\\\d{6})$\", \"664$1\", 0, \"664\"],\n \"MT\": [\"356\", \"00\", \"3550\\\\d{4}|(?:[2579]\\\\d\\\\d|800)\\\\d{5}\", [8], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[2357-9]\"]]]],\n \"MU\": [\"230\", \"0(?:0|[24-7]0|3[03])\", \"(?:5|8\\\\d\\\\d)\\\\d{7}|[2-468]\\\\d{6}\", [7, 8, 10], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[2-46]|8[013]\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"5\"]], [\"(\\\\d{5})(\\\\d{5})\", \"$1 $2\", [\"8\"]]], 0, 0, 0, 0, 0, 0, 0, \"020\"],\n \"MV\": [\"960\", \"0(?:0|19)\", \"(?:800|9[0-57-9]\\\\d)\\\\d{7}|[34679]\\\\d{6}\", [7, 10], [[\"(\\\\d{3})(\\\\d{4})\", \"$1-$2\", [\"[3467]|9[13-9]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[89]\"]]], 0, 0, 0, 0, 0, 0, 0, \"00\"],\n \"MW\": [\"265\", \"00\", \"(?:[129]\\\\d|31|77|88)\\\\d{7}|1\\\\d{6}\", [7, 9], [[\"(\\\\d)(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"1[2-9]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"2\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[137-9]\"], \"0$1\"]], \"0\"],\n \"MX\": [\"52\", \"0[09]\", \"1(?:(?:44|99)[1-9]|65[0-689])\\\\d{7}|(?:1(?:[017]\\\\d|[235][1-9]|4[0-35-9]|6[0-46-9]|8[1-79]|9[1-8])|[2-9]\\\\d)\\\\d{8}\", [10, 11], [[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"33|5[56]|81\"], 0, 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[2-9]\"], 0, 1], [\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$2 $3 $4\", [\"1(?:33|5[56]|81)\"], 0, 1], [\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$2 $3 $4\", [\"1\"], 0, 1]], \"01\", 0, \"0(?:[12]|4[45])|1\", 0, 0, 0, 0, \"00\"],\n \"MY\": [\"60\", \"00\", \"1\\\\d{8,9}|(?:3\\\\d|[4-9])\\\\d{7}\", [8, 9, 10], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1-$2 $3\", [\"[4-79]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1-$2 $3\", [\"1(?:[02469]|[378][1-9])|8\"], \"0$1\"], [\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1-$2 $3\", [\"3\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{4})\", \"$1-$2-$3-$4\", [\"1[36-8]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1-$2 $3\", [\"15\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1-$2 $3\", [\"1\"], \"0$1\"]], \"0\"],\n \"MZ\": [\"258\", \"00\", \"(?:2|8\\\\d)\\\\d{7}\", [8, 9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"2|8[2-79]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"8\"]]]],\n \"NA\": [\"264\", \"00\", \"[68]\\\\d{7,8}\", [8, 9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"88\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"6\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"87\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"8\"], \"0$1\"]], \"0\"],\n \"NC\": [\"687\", \"00\", \"[2-57-9]\\\\d{5}\", [6], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1.$2.$3\", [\"[2-57-9]\"]]]],\n \"NE\": [\"227\", \"00\", \"[027-9]\\\\d{7}\", [8], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"08\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[089]|2[013]|7[04]\"]]]],\n \"NF\": [\"672\", \"00\", \"[13]\\\\d{5}\", [6], [[\"(\\\\d{2})(\\\\d{4})\", \"$1 $2\", [\"1[0-3]\"]], [\"(\\\\d)(\\\\d{5})\", \"$1 $2\", [\"[13]\"]]], 0, 0, \"([0-258]\\\\d{4})$\", \"3$1\"],\n \"NG\": [\"234\", \"009\", \"(?:[124-7]|9\\\\d{3})\\\\d{6}|[1-9]\\\\d{7}|[78]\\\\d{9,13}\", [7, 8, 10, 11, 12, 13, 14], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"78\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[12]|9(?:0[3-9]|[1-9])\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\", \"$1 $2 $3\", [\"[3-7]|8[2-9]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[7-9]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\", \"$1 $2 $3\", [\"[78]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{5})(\\\\d{5,6})\", \"$1 $2 $3\", [\"[78]\"], \"0$1\"]], \"0\"],\n \"NI\": [\"505\", \"00\", \"(?:1800|[25-8]\\\\d{3})\\\\d{4}\", [8], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[125-8]\"]]]],\n \"NL\": [\"31\", \"00\", \"(?:[124-7]\\\\d\\\\d|3(?:[02-9]\\\\d|1[0-8]))\\\\d{6}|[89]\\\\d{6,9}|1\\\\d{4,5}\", [5, 6, 7, 8, 9, 10], [[\"(\\\\d{3})(\\\\d{4,7})\", \"$1 $2\", [\"[89]0\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{7})\", \"$1 $2\", [\"66\"], \"0$1\"], [\"(\\\\d)(\\\\d{8})\", \"$1 $2\", [\"6\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[1-57-9]\"], \"0$1\"]], \"0\"],\n \"NO\": [\"47\", \"00\", \"(?:0|[2-9]\\\\d{3})\\\\d{4}\", [5, 8], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"[489]|59\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[235-7]\"]]], 0, 0, 0, 0, 0, \"[02-689]|7[0-8]\"],\n \"NP\": [\"977\", \"00\", \"(?:1\\\\d|9)\\\\d{9}|[1-9]\\\\d{7}\", [8, 10, 11], [[\"(\\\\d)(\\\\d{7})\", \"$1-$2\", [\"1[2-6]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{6})\", \"$1-$2\", [\"1[01]|[2-8]|9(?:[1-579]|6[2-6])\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{7})\", \"$1-$2\", [\"9\"]]], \"0\"],\n \"NR\": [\"674\", \"00\", \"(?:444|(?:55|8\\\\d)\\\\d|666)\\\\d{4}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[4-68]\"]]]],\n \"NU\": [\"683\", \"00\", \"(?:[47]|888\\\\d)\\\\d{3}\", [4, 7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"8\"]]]],\n \"NZ\": [\"64\", \"0(?:0|161)\", \"[29]\\\\d{7,9}|50\\\\d{5}(?:\\\\d{2,3})?|6[0-35-9]\\\\d{6}|7\\\\d{7,8}|8\\\\d{4,9}|(?:11\\\\d|[34])\\\\d{7}\", [5, 6, 7, 8, 9, 10], [[\"(\\\\d{2})(\\\\d{3,8})\", \"$1 $2\", [\"8[1-579]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\", \"$1 $2 $3\", [\"50[036-8]|[89]0\", \"50(?:[0367]|88)|[89]0\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1-$2 $3\", [\"24|[346]|7[2-57-9]|9[2-9]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"2(?:10|74)|[59]|80\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\", \"$1 $2 $3\", [\"1|2[028]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,5})\", \"$1 $2 $3\", [\"2(?:[169]|7[0-35-9])|7|86\"], \"0$1\"]], \"0\", 0, 0, 0, 0, 0, 0, \"00\"],\n \"OM\": [\"968\", \"00\", \"(?:1505|[279]\\\\d{3}|500)\\\\d{4}|800\\\\d{5,6}\", [7, 8, 9], [[\"(\\\\d{3})(\\\\d{4,6})\", \"$1 $2\", [\"[58]\"]], [\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"2\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[179]\"]]]],\n \"PA\": [\"507\", \"00\", \"(?:00800|8\\\\d{3})\\\\d{6}|[68]\\\\d{7}|[1-57-9]\\\\d{6}\", [7, 8, 10, 11], [[\"(\\\\d{3})(\\\\d{4})\", \"$1-$2\", [\"[1-57-9]\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1-$2\", [\"[68]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"8\"]]]],\n \"PE\": [\"51\", \"19(?:1[124]|77|90)00\", \"(?:[14-8]|9\\\\d)\\\\d{7}\", [8, 9], [[\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"80\"], \"(0$1)\"], [\"(\\\\d)(\\\\d{7})\", \"$1 $2\", [\"1\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"[4-8]\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"9\"]]], \"0\", 0, 0, 0, 0, 0, 0, 0, \" Anexo \"],\n \"PF\": [\"689\", \"00\", \"4\\\\d{5}(?:\\\\d{2})?|8\\\\d{7,8}\", [6, 8, 9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"44\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"4|8[7-9]\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"8\"]]]],\n \"PG\": [\"675\", \"00|140[1-3]\", \"(?:180|[78]\\\\d{3})\\\\d{4}|(?:[2-589]\\\\d|64)\\\\d{5}\", [7, 8], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"18|[2-69]|85\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[78]\"]]], 0, 0, 0, 0, 0, 0, 0, \"00\"],\n \"PH\": [\"63\", \"00\", \"(?:[2-7]|9\\\\d)\\\\d{8}|2\\\\d{5}|(?:1800|8)\\\\d{7,9}\", [6, 8, 9, 10, 11, 12, 13], [[\"(\\\\d)(\\\\d{5})\", \"$1 $2\", [\"2\"], \"(0$1)\"], [\"(\\\\d{4})(\\\\d{4,6})\", \"$1 $2\", [\"3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2\", \"3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))\"], \"(0$1)\"], [\"(\\\\d{5})(\\\\d{4})\", \"$1 $2\", [\"346|4(?:27|9[35])|883\", \"3469|4(?:279|9(?:30|56))|8834\"], \"(0$1)\"], [\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"2\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[3-7]|8[2-8]\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[89]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"]], [\"(\\\\d{4})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3 $4\", [\"1\"]]], \"0\"],\n \"PK\": [\"92\", \"00\", \"122\\\\d{6}|[24-8]\\\\d{10,11}|9(?:[013-9]\\\\d{8,10}|2(?:[01]\\\\d\\\\d|2(?:[06-8]\\\\d|1[01]))\\\\d{7})|(?:[2-8]\\\\d{3}|92(?:[0-7]\\\\d|8[1-9]))\\\\d{6}|[24-9]\\\\d{8}|[89]\\\\d{7}\", [8, 9, 10, 11, 12], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,7})\", \"$1 $2 $3\", [\"[89]0\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{5})\", \"$1 $2\", [\"1\"]], [\"(\\\\d{3})(\\\\d{6,7})\", \"$1 $2\", [\"2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])\", \"9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{7,8})\", \"$1 $2\", [\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\"], \"(0$1)\"], [\"(\\\\d{5})(\\\\d{5})\", \"$1 $2\", [\"58\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{7})\", \"$1 $2\", [\"3\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"[24-9]\"], \"(0$1)\"]], \"0\"],\n \"PL\": [\"48\", \"00\", \"6\\\\d{5}(?:\\\\d{2})?|8\\\\d{9}|[1-9]\\\\d{6}(?:\\\\d{2})?\", [6, 7, 8, 9, 10], [[\"(\\\\d{5})\", \"$1\", [\"19\"]], [\"(\\\\d{3})(\\\\d{3})\", \"$1 $2\", [\"11|64\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1\", \"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\", \"$1 $2 $3\", [\"64\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"1[2-8]|[2-7]|8[1-79]|9[145]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"8\"]]]],\n \"PM\": [\"508\", \"00\", \"(?:[45]|80\\\\d\\\\d)\\\\d{5}\", [6, 9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"[45]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"8\"], \"0$1\"]], \"0\"],\n \"PR\": [\"1\", \"011\", \"(?:[589]\\\\d\\\\d|787)\\\\d{7}\", [10], 0, \"1\", 0, 0, 0, 0, \"787|939\"],\n \"PS\": [\"970\", \"00\", \"[2489]2\\\\d{6}|(?:1\\\\d|5)\\\\d{8}\", [8, 9, 10], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[2489]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"5\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"1\"]]], \"0\"],\n \"PT\": [\"351\", \"00\", \"1693\\\\d{5}|(?:[26-9]\\\\d|30)\\\\d{7}\", [9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"2[12]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"16|[236-9]\"]]]],\n \"PW\": [\"680\", \"01[12]\", \"(?:[24-8]\\\\d\\\\d|345|900)\\\\d{4}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[2-9]\"]]]],\n \"PY\": [\"595\", \"00\", \"59\\\\d{4,6}|9\\\\d{5,10}|(?:[2-46-8]\\\\d|5[0-8])\\\\d{4,7}\", [6, 7, 8, 9, 10, 11], [[\"(\\\\d{3})(\\\\d{3,6})\", \"$1 $2\", [\"[2-9]0\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{4,5})\", \"$1 $2\", [\"2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"87\"]], [\"(\\\\d{3})(\\\\d{6})\", \"$1 $2\", [\"9(?:[5-79]|8[1-6])\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[2-8]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"9\"]]], \"0\"],\n \"QA\": [\"974\", \"00\", \"[2-7]\\\\d{7}|800\\\\d{4}(?:\\\\d{2})?|2\\\\d{6}\", [7, 8, 9], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"2[126]|8\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[2-7]\"]]]],\n \"RE\": [\"262\", \"00\", \"9769\\\\d{5}|(?:26|[68]\\\\d)\\\\d{7}\", [9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[2689]\"], \"0$1\"]], \"0\", 0, 0, 0, 0, \"26[23]|69|[89]\"],\n \"RO\": [\"40\", \"00\", \"(?:[2378]\\\\d|90)\\\\d{7}|[23]\\\\d{5}\", [6, 9], [[\"(\\\\d{3})(\\\\d{3})\", \"$1 $2\", [\"2[3-6]\", \"2[3-6]\\\\d9\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4})\", \"$1 $2\", [\"219|31\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[23]1\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[237-9]\"], \"0$1\"]], \"0\", 0, 0, 0, 0, 0, 0, 0, \" int \"],\n \"RS\": [\"381\", \"00\", \"38[02-9]\\\\d{6,9}|6\\\\d{7,9}|90\\\\d{4,8}|38\\\\d{5,6}|(?:7\\\\d\\\\d|800)\\\\d{3,9}|(?:[12]\\\\d|3[0-79])\\\\d{5,10}\", [6, 7, 8, 9, 10, 11, 12], [[\"(\\\\d{3})(\\\\d{3,9})\", \"$1 $2\", [\"(?:2[389]|39)0|[7-9]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{5,10})\", \"$1 $2\", [\"[1-36]\"], \"0$1\"]], \"0\"],\n \"RU\": [\"7\", \"810\", \"8\\\\d{13}|[347-9]\\\\d{9}\", [10, 14], [[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"7(?:1[0-8]|2[1-9])\", \"7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))\", \"7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2\"], \"8 ($1)\", 1], [\"(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"7(?:1[0-68]|2[1-9])\", \"7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))\", \"7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]\"], \"8 ($1)\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"7\"], \"8 ($1)\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2-$3-$4\", [\"[349]|8(?:[02-7]|1[1-8])\"], \"8 ($1)\", 1], [\"(\\\\d{4})(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"8\"], \"8 ($1)\"]], \"8\", 0, 0, 0, 0, \"3[04-689]|[489]\", 0, \"8~10\"],\n \"RW\": [\"250\", \"00\", \"(?:06|[27]\\\\d\\\\d|[89]00)\\\\d{6}\", [8, 9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"0\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[7-9]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"2\"]]], \"0\"],\n \"SA\": [\"966\", \"00\", \"92\\\\d{7}|(?:[15]|8\\\\d)\\\\d{8}\", [9, 10], [[\"(\\\\d{4})(\\\\d{5})\", \"$1 $2\", [\"9\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"5\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"81\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"8\"]]], \"0\"],\n \"SB\": [\"677\", \"0[01]\", \"(?:[1-6]|[7-9]\\\\d\\\\d)\\\\d{4}\", [5, 7], [[\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"7|8[4-9]|9(?:[1-8]|9[0-8])\"]]]],\n \"SC\": [\"248\", \"010|0[0-2]\", \"800\\\\d{4}|(?:[249]\\\\d|64)\\\\d{5}\", [7], [[\"(\\\\d)(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[246]|9[57]\"]]], 0, 0, 0, 0, 0, 0, 0, \"00\"],\n \"SD\": [\"249\", \"00\", \"[19]\\\\d{8}\", [9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[19]\"], \"0$1\"]], \"0\"],\n \"SE\": [\"46\", \"00\", \"(?:[26]\\\\d\\\\d|9)\\\\d{9}|[1-9]\\\\d{8}|[1-689]\\\\d{7}|[1-4689]\\\\d{6}|2\\\\d{5}\", [6, 7, 8, 9, 10], [[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})\", \"$1-$2 $3\", [\"20\"], \"0$1\", 0, \"$1 $2 $3\"], [\"(\\\\d{3})(\\\\d{4})\", \"$1-$2\", [\"9(?:00|39|44|9)\"], \"0$1\", 0, \"$1 $2\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})\", \"$1-$2 $3\", [\"[12][136]|3[356]|4[0246]|6[03]|90[1-9]\"], \"0$1\", 0, \"$1 $2 $3\"], [\"(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\", \"$1-$2 $3 $4\", [\"8\"], \"0$1\", 0, \"$1 $2 $3 $4\"], [\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\", \"$1-$2 $3\", [\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"], \"0$1\", 0, \"$1 $2 $3\"], [\"(\\\\d{3})(\\\\d{2,3})(\\\\d{3})\", \"$1-$2 $3\", [\"9(?:00|39|44)\"], \"0$1\", 0, \"$1 $2 $3\"], [\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\", \"$1-$2 $3 $4\", [\"1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]\"], \"0$1\", 0, \"$1 $2 $3 $4\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1-$2 $3 $4\", [\"10|7\"], \"0$1\", 0, \"$1 $2 $3 $4\"], [\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\", \"$1-$2 $3 $4\", [\"8\"], \"0$1\", 0, \"$1 $2 $3 $4\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1-$2 $3 $4\", [\"[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"], \"0$1\", 0, \"$1 $2 $3 $4\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})\", \"$1-$2 $3 $4\", [\"9\"], \"0$1\", 0, \"$1 $2 $3 $4\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1-$2 $3 $4 $5\", [\"[26]\"], \"0$1\", 0, \"$1 $2 $3 $4 $5\"]], \"0\"],\n \"SG\": [\"65\", \"0[0-3]\\\\d\", \"(?:(?:1\\\\d|8)\\\\d\\\\d|7000)\\\\d{7}|[3689]\\\\d{7}\", [8, 10, 11], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[369]|8(?:0[1-5]|[1-9])\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"8\"]], [\"(\\\\d{4})(\\\\d{4})(\\\\d{3})\", \"$1 $2 $3\", [\"7\"]], [\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"]]]],\n \"SH\": [\"290\", \"00\", \"(?:[256]\\\\d|8)\\\\d{3}\", [4, 5], 0, 0, 0, 0, 0, 0, \"[256]\"],\n \"SI\": [\"386\", \"00|10(?:22|66|88|99)\", \"[1-7]\\\\d{7}|8\\\\d{4,7}|90\\\\d{4,6}\", [5, 6, 7, 8], [[\"(\\\\d{2})(\\\\d{3,6})\", \"$1 $2\", [\"8[09]|9\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"59|8\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[37][01]|4[0139]|51|6\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[1-57]\"], \"(0$1)\"]], \"0\", 0, 0, 0, 0, 0, 0, \"00\"],\n \"SJ\": [\"47\", \"00\", \"0\\\\d{4}|(?:[489]\\\\d|[57]9)\\\\d{6}\", [5, 8], 0, 0, 0, 0, 0, 0, \"79\"],\n \"SK\": [\"421\", \"00\", \"[2-689]\\\\d{8}|[2-59]\\\\d{6}|[2-5]\\\\d{5}\", [6, 7, 9], [[\"(\\\\d)(\\\\d{2})(\\\\d{3,4})\", \"$1 $2 $3\", [\"21\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\", \"$1 $2 $3\", [\"[3-5][1-8]1\", \"[3-5][1-8]1[67]\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\", \"$1/$2 $3 $4\", [\"2\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[689]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1/$2 $3 $4\", [\"[3-5]\"], \"0$1\"]], \"0\"],\n \"SL\": [\"232\", \"00\", \"(?:[237-9]\\\\d|66)\\\\d{6}\", [8], [[\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"[236-9]\"], \"(0$1)\"]], \"0\"],\n \"SM\": [\"378\", \"00\", \"(?:0549|[5-7]\\\\d)\\\\d{6}\", [8, 10], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[5-7]\"]], [\"(\\\\d{4})(\\\\d{6})\", \"$1 $2\", [\"0\"]]], 0, 0, \"([89]\\\\d{5})$\", \"0549$1\"],\n \"SN\": [\"221\", \"00\", \"(?:[378]\\\\d|93)\\\\d{7}\", [9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"8\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[379]\"]]]],\n \"SO\": [\"252\", \"00\", \"[346-9]\\\\d{8}|[12679]\\\\d{7}|[1-5]\\\\d{6}|[1348]\\\\d{5}\", [6, 7, 8, 9], [[\"(\\\\d{2})(\\\\d{4})\", \"$1 $2\", [\"8[125]\"]], [\"(\\\\d{6})\", \"$1\", [\"[134]\"]], [\"(\\\\d)(\\\\d{6})\", \"$1 $2\", [\"[15]|2[0-79]|3[0-46-8]|4[0-7]\"]], [\"(\\\\d)(\\\\d{7})\", \"$1 $2\", [\"24|[67]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[3478]|64|90\"]], [\"(\\\\d{2})(\\\\d{5,7})\", \"$1 $2\", [\"1|28|6(?:0[5-7]|[1-35-9])|9[2-9]\"]]], \"0\"],\n \"SR\": [\"597\", \"00\", \"(?:[2-5]|68|[78]\\\\d)\\\\d{5}\", [6, 7], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1-$2-$3\", [\"56\"]], [\"(\\\\d{3})(\\\\d{3})\", \"$1-$2\", [\"[2-5]\"]], [\"(\\\\d{3})(\\\\d{4})\", \"$1-$2\", [\"[6-8]\"]]]],\n \"SS\": [\"211\", \"00\", \"[19]\\\\d{8}\", [9], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[19]\"], \"0$1\"]], \"0\"],\n \"ST\": [\"239\", \"00\", \"(?:22|9\\\\d)\\\\d{5}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[29]\"]]]],\n \"SV\": [\"503\", \"00\", \"[267]\\\\d{7}|[89]00\\\\d{4}(?:\\\\d{4})?\", [7, 8, 11], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[89]\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[267]\"]], [\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"[89]\"]]]],\n \"SX\": [\"1\", \"011\", \"7215\\\\d{6}|(?:[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"1|(5\\\\d{6})$\", \"721$1\", 0, \"721\"],\n \"SY\": [\"963\", \"00\", \"[1-39]\\\\d{8}|[1-5]\\\\d{7}\", [8, 9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[1-5]\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"9\"], \"0$1\", 1]], \"0\"],\n \"SZ\": [\"268\", \"00\", \"0800\\\\d{4}|(?:[237]\\\\d|900)\\\\d{6}\", [8, 9], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[0237]\"]], [\"(\\\\d{5})(\\\\d{4})\", \"$1 $2\", [\"9\"]]]],\n \"TA\": [\"290\", \"00\", \"8\\\\d{3}\", [4], 0, 0, 0, 0, 0, 0, \"8\"],\n \"TC\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|649|900)\\\\d{7}\", [10], 0, \"1\", 0, \"1|([2-479]\\\\d{6})$\", \"649$1\", 0, \"649\"],\n \"TD\": [\"235\", \"00|16\", \"(?:22|[69]\\\\d|77)\\\\d{6}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[2679]\"]]], 0, 0, 0, 0, 0, 0, 0, \"00\"],\n \"TG\": [\"228\", \"00\", \"[279]\\\\d{7}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[279]\"]]]],\n \"TH\": [\"66\", \"00[1-9]\", \"(?:001800|[2-57]|[689]\\\\d)\\\\d{7}|1\\\\d{7,9}\", [8, 9, 10, 13], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"2\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[13-9]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"1\"]]], \"0\"],\n \"TJ\": [\"992\", \"810\", \"(?:00|[1-57-9]\\\\d)\\\\d{7}\", [9], [[\"(\\\\d{6})(\\\\d)(\\\\d{2})\", \"$1 $2 $3\", [\"331\", \"3317\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3\", [\"[34]7|91[78]\"]], [\"(\\\\d{4})(\\\\d)(\\\\d{4})\", \"$1 $2 $3\", [\"3[1-5]\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[0-57-9]\"]]], 0, 0, 0, 0, 0, 0, 0, \"8~10\"],\n \"TK\": [\"690\", \"00\", \"[2-47]\\\\d{3,6}\", [4, 5, 6, 7]],\n \"TL\": [\"670\", \"00\", \"7\\\\d{7}|(?:[2-47]\\\\d|[89]0)\\\\d{5}\", [7, 8], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[2-489]|70\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"7\"]]]],\n \"TM\": [\"993\", \"810\", \"[1-6]\\\\d{7}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2-$3-$4\", [\"12\"], \"(8 $1)\"], [\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\", \"$1 $2-$3-$4\", [\"[1-5]\"], \"(8 $1)\"], [\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"6\"], \"8 $1\"]], \"8\", 0, 0, 0, 0, 0, 0, \"8~10\"],\n \"TN\": [\"216\", \"00\", \"[2-57-9]\\\\d{7}\", [8], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[2-57-9]\"]]]],\n \"TO\": [\"676\", \"00\", \"(?:0800|(?:[5-8]\\\\d\\\\d|999)\\\\d)\\\\d{3}|[2-8]\\\\d{4}\", [5, 7], [[\"(\\\\d{2})(\\\\d{3})\", \"$1-$2\", [\"[2-4]|50|6[09]|7[0-24-69]|8[05]\"]], [\"(\\\\d{4})(\\\\d{3})\", \"$1 $2\", [\"0\"]], [\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[5-9]\"]]]],\n \"TR\": [\"90\", \"00\", \"4\\\\d{6}|8\\\\d{11,12}|(?:[2-58]\\\\d\\\\d|900)\\\\d{7}\", [7, 10, 12, 13], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"512|8[01589]|90\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"5(?:[0-59]|61)\", \"5(?:[0-59]|616)\", \"5(?:[0-59]|6161)\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[24][1-8]|3[1-9]\"], \"(0$1)\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{6,7})\", \"$1 $2 $3\", [\"80\"], \"0$1\", 1]], \"0\"],\n \"TT\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"1|([2-46-8]\\\\d{6})$\", \"868$1\", 0, \"868\"],\n \"TV\": [\"688\", \"00\", \"(?:2|7\\\\d\\\\d|90)\\\\d{4}\", [5, 6, 7], [[\"(\\\\d{2})(\\\\d{3})\", \"$1 $2\", [\"2\"]], [\"(\\\\d{2})(\\\\d{4})\", \"$1 $2\", [\"90\"]], [\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"7\"]]]],\n \"TW\": [\"886\", \"0(?:0[25-79]|19)\", \"[2-689]\\\\d{8}|7\\\\d{9,10}|[2-8]\\\\d{7}|2\\\\d{6}\", [7, 8, 9, 10, 11], [[\"(\\\\d{2})(\\\\d)(\\\\d{4})\", \"$1 $2 $3\", [\"202\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[258]0\"], \"0$1\"], [\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\", \"$1 $2 $3\", [\"[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]\", \"[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[49]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4,5})\", \"$1 $2 $3\", [\"7\"], \"0$1\"]], \"0\", 0, 0, 0, 0, 0, 0, 0, \"#\"],\n \"TZ\": [\"255\", \"00[056]\", \"(?:[26-8]\\\\d|41|90)\\\\d{7}\", [9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3\", [\"[89]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[24]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[67]\"], \"0$1\"]], \"0\"],\n \"UA\": [\"380\", \"00\", \"[89]\\\\d{9}|[3-9]\\\\d{8}\", [9, 10], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]\", \"6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"4[45][0-5]|5(?:0|6[37])|6(?:[12][018]|[36-8])|7|89|9[1-9]|(?:48|57)[0137-9]\", \"4[45][0-5]|5(?:0|6(?:3[14-7]|7))|6(?:[12][018]|[36-8])|7|89|9[1-9]|(?:48|57)[0137-9]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{5})\", \"$1 $2\", [\"[3-6]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[89]\"], \"0$1\"]], \"0\", 0, 0, 0, 0, 0, 0, \"0~0\"],\n \"UG\": [\"256\", \"00[057]\", \"800\\\\d{6}|(?:[29]0|[347]\\\\d)\\\\d{7}\", [9], [[\"(\\\\d{4})(\\\\d{5})\", \"$1 $2\", [\"202\", \"2024\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{6})\", \"$1 $2\", [\"[27-9]|4(?:6[45]|[7-9])\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{7})\", \"$1 $2\", [\"[34]\"], \"0$1\"]], \"0\"],\n \"US\": [\"1\", \"011\", \"[2-9]\\\\d{9}\", [10], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"($1) $2-$3\", [\"[2-9]\"], 0, 1, \"$1-$2-$3\"]], \"1\", 0, 0, 0, 0, 0, [[\"5(?:05(?:[2-57-9]\\\\d\\\\d|6(?:[0-35-9]\\\\d|44))|82(?:2(?:0[0-3]|[268]2)|3(?:0[02]|22|33)|4(?:00|4[24]|65|82)|5(?:00|29|58|83)|6(?:00|66|82)|7(?:58|77)|8(?:00|42|88)|9(?:00|9[89])))\\\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[0179]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[08]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01579]|5[12469]|7[0-389]|8[04-69]))[2-9]\\\\d{6}\"], [\"\"], [\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"], [\"900[2-9]\\\\d{6}\"], [\"52(?:355[0-46-9]|4(?:5(?:2[024-9]|5[0-46-9])|60[1-9]|9(?:2[0-5]|49)))\\\\d{4}|52(?:3(?:[2-46-9][02-9]|5[02-46-9])|4(?:[2-478][02-9]|5[034]|6[2-9]|9[05-9])|7[2-4]\\\\d)\\\\d{5}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[1256]|33|44|66|77|88)[2-9]\\\\d{6}\"]]],\n \"UY\": [\"598\", \"0(?:0|1[3-9]\\\\d)\", \"4\\\\d{9}|[1249]\\\\d{7}|(?:[49]\\\\d|80)\\\\d{5}\", [7, 8, 10], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"405|8|90\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"9\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[124]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"4\"], \"0$1\"]], \"0\", 0, 0, 0, 0, 0, 0, \"00\", \" int. \"],\n \"UZ\": [\"998\", \"810\", \"(?:33|55|[679]\\\\d|88)\\\\d{7}\", [9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[35-9]\"], \"8 $1\"]], \"8\", 0, 0, 0, 0, 0, 0, \"8~10\"],\n \"VA\": [\"39\", \"00\", \"0\\\\d{5,10}|3[0-8]\\\\d{7,10}|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?|(?:1\\\\d|39)\\\\d{7,8}\", [6, 7, 8, 9, 10, 11], 0, 0, 0, 0, 0, 0, \"06698\"],\n \"VC\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|784|900)\\\\d{7}\", [10], 0, \"1\", 0, \"1|([2-7]\\\\d{6})$\", \"784$1\", 0, \"784\"],\n \"VE\": [\"58\", \"00\", \"[68]00\\\\d{7}|(?:[24]\\\\d|[59]0)\\\\d{8}\", [10], [[\"(\\\\d{3})(\\\\d{7})\", \"$1-$2\", [\"[24-689]\"], \"0$1\"]], \"0\"],\n \"VG\": [\"1\", \"011\", \"(?:284|[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"1|([2-578]\\\\d{6})$\", \"284$1\", 0, \"284\"],\n \"VI\": [\"1\", \"011\", \"[58]\\\\d{9}|(?:34|90)0\\\\d{7}\", [10], 0, \"1\", 0, \"1|([2-9]\\\\d{6})$\", \"340$1\", 0, \"340\"],\n \"VN\": [\"84\", \"00\", \"[12]\\\\d{9}|[135-9]\\\\d{8}|[16]\\\\d{7}|[16-8]\\\\d{6}\", [7, 8, 9, 10], [[\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"80\"], \"0$1\", 1], [\"(\\\\d{4})(\\\\d{4,6})\", \"$1 $2\", [\"1\"], 0, 1], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[69]\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[3578]\"], \"0$1\", 1], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"2[48]\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\", \"$1 $2 $3\", [\"2\"], \"0$1\", 1]], \"0\"],\n \"VU\": [\"678\", \"00\", \"[57-9]\\\\d{6}|(?:[238]\\\\d|48)\\\\d{3}\", [5, 7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[57-9]\"]]]],\n \"WF\": [\"681\", \"00\", \"(?:40|72)\\\\d{4}|8\\\\d{5}(?:\\\\d{3})?\", [6, 9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"[478]\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"8\"]]]],\n \"WS\": [\"685\", \"0\", \"(?:[2-6]|8\\\\d{5})\\\\d{4}|[78]\\\\d{6}|[68]\\\\d{5}\", [5, 6, 7, 10], [[\"(\\\\d{5})\", \"$1\", [\"[2-5]|6[1-9]\"]], [\"(\\\\d{3})(\\\\d{3,7})\", \"$1 $2\", [\"[68]\"]], [\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"7\"]]]],\n \"XK\": [\"383\", \"00\", \"[23]\\\\d{7,8}|(?:4\\\\d\\\\d|[89]00)\\\\d{5}\", [8, 9], [[\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"[89]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[2-4]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[23]\"], \"0$1\"]], \"0\"],\n \"YE\": [\"967\", \"00\", \"(?:1|7\\\\d)\\\\d{7}|[1-7]\\\\d{6}\", [7, 8, 9], [[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[1-6]|7[24-68]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"7\"], \"0$1\"]], \"0\"],\n \"YT\": [\"262\", \"00\", \"80\\\\d{7}|(?:26|63)9\\\\d{6}\", [9], 0, \"0\", 0, 0, 0, 0, \"269|63\"],\n \"ZA\": [\"27\", \"00\", \"[1-79]\\\\d{8}|8\\\\d{4,9}\", [5, 6, 7, 8, 9, 10], [[\"(\\\\d{2})(\\\\d{3,4})\", \"$1 $2\", [\"8[1-4]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\", \"$1 $2 $3\", [\"8[1-4]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"860\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[1-9]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"8\"], \"0$1\"]], \"0\"],\n \"ZM\": [\"260\", \"00\", \"800\\\\d{6}|(?:21|63|[79]\\\\d)\\\\d{7}\", [9], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[28]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{7})\", \"$1 $2\", [\"[79]\"], \"0$1\"]], \"0\"],\n \"ZW\": [\"263\", \"00\", \"2(?:[0-57-9]\\\\d{6,8}|6[0-24-9]\\\\d{6,7})|[38]\\\\d{9}|[35-8]\\\\d{8}|[3-6]\\\\d{7}|[1-689]\\\\d{6}|[1-3569]\\\\d{5}|[1356]\\\\d{4}\", [5, 6, 7, 8, 9, 10], [[\"(\\\\d{3})(\\\\d{3,5})\", \"$1 $2\", [\"2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{2,4})\", \"$1 $2 $3\", [\"[49]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"80\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{7})\", \"$1 $2\", [\"24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2\", \"2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"7\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)\", \"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{6})\", \"$1 $2\", [\"8\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3,5})\", \"$1 $2\", [\"1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"29[013-9]|39|54\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3,5})\", \"$1 $2\", [\"(?:25|54)8\", \"258|5483\"], \"0$1\"]], \"0\"]\n },\n \"nonGeographic\": {\n \"800\": [\"800\", 0, \"(?:005|[1-9]\\\\d\\\\d)\\\\d{5}\", [8], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"\\\\d\"]]], 0, 0, 0, 0, 0, 0, [0, 0, [\"(?:005|[1-9]\\\\d\\\\d)\\\\d{5}\"]]],\n \"808\": [\"808\", 0, \"[1-9]\\\\d{7}\", [8], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[1-9]\"]]], 0, 0, 0, 0, 0, 0, [0, 0, 0, 0, 0, 0, 0, 0, 0, [\"[1-9]\\\\d{7}\"]]],\n \"870\": [\"870\", 0, \"7\\\\d{11}|[35-7]\\\\d{8}\", [9, 12], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[35-7]\"]]], 0, 0, 0, 0, 0, 0, [0, [\"(?:[356]|774[45])\\\\d{8}|7[6-8]\\\\d{7}\"]]],\n \"878\": [\"878\", 0, \"10\\\\d{10}\", [12], [[\"(\\\\d{2})(\\\\d{5})(\\\\d{5})\", \"$1 $2 $3\", [\"1\"]]], 0, 0, 0, 0, 0, 0, [0, 0, 0, 0, 0, 0, 0, 0, [\"10\\\\d{10}\"]]],\n \"881\": [\"881\", 0, \"[0-36-9]\\\\d{8}\", [9], [[\"(\\\\d)(\\\\d{3})(\\\\d{5})\", \"$1 $2 $3\", [\"[0-36-9]\"]]], 0, 0, 0, 0, 0, 0, [0, [\"[0-36-9]\\\\d{8}\"]]],\n \"882\": [\"882\", 0, \"[13]\\\\d{6}(?:\\\\d{2,5})?|285\\\\d{9}|(?:[19]\\\\d|49)\\\\d{6}\", [7, 8, 9, 10, 11, 12], [[\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"16|342\"]], [\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"4\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3\", [\"[19]\"]], [\"(\\\\d{2})(\\\\d{4})(\\\\d{3})\", \"$1 $2 $3\", [\"3[23]\"]], [\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"]], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"34[57]\"]], [\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"34\"]], [\"(\\\\d{2})(\\\\d{4,5})(\\\\d{5})\", \"$1 $2 $3\", [\"[1-3]\"]]], 0, 0, 0, 0, 0, 0, [0, [\"342\\\\d{4}|(?:337|49)\\\\d{6}|3(?:2|47|7\\\\d{3})\\\\d{7}\", [7, 8, 9, 10, 12]], 0, 0, 0, 0, 0, 0, [\"1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\\\d{4}|6\\\\d{5,10})|(?:(?:285\\\\d\\\\d|3(?:45|[69]\\\\d{3}))\\\\d|9[89])\\\\d{6}\"]]],\n \"883\": [\"883\", 0, \"(?:210|370\\\\d\\\\d)\\\\d{7}|51\\\\d{7}(?:\\\\d{3})?\", [9, 10, 12], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"510\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"2\"]], [\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"51[13]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"[35]\"]]], 0, 0, 0, 0, 0, 0, [0, 0, 0, 0, 0, 0, 0, 0, [\"(?:210|(?:370[1-9]|51[013]0)\\\\d)\\\\d{7}|5100\\\\d{5}\"]]],\n \"888\": [\"888\", 0, \"\\\\d{11}\", [11], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\", \"$1 $2 $3\"]], 0, 0, 0, 0, 0, 0, [0, 0, 0, 0, 0, 0, [\"\\\\d{11}\"]]],\n \"979\": [\"979\", 0, \"[1359]\\\\d{8}\", [9], [[\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"[1359]\"]]], 0, 0, 0, 0, 0, 0, [0, 0, 0, [\"[1359]\\\\d{8}\"]]]\n }\n};","// Importing from `.json.js` a workaround for a bug in web browsers' \"native\"\n// ES6 importing system which is uncapable of importing \"*.json\" files.\n// https://github.com/catamphetamine/libphonenumber-js/issues/239\nimport metadata from '../metadata.min.json.js';\nexport default metadata;\nexport function withMetadata(func, _arguments) {\n var args = Array.prototype.slice.call(_arguments);\n args.push(metadata);\n return func.apply(this, args);\n}","import $$observable from 'symbol-observable';\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\n\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\n\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n\n if (isDispatching) {\n throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\n\n\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n keys.push.apply(keys, Object.getOwnPropertySymbols(object));\n }\n\n if (enumerableOnly) keys = keys.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\n\n\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error('Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread2({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore };","/** PURE_IMPORTS_START _config,_util_hostReportError PURE_IMPORTS_END */\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nexport var empty = {\n closed: true,\n next: function next(value) {},\n error: function error(err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n } else {\n hostReportError(err);\n }\n },\n complete: function complete() {}\n};","import * as React from 'react';\n/** @hidden */\n\nexport var FormContext = React.createContext(null);","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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport { FormContext } from './FormContext';\n/**\n * Represents the Field component that is used inside the KendoReact Form component.\n * It uses `name` property to access field value and meta information from Form state.\n */\n\nexport var Field = function Field(props) {\n var name = props.name,\n component = props.component,\n validator = props.validator,\n children = props.children,\n others = __rest(props, [\"name\", \"component\", \"validator\", \"children\"]);\n\n var form = React.useContext(FormContext);\n var formId = form ? form.id : '';\n React.useEffect(function () {\n if (!form) {\n return;\n }\n\n var unregisterField = form.registerField(name, validator);\n return unregisterField;\n }, [name, formId, validator]);\n var onChange = React.useCallback(function (event) {\n // Adding a name here slows down the performance.\n // However, the other apprach taken by Formik is to search for the `name` attribute\n // on `event.target.value` which does not work for all KendoReact components.\n // If Formik uses custom components like the KendoReact ones, it would take the same approach.\n // On the other hand, ReactFinal Form performs better in both cases due to its\n // subscribtion-based model - the fields are subscribed for changes to a given field,\n // which prevents unnececery rerenders. Note that this might be fragile in future React versions -\n // the current performance testing accunts for a slight lag after 300 native HTML inputs in the 120ms-200ms range.\n var newValue = event ? event.value !== undefined ? event.value : event.target ? event.target.value : event.target : event;\n form.onChange(name, {\n value: newValue\n });\n }, [name, formId]);\n var onNativeComponentChange = React.useCallback(function (event) {\n return form.onChange(name, {\n value: event.target.value\n });\n }, [name, formId]);\n var onBlur = React.useCallback(function () {\n return form.onBlur(name);\n }, [name, formId]);\n var onFocus = React.useCallback(function () {\n return form.onFocus(name);\n }, [name, formId]);\n\n if (!form) {\n // TODO: For future versions - warn for missing form in dev mode\n // if (__process.env.NODE_ENV !== 'production') { // or __DEV__\n // throw new Error('Field must be used inside of a
    component');\n // }\n return null;\n }\n\n var value = form.valueGetter(name); // TODO: For future versions as it's better to have render prop\n // if (typeof children === 'function') {\n // return children({ ...field, children: undefined, ...others });\n // }\n\n if (typeof component === 'string') {\n // ignore meta, combine input with any other props\n return React.createElement(component, __assign({\n onChange: onNativeComponentChange,\n onBlur: onBlur,\n onFocus: onFocus,\n value: value,\n children: children\n }, others));\n }\n\n return React.createElement(component, __assign({\n // input\n onChange: onChange,\n onBlur: onBlur,\n onFocus: onFocus,\n value: value,\n // meta\n validationMessage: form.errors[name],\n touched: form.touched[name],\n modified: form.modified[name],\n visited: form.visited[name],\n // Our `valid` implementation requires double submit to show html5 validation errors,\n // however it's NOT recommended to show html5 validation errors at all as:\n // - There is no standard way to change validation look and feel with CSS.\n // - Look different in each browser / OS\n // - You can have a page in one language but an error message displayed in another language (not localizable)\n valid: !(Boolean(form.errors[name]) && form.touched[name]),\n children: children,\n name: name\n }, others));\n};\nField.displayName = 'KendoReactField';","/**\n * @hidden\n */\nexport var classNames = function classNames() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return args.filter(function (arg) {\n return arg !== true && !!arg;\n }).map(function (arg) {\n return Array.isArray(arg) ? classNames.apply(void 0, arg) : typeof arg === 'object' ? Object.keys(arg).map(function (key, idx) {\n return arg[idx] || arg[key] && key || null;\n }).filter(function (el) {\n return el !== null;\n }).join(' ') : arg;\n }).filter(function (arg) {\n return !!arg;\n }).join(' ');\n};","/* tslint:disable:no-bitwise */\n\n/**\n * @hidden\n */\nvar guid = function guid() {\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);\n }\n\n return id;\n};\n\nexport { guid };","/**\n * @hidden\n */\nvar canUseDOM = Boolean( // from fbjs\ntypeof window !== 'undefined' && window.document && window.document.createElement);\nexport { canUseDOM };","var proxy = function proxy(a, b) {\n return function (e) {\n return b(a(e));\n };\n};\n\nvar bind = function bind(el, event, callback) {\n return el.addEventListener && el.addEventListener(event, callback);\n};\n\nvar unbind = function unbind(el, event, callback) {\n return el && el.removeEventListener && el.removeEventListener(event, callback);\n};\n\nvar noop = function noop() {\n /* empty */\n};\n\nvar preventDefault = function preventDefault(e) {\n return e.preventDefault();\n};\n\nvar touchRegExp = /touch/; // 300ms is the usual mouse interval;\n// // However, an underpowered mobile device under a heavy load may queue mouse events for a longer period.\n\nvar IGNORE_MOUSE_TIMEOUT = 2000;\n\nfunction normalizeEvent(e) {\n if (e.type.match(touchRegExp)) {\n return {\n pageX: e.changedTouches[0].pageX,\n pageY: e.changedTouches[0].pageY,\n clientX: e.changedTouches[0].clientX,\n clientY: e.changedTouches[0].clientY,\n type: e.type,\n originalEvent: e,\n isTouch: true\n };\n }\n\n return {\n pageX: e.pageX,\n pageY: e.pageY,\n clientX: e.clientX,\n clientY: e.clientY,\n offsetX: e.offsetX,\n offsetY: e.offsetY,\n type: e.type,\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey,\n altKey: e.altKey,\n originalEvent: e\n };\n}\n\nexport var Draggable = function Draggable(ref) {\n var this$1 = this;\n var press = ref.press;\n if (press === void 0) press = noop;\n var drag = ref.drag;\n if (drag === void 0) drag = noop;\n var release = ref.release;\n if (release === void 0) release = noop;\n var mouseOnly = ref.mouseOnly;\n if (mouseOnly === void 0) mouseOnly = false;\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._ignoreMouse = false;\n this._mouseOnly = mouseOnly;\n\n this._touchstart = function (e) {\n if (e.touches.length === 1) {\n this$1._pressHandler(e);\n }\n };\n\n this._touchmove = function (e) {\n if (e.touches.length === 1) {\n this$1._dragHandler(e);\n }\n };\n\n this._touchend = function (e) {\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 if (e.touches.length === 0 && e.changedTouches.length === 1) {\n this$1._releaseHandler(e);\n\n this$1._ignoreMouse = true;\n setTimeout(this$1._restoreMouse, IGNORE_MOUSE_TIMEOUT);\n }\n };\n\n this._restoreMouse = function () {\n this$1._ignoreMouse = false;\n };\n\n this._mousedown = function (e) {\n var which = e.which;\n\n if (which && which > 1 || this$1._ignoreMouse) {\n return;\n }\n\n bind(this$1.document, \"mousemove\", this$1._mousemove);\n bind(this$1.document, \"mouseup\", this$1._mouseup);\n\n this$1._pressHandler(e);\n };\n\n this._mousemove = function (e) {\n this$1._dragHandler(e);\n };\n\n this._mouseup = function (e) {\n unbind(this$1.document, \"mousemove\", this$1._mousemove);\n unbind(this$1.document, \"mouseup\", this$1._mouseup);\n\n this$1._releaseHandler(e);\n };\n\n this._pointerdown = function (e) {\n if (e.isPrimary && e.button === 0) {\n bind(this$1.document, \"pointermove\", this$1._pointermove);\n bind(this$1.document, \"pointerup\", this$1._pointerup);\n bind(this$1.document, \"pointercancel\", this$1._pointerup);\n bind(this$1.document, \"contextmenu\", preventDefault);\n\n this$1._pressHandler(e);\n }\n };\n\n this._pointermove = function (e) {\n if (e.isPrimary) {\n this$1._dragHandler(e);\n }\n };\n\n this._pointerup = function (e) {\n if (e.isPrimary) {\n unbind(this$1.document, \"pointermove\", this$1._pointermove);\n unbind(this$1.document, \"pointerup\", this$1._pointerup);\n unbind(this$1.document, \"pointercancel\", this$1._pointerup);\n unbind(this$1.document, \"contextmenu\", preventDefault);\n\n this$1._releaseHandler(e);\n }\n };\n};\nvar prototypeAccessors = {\n document: {\n configurable: true\n }\n};\n\nDraggable.supportPointerEvent = function supportPointerEvent() {\n return typeof window !== 'undefined' && window.PointerEvent;\n};\n\nprototypeAccessors.document.get = function () {\n return this._element ? this._element.ownerDocument : document;\n};\n\nDraggable.prototype.bindTo = function bindTo(element) {\n if (element === this._element) {\n return;\n }\n\n if (this._element) {\n this._unbindFromCurrent();\n }\n\n this._element = element;\n\n this._bindToCurrent();\n};\n\nDraggable.prototype._bindToCurrent = function _bindToCurrent() {\n var element = this._element;\n\n if (this._usePointers()) {\n bind(element, \"pointerdown\", this._pointerdown);\n return;\n }\n\n bind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n bind(element, \"touchstart\", this._touchstart);\n bind(element, \"touchmove\", this._touchmove);\n bind(element, \"touchend\", this._touchend);\n }\n};\n\nDraggable.prototype._unbindFromCurrent = function _unbindFromCurrent() {\n var element = this._element;\n\n if (this._usePointers()) {\n unbind(element, \"pointerdown\", this._pointerdown);\n unbind(this.document, \"pointermove\", this._pointermove);\n unbind(this.document, \"pointerup\", this._pointerup);\n unbind(this.document, \"contextmenu\", preventDefault);\n unbind(this.document, \"pointercancel\", this._pointerup);\n return;\n }\n\n unbind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n unbind(element, \"touchstart\", this._touchstart);\n unbind(element, \"touchmove\", this._touchmove);\n unbind(element, \"touchend\", this._touchend);\n }\n};\n\nDraggable.prototype._usePointers = function _usePointers() {\n return !this._mouseOnly && Draggable.supportPointerEvent();\n};\n\nDraggable.prototype.update = function update(ref) {\n var press = ref.press;\n if (press === void 0) press = noop;\n var drag = ref.drag;\n if (drag === void 0) drag = noop;\n var release = ref.release;\n if (release === void 0) release = noop;\n var mouseOnly = ref.mouseOnly;\n if (mouseOnly === void 0) mouseOnly = false;\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._mouseOnly = mouseOnly;\n};\n\nDraggable.prototype.destroy = function destroy() {\n this._unbindFromCurrent();\n\n this._element = null;\n};\n\nObject.defineProperties(Draggable.prototype, prototypeAccessors); // Re-export as \"default\" field to address a bug\n// where the ES Module is imported by CommonJS code.\n//\n// See https://github.com/telerik/kendo-angular/issues/1314\n\nDraggable.default = Draggable; // Rollup won't output exports['default'] otherwise\n\nexport default Draggable;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport KendoDraggable from '@telerik/kendo-draggable';\n/**\n * @hidden\n */\n\nvar Draggable =\n/** @class */\nfunction (_super) {\n __extends(Draggable, _super);\n\n function Draggable() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n\n\n _this.element = null;\n _this.draggable = new KendoDraggable({\n press: function press(event) {\n if (_this.element && _this.props.onPress) {\n _this.props.onPress.call(undefined, {\n target: _this,\n event: event,\n element: _this.element\n });\n }\n },\n drag: function drag(event) {\n if (_this.element && _this.props.onDrag) {\n _this.props.onDrag.call(undefined, {\n target: _this,\n event: event,\n element: _this.element\n });\n }\n },\n release: function release(event) {\n if (_this.element && _this.props.onRelease) {\n _this.props.onRelease.call(undefined, {\n target: _this,\n event: event\n });\n }\n }\n });\n\n _this.assingRef = function (element) {\n _this.element = element;\n };\n\n return _this;\n }\n\n Draggable.prototype.componentDidMount = function () {\n if (this.element) {\n this.draggable.bindTo(this.element);\n }\n };\n\n Draggable.prototype.componentWillUnmount = function () {\n this.draggable.destroy();\n };\n\n Draggable.prototype.render = function () {\n return React.cloneElement(React.Children.only(this.props.children), {\n ref: this.assingRef\n });\n };\n\n Draggable.propTypes = {\n children: PropTypes.element.isRequired\n };\n return Draggable;\n}(React.Component);\n\nexport { Draggable };","/**\n * @hidden\n */\nexport var FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;","import { FIELD_REGEX } from './constants';\n/**\n * @hidden\n */\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}","import { fieldList } from './fieldList';\nvar getterCache = {};\n\ngetterCache.undefined = function () {\n return undefined;\n};\n/**\n * Can be used for getting value from object using field path. For example `users[index].name`.\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 */\n\n\nexport function getter(field) {\n if (getterCache[field]) {\n return getterCache[field];\n }\n\n var fields = fieldList(field);\n\n getterCache[field] = function (obj) {\n var result = obj;\n\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}","import { fieldList } from './fieldList';\nvar setterCache = {};\n\nsetterCache.undefined = function (obj) {\n return obj;\n};\n\nvar defaultValue = function defaultValue(nextField, options) {\n return options && options.arrays && !isNaN(Number(nextField)) ? [] : {};\n};\n/**\n * Can be used for setting value to object using field path. For example `users[index].name`.\n * @example\n * ```jsx-no-run\n * const values = {users:[{lastName: 'Doe'}]};\n * const firstUserFirstName = setter('user[0].firstName');\n *\n * firstUserFirstName(values, 'John');\n *\n * console.log(values)\n *\n * // result: {users:[{firstName: 'John', lastName: 'Doe'}]}\n * ```\n */\n\n\nexport function setter(field) {\n if (setterCache[field]) {\n return setterCache[field];\n }\n\n var fields = fieldList(field);\n\n setterCache[field] = function (obj, value, options) {\n var root = obj;\n var depth = fields.length - 1;\n\n for (var idx = 0; idx < depth && root; idx++) {\n root = root[fields[idx]] = root[fields[idx]] || defaultValue(fields[idx + 1], options);\n }\n\n root[fields[depth]] = value;\n };\n\n return setterCache[field];\n}","/**\n * @hidden\n */\nexport var cloneDate = function cloneDate(date) {\n return date ? new Date(date.getTime()) : null;\n};\n/**\n * @hidden\n */\n\nexport function clone(obj) {\n var result = {};\n cloneObject(obj, result);\n return result;\n}\n/**\n * @hidden\n */\n\nexport function cloneObject(obj, result) {\n for (var field in obj) {\n if (obj.hasOwnProperty(field)) {\n var value = obj[field];\n result[field] = cloneValue(value, result[field]);\n }\n }\n}\n/**\n * @hidden\n */\n\nexport function cloneValue(value, nextValue) {\n if (Array.isArray(value)) {\n return cloneArray(value);\n } else if (value instanceof Date) {\n return cloneDate(value);\n } else if (value && typeof value === 'object') {\n var newNextValue = nextValue || {};\n cloneObject(value, newNextValue);\n return newNextValue;\n } else {\n return value;\n }\n}\n/**\n * @hidden\n */\n\nexport function cloneArray(array) {\n return array.map(function (value) {\n return cloneValue(value, undefined);\n });\n}","/**\n * @hidden\n */\nvar DISABLED_TABINDEX = -1;\n/**\n * @hidden\n */\n\nvar DEFAULT_TABINDEX = 0;\n/**\n * @hidden\n */\n\nexport var getTabIndex = function getTabIndex(tabIndex, disabled, useDefaultTabIndexWhenDisabled) {\n var parsedTabIndex = typeof tabIndex === 'string' ? parseInt(tabIndex, undefined) : tabIndex;\n\n if (parsedTabIndex === NaN) {\n return undefined;\n }\n\n return parsedTabIndex !== undefined ? parsedTabIndex : disabled ? useDefaultTabIndexWhenDisabled ? undefined : DISABLED_TABINDEX : DEFAULT_TABINDEX;\n};","/**\n * @hidden\n */\nexport var SIZE_CLASSES = {\n 'default': '',\n 'xsmall': 'k-icon-xs',\n 'small': 'k-icon-sm',\n 'medium': 'k-icon-md',\n 'large': 'k-icon-lg',\n 'xlarge': 'k-icon-xl'\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '../classNames';\nimport { SIZE_CLASSES } from './constants';\n/**\n * Represents the [KendoReact Icon component]({% slug overview_icon %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n * return (\n * \n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\n\nexport var Icon = React.forwardRef(function (props, ref) {\n var className = props.className,\n name = props.name,\n themeColor = props.themeColor,\n size = props.size,\n flip = props.flip,\n style = props.style,\n others = __rest(props, [\"className\", \"name\", \"themeColor\", \"size\", \"flip\", \"style\"]);\n\n var elementRef = React.useRef(null);\n React.useImperativeHandle(ref, function () {\n return {\n element: elementRef.current\n };\n });\n var themeColorProp = React.useMemo(function () {\n return themeColor || defaultProps.themeColor;\n }, [themeColor]);\n var sizeProp = React.useMemo(function () {\n return size || defaultProps.size;\n }, [size]);\n var flipProp = React.useMemo(function () {\n return flip || defaultProps.flip;\n }, [flip]);\n var fontClassNames = React.useMemo(function () {\n return classNames('k-icon', 'k-i-' + name, 'k-color-' + themeColorProp, {\n 'k-flip-h': flipProp === 'horizontal' || flipProp === 'both',\n 'k-flip-v': flipProp === 'vertical' || flipProp === 'both'\n }, SIZE_CLASSES[sizeProp], className);\n }, [name, themeColorProp, sizeProp, flipProp, className]);\n return React.createElement(\"span\", __assign({\n className: fontClassNames,\n style: style,\n ref: elementRef,\n role: \"presentation\"\n }, others));\n});\nIcon.propTypes = {\n style: PropTypes.object,\n classNames: PropTypes.string,\n name: PropTypes.string,\n themeColor: PropTypes.oneOf(['inherit', 'primary', 'secondary', 'tertiary', 'info', 'success', 'error', 'warning', 'dark', 'light', 'inverse']),\n size: PropTypes.oneOf(['default', 'xsmall', 'small', 'medium', 'large', 'xlarge']),\n flip: PropTypes.oneOf(['default', 'horizontal', 'vertical', 'both'])\n};\nvar defaultProps = {\n size: 'default',\n themeColor: 'inherit',\n flip: 'default'\n};\nIcon.displayName = 'KendoIcon';","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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '../classNames';\nimport { SIZE_CLASSES } from './constants';\n/**\n * Represents the [KendoReact SvgIcon component]({% slug overview_svgicon %}).\n *\n * @example\n * ```jsx\n * import { accessibility } from '@progress/kendo-svg-icons';\n *\n * const App = () => {\n * return (\n * \n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\n\nexport var SvgIcon = React.forwardRef(function (props, ref) {\n var children = props.children,\n className = props.className,\n svgClassName = props.svgClassName,\n icon = props.icon,\n flip = props.flip,\n size = props.size,\n style = props.style,\n svgStyle = props.svgStyle,\n themeColor = props.themeColor,\n viewBox = props.viewBox,\n others = __rest(props, [\"children\", \"className\", \"svgClassName\", \"icon\", \"flip\", \"size\", \"style\", \"svgStyle\", \"themeColor\", \"viewBox\"]);\n\n var elementRef = React.useRef(null);\n React.useImperativeHandle(ref, function () {\n return {\n element: elementRef.current\n };\n });\n var iconNameProp = React.useMemo(function () {\n return icon ? icon.name : defaultProps.icon;\n }, [icon]);\n var themeColorProp = React.useMemo(function () {\n return themeColor || defaultProps.themeColor;\n }, [themeColor]);\n var sizeProp = React.useMemo(function () {\n return size || defaultProps.size;\n }, [size]);\n var flipProp = React.useMemo(function () {\n return flip || defaultProps.flip;\n }, [flip]);\n var viewBoxProp = React.useMemo(function () {\n return viewBox || defaultProps.viewBox;\n }, [viewBox]);\n var elementClassNames = React.useMemo(function () {\n return classNames('k-svg-icon', 'k-color-' + themeColorProp, 'k-svg-i-' + iconNameProp, {\n 'k-flip-h': flipProp === 'horizontal' || flipProp === 'both',\n 'k-flip-v': flipProp === 'vertical' || flipProp === 'both'\n }, SIZE_CLASSES[sizeProp], className);\n }, [iconNameProp, themeColorProp, sizeProp, flipProp, className]);\n var elementStyle = React.useMemo(function () {\n if (props.width && props.height) {\n return __assign({\n width: props.width,\n height: props.height\n }, style);\n } else if (props.width) {\n return __assign({\n width: props.width,\n height: props.width\n }, style);\n } else if (props.height) {\n return __assign({\n width: props.height,\n height: props.height\n }, style);\n } else {\n return __assign({}, style);\n }\n }, [props.width, props.height, style]);\n return React.createElement(\"span\", {\n className: elementClassNames,\n style: elementStyle,\n ref: elementRef\n }, React.createElement(\"svg\", __assign({\n className: svgClassName,\n style: svgStyle,\n \"aria-hidden\": true,\n focusable: \"false\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: icon ? icon.viewBox : viewBoxProp,\n dangerouslySetInnerHTML: icon ? {\n __html: icon.content\n } : undefined\n }, others), icon ? undefined : children));\n});\nSvgIcon.propTypes = {\n style: PropTypes.object,\n classNames: PropTypes.string,\n children: PropTypes.any,\n icon: PropTypes.object,\n themeColor: PropTypes.oneOf(['inherit', 'primary', 'secondary', 'tertiary', 'info', 'success', 'error', 'warning', 'dark', 'light', 'inverse']),\n size: PropTypes.oneOf(['default', 'xsmall', 'small', 'medium', 'large', 'xlarge']),\n flip: PropTypes.oneOf(['default', 'horizontal', 'vertical', 'both'])\n};\nvar defaultProps = {\n size: 'default',\n themeColor: 'inherit',\n flip: 'default',\n icon: '',\n viewBox: '0 0 24 24'\n};\nSvgIcon.displayName = 'KendoSvgIcon';","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { FormContext } from './FormContext';\nimport { getter, setter, clone, cloneObject, guid } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\n\nvar FORCEUPDATE_ACCUMULATOR_TIMEOUT = 0;\n/**\n * Represents the [KendoReact Form component]({% slug overview_form %}).\n *\n * @example\n * ```jsx\n * export const FormInput = (fieldRenderProps) => {\n * const onValueChange = React.useCallback(\n * (event) => fieldRenderProps.onChange(event.target.value),\n * [fieldRenderProps.onChange]\n * );\n * return (\n * \n * );\n * };\n *\n * export const App = () => {\n * const handleSubmit = (dataItem) => alert(JSON.stringify(dataItem));\n * return (\n * (\n *
    \n * \n * \n * Submit\n * \n *
    \n * )}\n * />\n * );\n * };\n *\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\n\nvar Form =\n/** @class */\nfunction (_super) {\n __extends(Form, _super);\n /**\n * @hidden\n */\n\n\n function Form(props) {\n var _this = _super.call(this, props) || this;\n\n _this._id = guid();\n _this._touched = {};\n _this._visited = {};\n _this._modified = {};\n _this._validatorsByField = {};\n _this._values = {};\n _this._fields = {};\n _this._unmounted = false;\n /**\n * @hidden\n */\n\n _this.isValid = function () {\n return _this.isFormValid(_this.errors);\n };\n /**\n * @hidden\n */\n\n\n _this.accumulatedForceUpdate = function () {\n // IMPORTANT:\n // Should only be used for updates not comming from editors as it\n // will cause cursor jump as react will reset the editor to old value\n if (_this._accumulatorTimeout) {\n clearTimeout(_this._accumulatorTimeout);\n }\n\n _this._accumulatorTimeout = setTimeout(function () {\n _this._accumulatorTimeout = undefined;\n\n _this.forceUpdate();\n }, FORCEUPDATE_ACCUMULATOR_TIMEOUT);\n };\n /**\n * @hidden\n */\n\n\n _this.resetForm = function () {\n _this.values = clone(_this.props.initialValues);\n _this._id = guid();\n _this._touched = {};\n _this._visited = {};\n _this._modified = {};\n _this._validatorsByField = {};\n _this._fields = {};\n\n _this.forceUpdate();\n };\n /**\n * Method for resetting the form state outside the form component.\n *\n * > Use `onReset` only if you cannot achieve the desired behavior through the Field component or by FormRenderProps.\n */\n\n\n _this.onReset = function () {\n return _this.resetForm();\n };\n /**\n * @hidden\n */\n\n\n _this.addField = function (field) {\n _this._fields[field] = true;\n };\n /**\n * @hidden\n */\n\n\n _this.onSubmit = function (event) {\n var touchedVisited = {};\n var fields = _this.fields;\n\n if (event) {\n if (typeof event.preventDefault === 'function') {\n event.preventDefault();\n }\n\n if (typeof event.stopPropagation === 'function') {\n event.stopPropagation();\n }\n }\n\n fields.forEach(function (fieldName) {\n touchedVisited[fieldName] = true;\n }); // show validations\n\n _this.visited = __assign({}, touchedVisited);\n _this.touched = __assign({}, touchedVisited);\n var values = _this.values;\n\n var isValid = _this.isFormValid(_this.errors);\n\n var isModified = _this.isFormModified(_this.modified, fields); // TODO: introduce form state prop 'submitted'\n\n\n if (_this.props.onSubmitClick) {\n _this.props.onSubmitClick.call(undefined, {\n values: values,\n isValid: isValid,\n isModified: isModified,\n event: event\n });\n }\n\n if (isValid && isModified && _this.props.onSubmit) {\n _this.props.onSubmit.call(undefined, values, event);\n }\n\n _this.forceUpdate();\n };\n /**\n * Method for emiting changes to a specific field outside the form component.\n *\n * > Use `onChange` only if you cannot achieve the desired behavior through the Field component by FormRenderProps.\n */\n\n\n _this.onChange = function (name, options) {\n var _a;\n\n var value = options.value;\n\n _this.addField(name);\n\n if (!_this.modified[name]) {\n _this.modified = __assign({}, _this.modified, (_a = {}, _a[name] = true, _a));\n }\n\n _this.onBlur(name, true);\n\n _this.valueSetter(name, value);\n\n _this.forceUpdate();\n };\n /**\n * @hidden\n */\n\n\n _this.onFocus = function (name, skipForceUpdate) {\n var _a;\n\n if (_this.visited[name]) {\n return;\n }\n\n _this.visited = __assign({}, _this.visited, (_a = {}, _a[name] = true, _a));\n\n if (!skipForceUpdate) {\n _this.forceUpdate();\n }\n };\n /**\n * @hidden\n */\n\n\n _this.onBlur = function (name, skipForceUpdate) {\n var _a;\n\n if (_this.touched[name]) {\n return;\n }\n\n _this.onFocus(name, skipForceUpdate);\n\n _this.touched = __assign({}, _this.touched, (_a = {}, _a[name] = true, _a));\n\n if (!skipForceUpdate) {\n _this.forceUpdate();\n }\n };\n /**\n * @hidden\n */\n\n\n _this.onFieldRegister = function (name, validator) {\n var _a;\n\n _this.addField(name); // The sole reason for using class props over state - nextIndex, needed for destroying validators\n\n\n var oldValidators = _this.validatorsByField[name] || [];\n var nextIndex = oldValidators.length;\n _this.validatorsByField = __assign({}, _this.validatorsByField, (_a = {}, _a[name] = oldValidators.concat([validator]), _a));\n\n _this.accumulatedForceUpdate();\n\n return function () {\n var _a; // onFieldUnregister:\n\n\n if (_this._unmounted) {\n return;\n }\n\n var newValidators = (_this.validatorsByField[name] || []).slice();\n var validatorIsUnregistered = Boolean(newValidators[nextIndex]);\n newValidators[nextIndex] = undefined;\n _this.validatorsByField = __assign({}, _this.validatorsByField, (_a = {}, _a[name] = newValidators, _a));\n\n if (validatorIsUnregistered) {\n _this.accumulatedForceUpdate();\n }\n };\n };\n /**\n * @hidden\n */\n\n\n _this.isFormValid = function (errors) {\n return !Object.keys(errors).some(function (fieldName) {\n return Boolean(errors[fieldName]);\n });\n };\n /**\n * @hidden\n */\n\n\n _this.isFormModified = function (modified, fields) {\n return fields.some(function (fieldName) {\n return modified[fieldName];\n });\n };\n /**\n * @hidden\n */\n\n\n _this.isFormHasNotTouched = function (touched, fields) {\n return fields.some(function (fieldName) {\n return !touched[fieldName];\n });\n };\n /**\n * @hidden\n */\n\n\n _this.isFormTouched = function (touched, fields) {\n return fields.some(function (fieldName) {\n return touched[fieldName];\n });\n };\n /**\n * @hidden\n */\n\n\n _this.isFormVisited = function (visited, fields) {\n return fields.some(function (fieldName) {\n return visited[fieldName];\n });\n };\n /**\n * @hidden\n */\n\n\n _this.valueGetter = function (fieldName) {\n return getter(fieldName)(_this.values);\n };\n /**\n * @hidden\n */\n\n\n _this.valueSetter = function (fieldName, value) {\n return setter(fieldName)(_this.values, value);\n };\n /**\n * @hidden\n */\n\n\n _this.onArrayAction = function (name) {\n var _a;\n\n _this.addField(name);\n\n if (!_this.modified[name]) {\n _this.modified = __assign({}, _this.modified, (_a = {}, _a[name] = true, _a));\n }\n\n _this.onBlur(name, true);\n };\n /**\n * @hidden\n */\n\n\n _this.onInsert = function (name, options) {\n _this.onArrayAction(name);\n\n var newArray = (_this.valueGetter(name) || []).slice();\n newArray.splice(options.index, 0, options.value);\n\n _this.valueSetter(name, newArray);\n\n _this.forceUpdate();\n };\n /**\n * @hidden\n */\n\n\n _this.onUnshift = function (name, options) {\n _this.onInsert(name, {\n value: options.value,\n index: 0\n });\n };\n /**\n * @hidden\n */\n\n\n _this.onPush = function (name, options) {\n _this.onArrayAction(name);\n\n var newArray = (_this.valueGetter(name) || []).concat([options.value]);\n\n _this.valueSetter(name, newArray);\n\n _this.forceUpdate();\n };\n /**\n * @hidden\n */\n\n\n _this.onPop = function (name) {\n _this.onArrayAction(name);\n\n var newArray = (_this.valueGetter(name) || []).slice();\n var value = newArray.pop();\n\n _this.valueSetter(name, newArray);\n\n _this.forceUpdate();\n\n return value;\n };\n /**\n * @hidden\n */\n\n\n _this.onRemove = function (name, options) {\n _this.onArrayAction(name);\n\n var newArray = (_this.valueGetter(name) || []).slice();\n var value = newArray.splice(options.index, 1);\n\n _this.valueSetter(name, newArray);\n\n _this.forceUpdate();\n\n return value;\n };\n /**\n * @hidden\n */\n\n\n _this.onReplace = function (name, options) {\n _this.onArrayAction(name);\n\n var newArray = (_this.valueGetter(name) || []).slice();\n newArray.splice(options.index, 1, options.value);\n\n _this.valueSetter(name, newArray);\n\n _this.forceUpdate();\n };\n /**\n * @hidden\n */\n\n\n _this.onMove = function (name, options) {\n _this.onArrayAction(name);\n\n var newArray = (_this.valueGetter(name) || []).slice();\n var value = newArray[options.prevIndex];\n newArray.splice(options.prevIndex, 1);\n newArray.splice(options.nextIndex, 0, value);\n\n _this.valueSetter(name, newArray);\n\n _this.forceUpdate();\n };\n\n _this.values = clone(props.initialValues);\n return _this;\n }\n\n Object.defineProperty(Form.prototype, \"touched\", {\n /**\n * @hidden\n */\n get: function get() {\n return this._touched;\n },\n\n /**\n * @hidden\n */\n set: function set(value) {\n this._touched = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Form.prototype, \"visited\", {\n /**\n * @hidden\n */\n get: function get() {\n return this._visited;\n },\n\n /**\n * @hidden\n */\n set: function set(value) {\n this._visited = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Form.prototype, \"modified\", {\n /**\n * @hidden\n */\n get: function get() {\n return this._modified;\n },\n\n /**\n * @hidden\n */\n set: function set(value) {\n this._modified = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Form.prototype, \"validatorsByField\", {\n /**\n * @hidden\n */\n get: function get() {\n return this._validatorsByField;\n },\n\n /**\n * @hidden\n */\n set: function set(value) {\n this._validatorsByField = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Form.prototype, \"values\", {\n /**\n * @hidden\n */\n get: function get() {\n return this._values;\n },\n\n /**\n * @hidden\n */\n set: function set(value) {\n this._values = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Form.prototype, \"fields\", {\n /**\n * @hidden\n */\n get: function get() {\n return Object.keys(this._fields);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Form.prototype, \"formErrors\", {\n /**\n * @hidden\n */\n get: function get() {\n if (this.props.validator) {\n return this.props.validator(this.values, this.valueGetter);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Form.prototype, \"errors\", {\n /**\n * @hidden\n */\n get: function get() {\n var _this = this;\n\n var errors = {};\n var fields = this.fields;\n var validatorsByField = this.validatorsByField;\n fields.forEach(function (fieldName) {\n errors[fieldName] = '';\n\n if (validatorsByField[fieldName]) {\n var validators_1 = [];\n validatorsByField[fieldName].forEach(function (validator) {\n if (Array.isArray(validator)) {\n validators_1.push.apply(validators_1, validator);\n } else {\n validators_1.push(validator);\n }\n }); // find first validation error\n\n validators_1.find(function (validator) {\n if (validator) {\n var result = validator(_this.valueGetter(fieldName), _this.valueGetter, {\n name: fieldName\n });\n\n if (result) {\n errors[fieldName] = result;\n return true;\n }\n }\n\n return false;\n });\n }\n });\n var formErrors = this.formErrors;\n\n if (formErrors) {\n cloneObject(this.formErrors, errors);\n }\n\n return errors;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n Form.prototype.componentWillUnmount = function () {\n this._unmounted = true;\n\n if (this._accumulatorTimeout) {\n clearTimeout(this._accumulatorTimeout);\n }\n };\n /**\n * @hidden\n */\n\n\n Form.prototype.render = function () {\n var render = this.props.render;\n var touched = this.touched;\n var visited = this.visited;\n var modified = this.modified;\n var fields = this.fields;\n var errors = this.errors;\n var formValid = this.isFormValid(errors);\n var formModified = this.isFormModified(modified, fields);\n var formTouched = this.isFormTouched(touched, fields);\n var formVisited = this.isFormVisited(visited, fields);\n var formHasNotTouched = this.isFormHasNotTouched(touched, fields); // 1. The form is not touched, but has errors - allow submit to force validation.\n // 2. The form is valid and modified - if not modified, disable submit.\n\n var allowSubmit = formHasNotTouched && !formValid || formValid && formModified;\n return React.createElement(FormContext.Provider, {\n key: this._id,\n value: {\n id: this._id,\n valueGetter: this.valueGetter,\n errors: errors,\n modified: modified,\n touched: touched,\n visited: visited,\n registerField: this.onFieldRegister,\n onSubmit: this.onSubmit,\n onChange: this.onChange,\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n onUnshift: this.onUnshift,\n onPush: this.onPush,\n onInsert: this.onInsert,\n onPop: this.onPop,\n onRemove: this.onRemove,\n onReplace: this.onReplace,\n onMove: this.onMove\n }\n }, render({\n valid: formValid,\n modified: formModified,\n touched: formTouched,\n visited: formVisited,\n valueGetter: this.valueGetter,\n errors: errors,\n allowSubmit: allowSubmit,\n onChange: this.onChange,\n onSubmit: this.onSubmit,\n onFormReset: this.resetForm\n }));\n };\n /**\n * @hidden\n */\n\n\n Form.displayName = 'KendoReactForm';\n /**\n * @hidden\n */\n\n Form.propTypes = {\n initialValues: PropTypes.any,\n onSubmit: PropTypes.func,\n onSubmitClick: PropTypes.func,\n render: PropTypes.func.isRequired\n };\n return Form;\n}(React.Component);\n\nexport { Form };","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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { FormContext } from './FormContext';\n/**\n * Represents the KendoReact FormElement component.\n * It's small wrapper around HTML form element which automatically attach the\n * Form component's `onSubmit` render prop and Kendo CSS classes.\n * Other props are passed to the DOM node.\n */\n\nexport var FormElement = function FormElement(props) {\n var form = React.useContext(FormContext);\n\n var className = props.className,\n onSubmit = props.onSubmit,\n style = props.style,\n horizontal = props.horizontal,\n others = __rest(props, [\"className\", \"onSubmit\", \"style\", \"horizontal\"]);\n\n var formClassName = classNames({\n 'k-form': true,\n 'k-form-horizontal': horizontal === true\n }, className);\n return React.createElement(\"form\", __assign({}, others, {\n style: props.style,\n className: formClassName,\n onSubmit: form ? form.onSubmit : undefined\n }), props.children);\n};\nFormElement.displayName = 'KendoReactFormElement';","import { Field } from './Field';\nimport { Form } from './Form';\nimport { FieldArray } from './FieldArray';\nimport { FieldWrapper } from './FieldWrapper';\nimport { FormElement } from './FormElement';\nexport { FieldArray, Field, Form, FieldWrapper, FormElement };","'use strict';\n\nvar reactIs = require('react-is');\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\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;\n\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;","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isFunction(x) {\n return typeof x === 'function';\n}","/**\n * @hidden\n */\nexport var classNames = function classNames() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return args.filter(function (arg) {\n return arg !== true && !!arg;\n }).map(function (arg) {\n return Array.isArray(arg) ? classNames.apply(void 0, arg) : typeof arg === 'object' ? Object.keys(arg).map(function (key, idx) {\n return arg[idx] || arg[key] && key || null;\n }).filter(function (el) {\n return el !== null;\n }).join(' ') : arg;\n }).filter(function (arg) {\n return !!arg;\n }).join(' ');\n};","/**\n * @hidden\n */\nvar canUseDOM = Boolean( // from fbjs\ntypeof window !== 'undefined' && window.document && window.document.createElement);\nexport { canUseDOM };","var proxy = function proxy(a, b) {\n return function (e) {\n return b(a(e));\n };\n};\n\nvar bind = function bind(el, event, callback) {\n return el.addEventListener && el.addEventListener(event, callback);\n};\n\nvar unbind = function unbind(el, event, callback) {\n return el && el.removeEventListener && el.removeEventListener(event, callback);\n};\n\nvar noop = function noop() {\n /* empty */\n};\n\nvar preventDefault = function preventDefault(e) {\n return e.preventDefault();\n};\n\nvar touchRegExp = /touch/; // 300ms is the usual mouse interval;\n// // However, an underpowered mobile device under a heavy load may queue mouse events for a longer period.\n\nvar IGNORE_MOUSE_TIMEOUT = 2000;\n\nfunction normalizeEvent(e) {\n if (e.type.match(touchRegExp)) {\n return {\n pageX: e.changedTouches[0].pageX,\n pageY: e.changedTouches[0].pageY,\n clientX: e.changedTouches[0].clientX,\n clientY: e.changedTouches[0].clientY,\n type: e.type,\n originalEvent: e,\n isTouch: true\n };\n }\n\n return {\n pageX: e.pageX,\n pageY: e.pageY,\n clientX: e.clientX,\n clientY: e.clientY,\n offsetX: e.offsetX,\n offsetY: e.offsetY,\n type: e.type,\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey,\n altKey: e.altKey,\n originalEvent: e\n };\n}\n\nexport var Draggable = function Draggable(ref) {\n var this$1 = this;\n var press = ref.press;\n if (press === void 0) press = noop;\n var drag = ref.drag;\n if (drag === void 0) drag = noop;\n var release = ref.release;\n if (release === void 0) release = noop;\n var mouseOnly = ref.mouseOnly;\n if (mouseOnly === void 0) mouseOnly = false;\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._ignoreMouse = false;\n this._mouseOnly = mouseOnly;\n\n this._touchstart = function (e) {\n if (e.touches.length === 1) {\n this$1._pressHandler(e);\n }\n };\n\n this._touchmove = function (e) {\n if (e.touches.length === 1) {\n this$1._dragHandler(e);\n }\n };\n\n this._touchend = function (e) {\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 if (e.touches.length === 0 && e.changedTouches.length === 1) {\n this$1._releaseHandler(e);\n\n this$1._ignoreMouse = true;\n setTimeout(this$1._restoreMouse, IGNORE_MOUSE_TIMEOUT);\n }\n };\n\n this._restoreMouse = function () {\n this$1._ignoreMouse = false;\n };\n\n this._mousedown = function (e) {\n var which = e.which;\n\n if (which && which > 1 || this$1._ignoreMouse) {\n return;\n }\n\n bind(this$1.document, \"mousemove\", this$1._mousemove);\n bind(this$1.document, \"mouseup\", this$1._mouseup);\n\n this$1._pressHandler(e);\n };\n\n this._mousemove = function (e) {\n this$1._dragHandler(e);\n };\n\n this._mouseup = function (e) {\n unbind(this$1.document, \"mousemove\", this$1._mousemove);\n unbind(this$1.document, \"mouseup\", this$1._mouseup);\n\n this$1._releaseHandler(e);\n };\n\n this._pointerdown = function (e) {\n if (e.isPrimary && e.button === 0) {\n bind(this$1.document, \"pointermove\", this$1._pointermove);\n bind(this$1.document, \"pointerup\", this$1._pointerup);\n bind(this$1.document, \"pointercancel\", this$1._pointerup);\n bind(this$1.document, \"contextmenu\", preventDefault);\n\n this$1._pressHandler(e);\n }\n };\n\n this._pointermove = function (e) {\n if (e.isPrimary) {\n this$1._dragHandler(e);\n }\n };\n\n this._pointerup = function (e) {\n if (e.isPrimary) {\n unbind(this$1.document, \"pointermove\", this$1._pointermove);\n unbind(this$1.document, \"pointerup\", this$1._pointerup);\n unbind(this$1.document, \"pointercancel\", this$1._pointerup);\n unbind(this$1.document, \"contextmenu\", preventDefault);\n\n this$1._releaseHandler(e);\n }\n };\n};\nvar prototypeAccessors = {\n document: {\n configurable: true\n }\n};\n\nDraggable.supportPointerEvent = function supportPointerEvent() {\n return typeof window !== 'undefined' && window.PointerEvent;\n};\n\nprototypeAccessors.document.get = function () {\n return this._element ? this._element.ownerDocument : document;\n};\n\nDraggable.prototype.bindTo = function bindTo(element) {\n if (element === this._element) {\n return;\n }\n\n if (this._element) {\n this._unbindFromCurrent();\n }\n\n this._element = element;\n\n this._bindToCurrent();\n};\n\nDraggable.prototype._bindToCurrent = function _bindToCurrent() {\n var element = this._element;\n\n if (this._usePointers()) {\n bind(element, \"pointerdown\", this._pointerdown);\n return;\n }\n\n bind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n bind(element, \"touchstart\", this._touchstart);\n bind(element, \"touchmove\", this._touchmove);\n bind(element, \"touchend\", this._touchend);\n }\n};\n\nDraggable.prototype._unbindFromCurrent = function _unbindFromCurrent() {\n var element = this._element;\n\n if (this._usePointers()) {\n unbind(element, \"pointerdown\", this._pointerdown);\n unbind(this.document, \"pointermove\", this._pointermove);\n unbind(this.document, \"pointerup\", this._pointerup);\n unbind(this.document, \"contextmenu\", preventDefault);\n unbind(this.document, \"pointercancel\", this._pointerup);\n return;\n }\n\n unbind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n unbind(element, \"touchstart\", this._touchstart);\n unbind(element, \"touchmove\", this._touchmove);\n unbind(element, \"touchend\", this._touchend);\n }\n};\n\nDraggable.prototype._usePointers = function _usePointers() {\n return !this._mouseOnly && Draggable.supportPointerEvent();\n};\n\nDraggable.prototype.update = function update(ref) {\n var press = ref.press;\n if (press === void 0) press = noop;\n var drag = ref.drag;\n if (drag === void 0) drag = noop;\n var release = ref.release;\n if (release === void 0) release = noop;\n var mouseOnly = ref.mouseOnly;\n if (mouseOnly === void 0) mouseOnly = false;\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._mouseOnly = mouseOnly;\n};\n\nDraggable.prototype.destroy = function destroy() {\n this._unbindFromCurrent();\n\n this._element = null;\n};\n\nObject.defineProperties(Draggable.prototype, prototypeAccessors); // Re-export as \"default\" field to address a bug\n// where the ES Module is imported by CommonJS code.\n//\n// See https://github.com/telerik/kendo-angular/issues/1314\n\nDraggable.default = Draggable; // Rollup won't output exports['default'] otherwise\n\nexport default Draggable;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport KendoDraggable from '@telerik/kendo-draggable';\n/**\n * @hidden\n */\n\nvar Draggable =\n/** @class */\nfunction (_super) {\n __extends(Draggable, _super);\n\n function Draggable() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n\n\n _this.element = null;\n _this.draggable = new KendoDraggable({\n press: function press(event) {\n if (_this.element && _this.props.onPress) {\n _this.props.onPress.call(undefined, {\n target: _this,\n event: event,\n element: _this.element\n });\n }\n },\n drag: function drag(event) {\n if (_this.element && _this.props.onDrag) {\n _this.props.onDrag.call(undefined, {\n target: _this,\n event: event,\n element: _this.element\n });\n }\n },\n release: function release(event) {\n if (_this.element && _this.props.onRelease) {\n _this.props.onRelease.call(undefined, {\n target: _this,\n event: event\n });\n }\n }\n });\n\n _this.assingRef = function (element) {\n _this.element = element;\n };\n\n return _this;\n }\n\n Draggable.prototype.componentDidMount = function () {\n if (this.element) {\n this.draggable.bindTo(this.element);\n }\n };\n\n Draggable.prototype.componentWillUnmount = function () {\n this.draggable.destroy();\n };\n\n Draggable.prototype.render = function () {\n return React.cloneElement(React.Children.only(this.props.children), {\n ref: this.assingRef\n });\n };\n\n Draggable.propTypes = {\n children: PropTypes.element.isRequired\n };\n return Draggable;\n}(React.Component);\n\nexport { Draggable };","import { fieldList } from './fieldList';\nvar getterCache = {};\n\ngetterCache.undefined = function () {\n return undefined;\n};\n/**\n * Can be used for getting value from object using field path. For example `users[index].name`.\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 */\n\n\nexport function getter(field) {\n if (getterCache[field]) {\n return getterCache[field];\n }\n\n var fields = fieldList(field);\n\n getterCache[field] = function (obj) {\n var result = obj;\n\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}","/**\n * @hidden\n */\nvar DISABLED_TABINDEX = -1;\n/**\n * @hidden\n */\n\nvar DEFAULT_TABINDEX = 0;\n/**\n * @hidden\n */\n\nexport var getTabIndex = function getTabIndex(tabIndex, disabled, useDefaultTabIndexWhenDisabled) {\n var parsedTabIndex = typeof tabIndex === 'string' ? parseInt(tabIndex, undefined) : tabIndex;\n\n if (parsedTabIndex === NaN) {\n return undefined;\n }\n\n return parsedTabIndex !== undefined ? parsedTabIndex : disabled ? useDefaultTabIndexWhenDisabled ? undefined : DISABLED_TABINDEX : DEFAULT_TABINDEX;\n};","/**\n * @hidden\n */\nexport var SIZE_CLASSES = {\n 'default': '',\n 'xsmall': 'k-icon-xs',\n 'small': 'k-icon-sm',\n 'medium': 'k-icon-md',\n 'large': 'k-icon-lg',\n 'xlarge': 'k-icon-xl'\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '../classNames';\nimport { SIZE_CLASSES } from './constants';\n/**\n * Represents the [KendoReact Icon component]({% slug overview_icon %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n * return (\n * \n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\n\nexport var Icon = React.forwardRef(function (props, ref) {\n var className = props.className,\n name = props.name,\n themeColor = props.themeColor,\n size = props.size,\n flip = props.flip,\n style = props.style,\n others = __rest(props, [\"className\", \"name\", \"themeColor\", \"size\", \"flip\", \"style\"]);\n\n var elementRef = React.useRef(null);\n React.useImperativeHandle(ref, function () {\n return {\n element: elementRef.current\n };\n });\n var themeColorProp = React.useMemo(function () {\n return themeColor || defaultProps.themeColor;\n }, [themeColor]);\n var sizeProp = React.useMemo(function () {\n return size || defaultProps.size;\n }, [size]);\n var flipProp = React.useMemo(function () {\n return flip || defaultProps.flip;\n }, [flip]);\n var fontClassNames = React.useMemo(function () {\n return classNames('k-icon', 'k-i-' + name, 'k-color-' + themeColorProp, {\n 'k-flip-h': flipProp === 'horizontal' || flipProp === 'both',\n 'k-flip-v': flipProp === 'vertical' || flipProp === 'both'\n }, SIZE_CLASSES[sizeProp], className);\n }, [name, themeColorProp, sizeProp, flipProp, className]);\n return React.createElement(\"span\", __assign({\n className: fontClassNames,\n style: style,\n ref: elementRef,\n role: \"presentation\"\n }, others));\n});\nIcon.propTypes = {\n style: PropTypes.object,\n classNames: PropTypes.string,\n name: PropTypes.string,\n themeColor: PropTypes.oneOf(['inherit', 'primary', 'secondary', 'tertiary', 'info', 'success', 'error', 'warning', 'dark', 'light', 'inverse']),\n size: PropTypes.oneOf(['default', 'xsmall', 'small', 'medium', 'large', 'xlarge']),\n flip: PropTypes.oneOf(['default', 'horizontal', 'vertical', 'both'])\n};\nvar defaultProps = {\n size: 'default',\n themeColor: 'inherit',\n flip: 'default'\n};\nIcon.displayName = 'KendoIcon';","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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '../classNames';\nimport { SIZE_CLASSES } from './constants';\n/**\n * Represents the [KendoReact SvgIcon component]({% slug overview_svgicon %}).\n *\n * @example\n * ```jsx\n * import { accessibility } from '@progress/kendo-svg-icons';\n *\n * const App = () => {\n * return (\n * \n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\n\nexport var SvgIcon = React.forwardRef(function (props, ref) {\n var children = props.children,\n className = props.className,\n svgClassName = props.svgClassName,\n icon = props.icon,\n flip = props.flip,\n size = props.size,\n style = props.style,\n svgStyle = props.svgStyle,\n themeColor = props.themeColor,\n viewBox = props.viewBox,\n others = __rest(props, [\"children\", \"className\", \"svgClassName\", \"icon\", \"flip\", \"size\", \"style\", \"svgStyle\", \"themeColor\", \"viewBox\"]);\n\n var elementRef = React.useRef(null);\n React.useImperativeHandle(ref, function () {\n return {\n element: elementRef.current\n };\n });\n var iconNameProp = React.useMemo(function () {\n return icon ? icon.name : defaultProps.icon;\n }, [icon]);\n var themeColorProp = React.useMemo(function () {\n return themeColor || defaultProps.themeColor;\n }, [themeColor]);\n var sizeProp = React.useMemo(function () {\n return size || defaultProps.size;\n }, [size]);\n var flipProp = React.useMemo(function () {\n return flip || defaultProps.flip;\n }, [flip]);\n var viewBoxProp = React.useMemo(function () {\n return viewBox || defaultProps.viewBox;\n }, [viewBox]);\n var elementClassNames = React.useMemo(function () {\n return classNames('k-svg-icon', 'k-color-' + themeColorProp, 'k-svg-i-' + iconNameProp, {\n 'k-flip-h': flipProp === 'horizontal' || flipProp === 'both',\n 'k-flip-v': flipProp === 'vertical' || flipProp === 'both'\n }, SIZE_CLASSES[sizeProp], className);\n }, [iconNameProp, themeColorProp, sizeProp, flipProp, className]);\n var elementStyle = React.useMemo(function () {\n if (props.width && props.height) {\n return __assign({\n width: props.width,\n height: props.height\n }, style);\n } else if (props.width) {\n return __assign({\n width: props.width,\n height: props.width\n }, style);\n } else if (props.height) {\n return __assign({\n width: props.height,\n height: props.height\n }, style);\n } else {\n return __assign({}, style);\n }\n }, [props.width, props.height, style]);\n return React.createElement(\"span\", {\n className: elementClassNames,\n style: elementStyle,\n ref: elementRef\n }, React.createElement(\"svg\", __assign({\n className: svgClassName,\n style: svgStyle,\n \"aria-hidden\": true,\n focusable: \"false\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: icon ? icon.viewBox : viewBoxProp,\n dangerouslySetInnerHTML: icon ? {\n __html: icon.content\n } : undefined\n }, others), icon ? undefined : children));\n});\nSvgIcon.propTypes = {\n style: PropTypes.object,\n classNames: PropTypes.string,\n children: PropTypes.any,\n icon: PropTypes.object,\n themeColor: PropTypes.oneOf(['inherit', 'primary', 'secondary', 'tertiary', 'info', 'success', 'error', 'warning', 'dark', 'light', 'inverse']),\n size: PropTypes.oneOf(['default', 'xsmall', 'small', 'medium', 'large', 'xlarge']),\n flip: PropTypes.oneOf(['default', 'horizontal', 'vertical', 'both'])\n};\nvar defaultProps = {\n size: 'default',\n themeColor: 'inherit',\n flip: 'default',\n icon: '',\n viewBox: '0 0 24 24'\n};\nSvgIcon.displayName = 'KendoSvgIcon';","var _a;\n/**\n * @hidden\n */\n\n\nexport var labelsOptional = 'labels.optional';\n/**\n * @hidden\n */\n\nexport var messages = (_a = {}, _a[labelsOptional] = '(Optional)', _a);","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { labelsOptional, messages } from './messages';\nimport { useLocalization } from '@progress/kendo-react-intl';\n/**\n * Represents the KendoReact Label component.\n * @example\n * ```jsx\n * const sizes = [\"X-Small\", \"Small\", \"Medium\", \"Large\", \"X-Large\", \"2X-Large\"];\n * const App = () => {\n * const ddlRef = React.useRef(null);\n * const labelId = 'ddl-sizes-label';\n * const editorId = 'ddl-sizes';\n *\n * return (\n *
    \n * \n * \n *
    \n *
    \n * );\n * };\n *\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\n\nexport var Label = function Label(props) {\n var id = props.id,\n editorId = props.editorId,\n editorRef = props.editorRef,\n editorDisabled = props.editorDisabled,\n children = props.children,\n editorValid = props.editorValid,\n style = props.style,\n className = props.className,\n optional = props.optional;\n var localizationService = useLocalization();\n var localizedOptional = optional ? localizationService.toLanguageString(labelsOptional, messages[labelsOptional]) : '';\n var optionalElement = localizedOptional && React.createElement(\"span\", {\n className: 'k-label-optional'\n }, localizedOptional);\n var onLabelClick = React.useCallback(function (e) {\n if (editorRef && editorRef.current && !editorDisabled) {\n if (editorRef.current.focus) {\n e.preventDefault();\n editorRef.current.focus();\n }\n\n var editorActionElement = editorRef.current.actionElement;\n\n if (editorActionElement) {\n e.preventDefault();\n editorActionElement.click();\n }\n }\n }, [editorRef]);\n var labelClassName = classNames({\n 'k-label': true,\n 'k-label-empty': !children,\n 'k-text-error': editorValid === false,\n 'k-text-disabled': editorDisabled === true\n }, className);\n return React.createElement(\"label\", {\n id: id,\n htmlFor: editorId,\n onClick: onLabelClick,\n style: style,\n className: labelClassName\n }, children, optionalElement);\n};\nLabel.propTypes = {\n id: PropTypes.string,\n editorId: PropTypes.string,\n editorRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.any\n })]),\n editorValid: PropTypes.bool,\n editorDisabled: PropTypes.bool,\n style: PropTypes.object,\n className: PropTypes.string,\n optional: PropTypes.bool\n};\nLabel.displayName = 'KendoReactLabel';","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Represents the KendoReact Error component.\n * Render the error text that will be shown underneath the form editor after a validation.\n */\n\nexport var Error = function Error(props) {\n var errorClassName = classNames({\n 'k-form-error': true,\n 'k-text-start': props.direction === 'start',\n 'k-text-end': props.direction === 'end'\n }, props.className);\n return React.createElement(\"div\", {\n id: props.id,\n role: 'alert',\n style: props.style,\n className: errorClassName\n }, props.children);\n};\nError.propTypes = {\n id: PropTypes.string,\n direction: PropTypes.oneOf(['start', 'end']),\n children: PropTypes.oneOfType([PropTypes.element, PropTypes.node]),\n style: PropTypes.object,\n className: PropTypes.string\n};\nError.defaultProps = {\n direction: 'start'\n};\nError.displayName = 'KendoReactError';","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Represents the KendoReact Hint component.\n * Render the hint text that will be shown underneath the form editor.\n */\n\nexport var Hint = function Hint(props) {\n var hintClassName = classNames({\n 'k-form-hint': true,\n 'k-text-start': props.direction === 'start',\n 'k-text-end': props.direction === 'end'\n }, props.className);\n return React.createElement(\"div\", {\n id: props.id,\n style: props.style,\n className: hintClassName\n }, props.children);\n};\nHint.propTypes = {\n id: PropTypes.string,\n direction: PropTypes.oneOf(['start', 'end']),\n children: PropTypes.oneOfType([PropTypes.element, PropTypes.node]),\n style: PropTypes.object,\n className: PropTypes.string\n};\nHint.defaultProps = {\n direction: 'start'\n};\nHint.displayName = 'KendoReactHint';","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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';\n/**\n * Represents the KendoReact FloatingLabel component.\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 * \n * setDdlState(e.target.value)}\n * />\n * \n * );\n * };\n *\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\n\nvar FloatingLabel =\n/** @class */\nfunction (_super) {\n __extends(FloatingLabel, _super);\n\n function FloatingLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n\n\n _this.state = {\n focused: false\n };\n /**\n * @hidden\n */\n\n _this.handleFocus = function (_) {\n _this.setState({\n focused: true\n });\n };\n /**\n * @hidden\n */\n\n\n _this.handleBlur = function (_) {\n _this.setState({\n focused: false\n });\n };\n\n return _this;\n }\n /**\n * @hidden\n */\n\n\n FloatingLabel.prototype.render = function () {\n var _a = this.props,\n label = _a.label,\n editorId = _a.editorId,\n className = _a.className,\n editorValue = _a.editorValue,\n editorPlaceholder = _a.editorPlaceholder,\n editorValid = _a.editorValid,\n editorDisabled = _a.editorDisabled,\n style = _a.style,\n id = _a.id,\n optional = _a.optional;\n var localizationService = provideLocalizationService(this);\n var localizedOptional = optional ? localizationService.toLanguageString(labelsOptional, messages[labelsOptional]) : '';\n var optionalElement = localizedOptional && React.createElement(\"span\", {\n className: 'k-label-optional'\n }, localizedOptional);\n var spanClassNames = classNames({\n 'k-textbox-container': true,\n 'k-state-focused': this.state.focused,\n 'k-state-empty': !(editorValue && editorValue !== 0 || editorPlaceholder),\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\", {\n className: spanClassNames,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n style: style,\n dir: this.props.dir\n }, this.props.children, label ? editorId ? React.createElement(\"label\", {\n id: id,\n htmlFor: editorId,\n className: labelClassNames\n }, label, optionalElement) : React.createElement(\"span\", {\n id: id,\n className: labelClassNames\n }, label, optionalElement) : null);\n };\n /**\n * @hidden\n */\n\n\n FloatingLabel.propTypes = {\n label: PropTypes.string,\n editorId: PropTypes.string,\n editorValue: PropTypes.string,\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);\n\nexport { FloatingLabel };\nregisterForLocalization(FloatingLabel);","import { Label } from './Label';\nimport { Error } from './Error';\nimport { Hint } from './Hint';\nimport { FloatingLabel } from './FloatingLabel';\nexport { FloatingLabel, Label, Error, Hint };","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n\n/* global define */\n(function () {\n 'use strict';\n\n var hasOwn = {}.hasOwnProperty;\n var nativeCodeString = '[native code]';\n\n function classNames() {\n var classes = [];\n\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i];\n if (!arg) continue;\n var argType = typeof arg;\n\n if (argType === 'string' || argType === 'number') {\n classes.push(arg);\n } else if (Array.isArray(arg)) {\n if (arg.length) {\n var inner = classNames.apply(null, arg);\n\n if (inner) {\n classes.push(inner);\n }\n }\n } else if (argType === 'object') {\n if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n classes.push(arg.toString());\n continue;\n }\n\n for (var key in arg) {\n if (hasOwn.call(arg, key) && arg[key]) {\n classes.push(key);\n }\n }\n }\n }\n\n return classes.join(' ');\n }\n\n if (typeof module !== 'undefined' && module.exports) {\n classNames.default = classNames;\n module.exports = classNames;\n } else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n // register as 'classnames', consistent with npm package name\n define('classnames', [], function () {\n return classNames;\n });\n } else {\n window.classNames = classNames;\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}","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isObject(x) {\n return x !== null && typeof x === 'object';\n}","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var isArrayLike = function isArrayLike(x) {\n return x && typeof x.length === 'number' && typeof x !== 'function';\n};","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var subscribeToArray = function subscribeToArray(array) {\n return function (subscriber) {\n for (var i = 0, len = array.length; i < len && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n\n subscriber.complete();\n };\n};","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isPromise(value) {\n return !!value && typeof value.subscribe !== 'function' && typeof value.then === 'function';\n}","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function map(project, thisArg) {\n return function mapOperation(source) {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n\n return source.lift(new MapOperator(project, thisArg));\n };\n}\n\nvar MapOperator =\n/*@__PURE__*/\nfunction () {\n function MapOperator(project, thisArg) {\n this.project = project;\n this.thisArg = thisArg;\n }\n\n MapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n };\n\n return MapOperator;\n}();\n\nexport { MapOperator };\n\nvar MapSubscriber =\n/*@__PURE__*/\nfunction (_super) {\n tslib_1.__extends(MapSubscriber, _super);\n\n function MapSubscriber(destination, project, thisArg) {\n var _this = _super.call(this, destination) || this;\n\n _this.project = project;\n _this.count = 0;\n _this.thisArg = thisArg || _this;\n return _this;\n }\n\n MapSubscriber.prototype._next = function (value) {\n var result;\n\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n\n this.destination.next(result);\n };\n\n return MapSubscriber;\n}(Subscriber);","'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}","!function (e, t) {\n \"object\" == typeof exports && \"object\" == typeof module ? module.exports = t(require(\"react\")) : \"function\" == typeof define && define.amd ? define([\"react\"], t) : \"object\" == typeof exports ? exports.reactTextMask = t(require(\"react\")) : e.reactTextMask = t(e.React);\n}(this, function (e) {\n return function (e) {\n function t(n) {\n if (r[n]) return r[n].exports;\n var o = r[n] = {\n exports: {},\n id: n,\n loaded: !1\n };\n return e[n].call(o.exports, o, o.exports, t), o.loaded = !0, o.exports;\n }\n\n var r = {};\n return t.m = e, t.c = r, t.p = \"\", t(0);\n }([function (e, t, r) {\n \"use strict\";\n\n function n(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n }\n\n function o(e, t) {\n var r = {};\n\n for (var n in e) {\n t.indexOf(n) >= 0 || Object.prototype.hasOwnProperty.call(e, n) && (r[n] = e[n]);\n }\n\n return r;\n }\n\n function i(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n }\n\n function a(e, t) {\n if (!e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return !t || \"object\" != typeof t && \"function\" != typeof t ? e : t;\n }\n\n function u(e, t) {\n if (\"function\" != typeof t && null !== t) throw new TypeError(\"Super expression must either be null or a function, not \" + typeof t);\n e.prototype = Object.create(t && t.prototype, {\n constructor: {\n value: e,\n enumerable: !1,\n writable: !0,\n configurable: !0\n }\n }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t);\n }\n\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.conformToMask = void 0;\n\n var s = Object.assign || function (e) {\n for (var t = 1; t < arguments.length; t++) {\n var r = arguments[t];\n\n for (var n in r) {\n Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]);\n }\n }\n\n return e;\n },\n l = function () {\n function e(e, t) {\n for (var r = 0; r < t.length; r++) {\n var n = t[r];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(e, n.key, n);\n }\n }\n\n return function (t, r, n) {\n return r && e(t.prototype, r), n && e(t, n), t;\n };\n }(),\n f = r(3);\n\n Object.defineProperty(t, \"conformToMask\", {\n enumerable: !0,\n get: function get() {\n return n(f).default;\n }\n });\n\n var c = r(11),\n p = n(c),\n d = r(9),\n h = n(d),\n v = r(5),\n y = n(v),\n m = r(2),\n b = function (e) {\n function t() {\n var e;\n i(this, t);\n\n for (var r = arguments.length, n = Array(r), o = 0; o < r; o++) {\n n[o] = arguments[o];\n }\n\n var u = a(this, (e = t.__proto__ || Object.getPrototypeOf(t)).call.apply(e, [this].concat(n)));\n return u.setRef = u.setRef.bind(u), u.onBlur = u.onBlur.bind(u), u.onChange = u.onChange.bind(u), u;\n }\n\n return u(t, e), l(t, [{\n key: \"setRef\",\n value: function value(e) {\n this.inputElement = e;\n }\n }, {\n key: \"initTextMask\",\n value: function value() {\n var e = this.props,\n t = this.props.value;\n this.textMaskInputElement = (0, y.default)(s({\n inputElement: this.inputElement\n }, e)), this.textMaskInputElement.update(t);\n }\n }, {\n key: \"componentDidMount\",\n value: function value() {\n this.initTextMask();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function value(e) {\n var t = this.props,\n r = t.value,\n n = t.pipe,\n o = t.mask,\n i = t.guide,\n a = t.placeholderChar,\n u = t.showMask,\n s = {\n guide: i,\n placeholderChar: a,\n showMask: u\n },\n l = \"function\" == typeof n && \"function\" == typeof e.pipe ? n.toString() !== e.pipe.toString() : (0, m.isNil)(n) && !(0, m.isNil)(e.pipe) || !(0, m.isNil)(n) && (0, m.isNil)(e.pipe),\n f = o.toString() !== e.mask.toString(),\n c = Object.keys(s).some(function (t) {\n return s[t] !== e[t];\n }) || f || l,\n p = r !== this.inputElement.value;\n (p || c) && this.initTextMask();\n }\n }, {\n key: \"render\",\n value: function e() {\n var t = this.props,\n e = t.render,\n r = o(t, [\"render\"]);\n return delete r.mask, delete r.guide, delete r.pipe, delete r.placeholderChar, delete r.keepCharPositions, delete r.value, delete r.onBlur, delete r.onChange, delete r.showMask, e(this.setRef, s({\n onBlur: this.onBlur,\n onChange: this.onChange,\n defaultValue: this.props.value\n }, r));\n }\n }, {\n key: \"onChange\",\n value: function value(e) {\n this.textMaskInputElement.update(), \"function\" == typeof this.props.onChange && this.props.onChange(e);\n }\n }, {\n key: \"onBlur\",\n value: function value(e) {\n \"function\" == typeof this.props.onBlur && this.props.onBlur(e);\n }\n }]), t;\n }(p.default.PureComponent);\n\n t.default = b, b.propTypes = {\n mask: h.default.oneOfType([h.default.array, h.default.func, h.default.bool, h.default.shape({\n mask: h.default.oneOfType([h.default.array, h.default.func]),\n pipe: h.default.func\n })]).isRequired,\n guide: h.default.bool,\n value: h.default.oneOfType([h.default.string, h.default.number]),\n pipe: h.default.func,\n placeholderChar: h.default.string,\n keepCharPositions: h.default.bool,\n showMask: h.default.bool\n }, b.defaultProps = {\n render: function render(e, t) {\n return p.default.createElement(\"input\", s({\n ref: e\n }, t));\n }\n };\n }, function (e, t) {\n \"use strict\";\n\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.placeholderChar = \"_\", t.strFunction = \"function\";\n }, function (e, t, r) {\n \"use strict\";\n\n function n() {\n var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : f,\n t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : l.placeholderChar;\n if (!o(e)) throw new Error(\"Text-mask:convertMaskToPlaceholder; The mask property must be an array.\");\n if (e.indexOf(t) !== -1) throw new Error(\"Placeholder character must not be used as part of the mask. Please specify a character that is not present in your mask as your placeholder character.\\n\\n\" + (\"The placeholder character that was received is: \" + JSON.stringify(t) + \"\\n\\n\") + (\"The mask that was received is: \" + JSON.stringify(e)));\n return e.map(function (e) {\n return e instanceof RegExp ? t : e;\n }).join(\"\");\n }\n\n function o(e) {\n return Array.isArray && Array.isArray(e) || e instanceof Array;\n }\n\n function i(e) {\n return \"string\" == typeof e || e instanceof String;\n }\n\n function a(e) {\n return \"number\" == typeof e && void 0 === e.length && !isNaN(e);\n }\n\n function u(e) {\n return \"undefined\" == typeof e || null === e;\n }\n\n function s(e) {\n for (var t = [], r = void 0; r = e.indexOf(c), r !== -1;) {\n t.push(r), e.splice(r, 1);\n }\n\n return {\n maskWithoutCaretTraps: e,\n indexes: t\n };\n }\n\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.convertMaskToPlaceholder = n, t.isArray = o, t.isString = i, t.isNumber = a, t.isNil = u, t.processCaretTraps = s;\n var l = r(1),\n f = [],\n c = \"[]\";\n }, function (e, t, r) {\n \"use strict\";\n\n function n() {\n var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : s,\n t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : u,\n r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\n\n if (!(0, i.isArray)(t)) {\n if ((\"undefined\" == typeof t ? \"undefined\" : o(t)) !== a.strFunction) throw new Error(\"Text-mask:conformToMask; The mask property must be an array.\");\n t = t(e, r), t = (0, i.processCaretTraps)(t).maskWithoutCaretTraps;\n }\n\n var n = r.guide,\n l = void 0 === n || n,\n f = r.previousConformedValue,\n c = void 0 === f ? s : f,\n p = r.placeholderChar,\n d = void 0 === p ? a.placeholderChar : p,\n h = r.placeholder,\n v = void 0 === h ? (0, i.convertMaskToPlaceholder)(t, d) : h,\n y = r.currentCaretPosition,\n m = r.keepCharPositions,\n b = l === !1 && void 0 !== c,\n g = e.length,\n k = c.length,\n C = v.length,\n O = t.length,\n T = g - k,\n P = T > 0,\n x = y + (P ? -T : 0),\n w = x + Math.abs(T);\n\n if (m === !0 && !P) {\n for (var S = s, _ = x; _ < w; _++) {\n v[_] === d && (S += d);\n }\n\n e = e.slice(0, x) + S + e.slice(x, g);\n }\n\n for (var M = e.split(s).map(function (e, t) {\n return {\n char: e,\n isNew: t >= x && t < w\n };\n }), j = g - 1; j >= 0; j--) {\n var E = M[j].char;\n\n if (E !== d) {\n var R = j >= x && k === O;\n E === v[R ? j - T : j] && M.splice(j, 1);\n }\n }\n\n var V = s,\n N = !1;\n\n e: for (var A = 0; A < C; A++) {\n var B = v[A];\n\n if (B === d) {\n if (M.length > 0) for (; M.length > 0;) {\n var I = M.shift(),\n F = I.char,\n q = I.isNew;\n\n if (F === d && b !== !0) {\n V += d;\n continue e;\n }\n\n if (t[A].test(F)) {\n if (m === !0 && q !== !1 && c !== s && l !== !1 && P) {\n for (var D = M.length, L = null, W = 0; W < D; W++) {\n var J = M[W];\n if (J.char !== d && J.isNew === !1) break;\n\n if (J.char === d) {\n L = W;\n break;\n }\n }\n\n null !== L ? (V += F, M.splice(L, 1)) : A--;\n } else V += F;\n\n continue e;\n }\n\n N = !0;\n }\n b === !1 && (V += v.substr(A, C));\n break;\n }\n\n V += B;\n }\n\n if (b && P === !1) {\n for (var U = null, H = 0; H < V.length; H++) {\n v[H] === d && (U = H);\n }\n\n V = null !== U ? V.substr(0, U + 1) : s;\n }\n\n return {\n conformedValue: V,\n meta: {\n someCharsRejected: N\n }\n };\n }\n\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n });\n var o = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (e) {\n return typeof e;\n } : function (e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n };\n t.default = n;\n var i = r(2),\n a = r(1),\n u = [],\n s = \"\";\n }, function (e, t) {\n \"use strict\";\n\n function r(e) {\n var t = e.previousConformedValue,\n r = void 0 === t ? o : t,\n i = e.previousPlaceholder,\n a = void 0 === i ? o : i,\n u = e.currentCaretPosition,\n s = void 0 === u ? 0 : u,\n l = e.conformedValue,\n f = e.rawValue,\n c = e.placeholderChar,\n p = e.placeholder,\n d = e.indexesOfPipedChars,\n h = void 0 === d ? n : d,\n v = e.caretTrapIndexes,\n y = void 0 === v ? n : v;\n if (0 === s || !f.length) return 0;\n var m = f.length,\n b = r.length,\n g = p.length,\n k = l.length,\n C = m - b,\n O = C > 0,\n T = 0 === b,\n P = C > 1 && !O && !T;\n if (P) return s;\n\n var x = O && (r === l || l === p),\n w = 0,\n S = void 0,\n _ = void 0;\n\n if (x) w = s - C;else {\n var M = l.toLowerCase(),\n j = f.toLowerCase(),\n E = j.substr(0, s).split(o),\n R = E.filter(function (e) {\n return M.indexOf(e) !== -1;\n });\n _ = R[R.length - 1];\n var V = a.substr(0, R.length).split(o).filter(function (e) {\n return e !== c;\n }).length,\n N = p.substr(0, R.length).split(o).filter(function (e) {\n return e !== c;\n }).length,\n A = N !== V,\n B = void 0 !== a[R.length - 1] && void 0 !== p[R.length - 2] && a[R.length - 1] !== c && a[R.length - 1] !== p[R.length - 1] && a[R.length - 1] === p[R.length - 2];\n !O && (A || B) && V > 0 && p.indexOf(_) > -1 && void 0 !== f[s] && (S = !0, _ = f[s]);\n\n for (var I = h.map(function (e) {\n return M[e];\n }), F = I.filter(function (e) {\n return e === _;\n }).length, q = R.filter(function (e) {\n return e === _;\n }).length, D = p.substr(0, p.indexOf(c)).split(o).filter(function (e, t) {\n return e === _ && f[t] !== e;\n }).length, L = D + q + F + (S ? 1 : 0), W = 0, J = 0; J < k; J++) {\n var U = M[J];\n if (w = J + 1, U === _ && W++, W >= L) break;\n }\n }\n\n if (O) {\n for (var H = w, Y = w; Y <= g; Y++) {\n if (p[Y] === c && (H = Y), p[Y] === c || y.indexOf(Y) !== -1 || Y === g) return H;\n }\n } else if (S) {\n for (var z = w - 1; z >= 0; z--) {\n if (l[z] === _ || y.indexOf(z) !== -1 || 0 === z) return z;\n }\n } else for (var G = w; G >= 0; G--) {\n if (p[G - 1] === c || y.indexOf(G) !== -1 || 0 === G) return G;\n }\n }\n\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = r;\n var n = [],\n o = \"\";\n }, function (e, t, r) {\n \"use strict\";\n\n function n(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n }\n\n function o(e) {\n var t = {\n previousConformedValue: void 0,\n previousPlaceholder: void 0\n };\n return {\n state: t,\n update: function update(r) {\n var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : e,\n o = n.inputElement,\n l = n.mask,\n c = n.guide,\n y = n.pipe,\n b = n.placeholderChar,\n g = void 0 === b ? h.placeholderChar : b,\n k = n.keepCharPositions,\n C = void 0 !== k && k,\n O = n.showMask,\n T = void 0 !== O && O;\n\n if (\"undefined\" == typeof r && (r = o.value), r !== t.previousConformedValue) {\n (\"undefined\" == typeof l ? \"undefined\" : s(l)) === m && void 0 !== l.pipe && void 0 !== l.mask && (y = l.pipe, l = l.mask);\n var P = void 0,\n x = void 0;\n\n if (l instanceof Array && (P = (0, d.convertMaskToPlaceholder)(l, g)), l !== !1) {\n var w = a(r),\n S = o.selectionEnd,\n _ = t.previousConformedValue,\n M = t.previousPlaceholder,\n j = void 0;\n\n if ((\"undefined\" == typeof l ? \"undefined\" : s(l)) === h.strFunction) {\n if (x = l(w, {\n currentCaretPosition: S,\n previousConformedValue: _,\n placeholderChar: g\n }), x === !1) return;\n var E = (0, d.processCaretTraps)(x),\n R = E.maskWithoutCaretTraps,\n V = E.indexes;\n x = R, j = V, P = (0, d.convertMaskToPlaceholder)(x, g);\n } else x = l;\n\n var N = {\n previousConformedValue: _,\n guide: c,\n placeholderChar: g,\n pipe: y,\n placeholder: P,\n currentCaretPosition: S,\n keepCharPositions: C\n },\n A = (0, p.default)(w, x, N),\n B = A.conformedValue,\n I = (\"undefined\" == typeof y ? \"undefined\" : s(y)) === h.strFunction,\n F = {};\n I && (F = y(B, u({\n rawValue: w\n }, N)), F === !1 ? F = {\n value: _,\n rejected: !0\n } : (0, d.isString)(F) && (F = {\n value: F\n }));\n var q = I ? F.value : B,\n D = (0, f.default)({\n previousConformedValue: _,\n previousPlaceholder: M,\n conformedValue: q,\n placeholder: P,\n rawValue: w,\n currentCaretPosition: S,\n placeholderChar: g,\n indexesOfPipedChars: F.indexesOfPipedChars,\n caretTrapIndexes: j\n }),\n L = q === P && 0 === D,\n W = T ? P : v,\n J = L ? W : q;\n t.previousConformedValue = J, t.previousPlaceholder = P, o.value !== J && (o.value = J, i(o, D));\n }\n }\n }\n };\n }\n\n function i(e, t) {\n document.activeElement === e && (b ? g(function () {\n return e.setSelectionRange(t, t, y);\n }, 0) : e.setSelectionRange(t, t, y));\n }\n\n function a(e) {\n if ((0, d.isString)(e)) return e;\n if ((0, d.isNumber)(e)) return String(e);\n if (void 0 === e || null === e) return v;\n throw new Error(\"The 'value' provided to Text Mask needs to be a string or a number. The value received was:\\n\\n \" + JSON.stringify(e));\n }\n\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n });\n\n var u = Object.assign || function (e) {\n for (var t = 1; t < arguments.length; t++) {\n var r = arguments[t];\n\n for (var n in r) {\n Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]);\n }\n }\n\n return e;\n },\n s = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (e) {\n return typeof e;\n } : function (e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n };\n\n t.default = o;\n var l = r(4),\n f = n(l),\n c = r(3),\n p = n(c),\n d = r(2),\n h = r(1),\n v = \"\",\n y = \"none\",\n m = \"object\",\n b = \"undefined\" != typeof navigator && /Android/i.test(navigator.userAgent),\n g = \"undefined\" != typeof requestAnimationFrame ? requestAnimationFrame : setTimeout;\n }, function (e, t) {\n \"use strict\";\n\n function r(e) {\n return function () {\n return e;\n };\n }\n\n var n = function n() {};\n\n n.thatReturns = r, n.thatReturnsFalse = r(!1), n.thatReturnsTrue = r(!0), n.thatReturnsNull = r(null), n.thatReturnsThis = function () {\n return this;\n }, n.thatReturnsArgument = function (e) {\n return e;\n }, e.exports = n;\n }, function (e, t, r) {\n \"use strict\";\n\n function n(e, t, r, n, i, a, u, s) {\n if (o(t), !e) {\n var l;\n if (void 0 === t) l = new Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else {\n var f = [r, n, i, a, u, s],\n c = 0;\n l = new Error(t.replace(/%s/g, function () {\n return f[c++];\n })), l.name = \"Invariant Violation\";\n }\n throw l.framesToPop = 1, l;\n }\n }\n\n var o = function o(e) {};\n\n e.exports = n;\n }, function (e, t, r) {\n \"use strict\";\n\n var n = r(6),\n o = r(7),\n i = r(10);\n\n e.exports = function () {\n function e(e, t, r, n, a, u) {\n u !== i && o(!1, \"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\");\n }\n\n function t() {\n return e;\n }\n\n e.isRequired = e;\n var r = {\n array: e,\n bool: e,\n func: e,\n number: e,\n object: e,\n string: e,\n symbol: e,\n any: e,\n arrayOf: t,\n element: e,\n instanceOf: t,\n node: e,\n objectOf: t,\n oneOf: t,\n oneOfType: t,\n shape: t,\n exact: t\n };\n return r.checkPropTypes = n, r.PropTypes = r, r;\n };\n }, function (e, t, r) {\n \"use strict\";\n\n \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (e) {\n return typeof e;\n } : function (e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n }, e.exports = r(8)();\n }, function (e, t) {\n \"use strict\";\n\n var r = \"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\";\n e.exports = r;\n }, function (t, r) {\n t.exports = e;\n }]);\n});","/**\n * Lists the possible states of a file.\n */\nexport var UploadFileStatus;\n\n(function (UploadFileStatus) {\n /**\n * Indicates that the file upload process has failed.\n */\n UploadFileStatus[UploadFileStatus[\"UploadFailed\"] = 0] = \"UploadFailed\";\n /**\n * An initially selected fake file without a set state.\n */\n\n UploadFileStatus[UploadFileStatus[\"Initial\"] = 1] = \"Initial\";\n /**\n * The file is selected.\n */\n\n UploadFileStatus[UploadFileStatus[\"Selected\"] = 2] = \"Selected\";\n /**\n * The file is in the process of uploading.\n */\n\n UploadFileStatus[UploadFileStatus[\"Uploading\"] = 3] = \"Uploading\";\n /**\n * The file is successfully uploaded.\n */\n\n UploadFileStatus[UploadFileStatus[\"Uploaded\"] = 4] = \"Uploaded\";\n /**\n * The remove process has failed.\n */\n\n UploadFileStatus[UploadFileStatus[\"RemoveFailed\"] = 5] = \"RemoveFailed\";\n /**\n * The file is in the process of removing.\n */\n\n UploadFileStatus[UploadFileStatus[\"Removing\"] = 6] = \"Removing\";\n})(UploadFileStatus || (UploadFileStatus = {}));","var _a;\n/**\n * @hidden\n */\n\n\nexport var cancel = 'upload.cancel';\n/**\n * @hidden\n */\n\nexport var clearSelectedFiles = 'upload.clearSelectedFiles';\n/**\n * @hidden\n */\n\nexport var dropFilesHere = 'upload.dropFilesHere';\n/**\n * @hidden\n */\n\nexport var headerStatusUploaded = 'upload.headerStatusUploaded';\n/**\n * @hidden\n */\n\nexport var headerStatusUploading = 'upload.headerStatusUploading';\n/**\n * @hidden\n */\n\nexport var invalidFileExtension = 'upload.invalidFileExtension';\n/**\n * @hidden\n */\n\nexport var invalidFiles = 'upload.invalidFiles';\n/**\n * @hidden\n */\n\nexport var invalidMaxFileSize = 'upload.invalidMaxFileSize';\n/**\n * @hidden\n */\n\nexport var invalidMinFileSize = 'upload.invalidMinFileSize';\n/**\n * @hidden\n */\n\nexport var remove = 'upload.remove';\n/**\n * @hidden\n */\n\nexport var retry = 'upload.retry';\n/**\n * @hidden\n */\n\nexport var select = 'upload.select';\n/**\n * @hidden\n */\n\nexport var uploadSelectedFiles = 'upload.uploadSelectedFiles';\n/**\n * @hidden\n */\n\nexport var total = 'upload.total';\n/**\n * @hidden\n */\n\nexport var files = 'upload.files';\n/**\n * @hidden\n */\n\nexport var messages = (_a = {}, _a[cancel] = 'Cancel', _a[clearSelectedFiles] = 'Clear', _a[dropFilesHere] = 'Drop files here to upload', _a[headerStatusUploaded] = 'Done', _a[headerStatusUploading] = 'Uploading...', _a[invalidFileExtension] = 'File type not allowed.', _a[invalidFiles] = 'Invalid file(s). Please check file upload requirements.', _a[invalidMaxFileSize] = 'File size too large.', _a[invalidMinFileSize] = 'File size too small.', _a[remove] = 'Remove', _a[retry] = 'Retry', _a[select] = 'Select files...', _a[uploadSelectedFiles] = 'Upload', _a[total] = 'Total', _a[files] = 'files', _a);","import { UploadFileStatus } from '../interfaces/UploadFileStatus';\nimport { guid } from '@progress/kendo-react-common';\nvar ampRegExp = /&/g;\nvar ltRegExp = //g;\n\nvar htmlEncode = function htmlEncode(value) {\n return ('' + value).replace(ampRegExp, '&').replace(ltRegExp, '<').replace(gtRegExp, '>').replace(quoteRegExp, '"').replace(aposRegExp, ''');\n};\n\nvar getFileExtension = function getFileExtension(fileName) {\n var rFileExtension = /\\.([^\\.]+)$/;\n var matches = fileName.match(rFileExtension);\n return matches ? matches[0] : '';\n};\n\nvar getFileInfo = function getFileInfo(rawFile) {\n var fileName = rawFile.name;\n var fileSize = rawFile.size;\n return {\n extension: getFileExtension(fileName),\n name: htmlEncode(fileName),\n getRawFile: function getRawFile() {\n return rawFile;\n },\n size: fileSize,\n status: UploadFileStatus.Selected,\n progress: 0,\n uid: ''\n };\n};\n\nvar getAllFileInfo = function getAllFileInfo(rawFiles) {\n var allFileInfo = new Array();\n var i;\n\n for (i = 0; i < rawFiles.length; i++) {\n allFileInfo.push(getFileInfo(rawFiles[i]));\n }\n\n return allFileInfo;\n};\n\nvar fileHasValidationErrors = function fileHasValidationErrors(file) {\n if (file.validationErrors && file.validationErrors.length > 0) {\n return true;\n }\n\n return false;\n};\n\nvar filesHaveValidationErrors = function filesHaveValidationErrors(files) {\n for (var _i = 0, files_1 = files; _i < files_1.length; _i++) {\n var file = files_1[_i];\n\n if (fileHasValidationErrors(file)) {\n return true;\n }\n }\n\n return false;\n};\n\nvar getTotalFilesSizeMessage = function getTotalFilesSizeMessage(files) {\n var totalSize = 0;\n var i;\n\n if (typeof files[0].size === 'number') {\n for (i = 0; i < files.length; i++) {\n if (files[i].size) {\n totalSize += files[i].size || 0;\n }\n }\n } else {\n return '';\n }\n\n totalSize /= 1024;\n\n if (totalSize < 1024) {\n return totalSize.toFixed(2) + ' KB';\n } else {\n return (totalSize / 1024).toFixed(2) + ' MB';\n }\n};\n\nvar assignGuidToFiles = function assignGuidToFiles(files, batchFiles) {\n var uid = guid();\n return files.map(function (file) {\n file.uid = batchFiles ? uid : guid();\n return file;\n });\n};\n\nexport default {\n fileHasValidationErrors: fileHasValidationErrors,\n filesHaveValidationErrors: filesHaveValidationErrors,\n getTotalFilesSizeMessage: getTotalFilesSizeMessage,\n getAllFileInfo: getAllFileInfo,\n getFileInfo: getFileInfo,\n getFileExtension: getFileExtension,\n htmlEncode: htmlEncode,\n assignGuidToFiles: assignGuidToFiles\n};","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { UploadFileStatus } from './interfaces/UploadFileStatus';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, cancel, retry, remove } from './messages';\n/**\n * @hidden\n */\n\nvar UploadListActionButton =\n/** @class */\nfunction (_super) {\n __extends(UploadListActionButton, _super);\n\n function UploadListActionButton(props) {\n var _this = _super.call(this, props) || this;\n\n _this.buttonClassNames = function (type) {\n var _a = _this.state,\n actionFocused = _a.actionFocused,\n retryFocused = _a.retryFocused;\n return classNames('k-button k-upload-action', _this.props.disabled ? 'k-state-disabled' : '', actionFocused && type === 'action' || retryFocused && type === 'retry' ? 'k-state-focused' : '');\n };\n\n _this.onRetryFocus = function () {\n _this.setState({\n retryFocused: true\n });\n };\n\n _this.onRetryBlur = function () {\n _this.setState({\n retryFocused: false\n });\n };\n\n _this.onActionFocus = function () {\n _this.setState({\n actionFocused: true\n });\n };\n\n _this.onActionBlur = function () {\n _this.setState({\n actionFocused: false\n });\n };\n\n _this.onActionClick = function () {\n var _a = _this.props,\n status = _a.status,\n uid = _a.uid,\n disabled = _a.disabled,\n onCancel = _a.onCancel,\n onRemove = _a.onRemove;\n\n if (disabled || status === UploadFileStatus.Removing) {\n return;\n }\n\n if (status === UploadFileStatus.Uploading) {\n onCancel.call(undefined, uid);\n } else {\n onRemove.call(undefined, uid);\n }\n };\n\n _this.onRetryClick = function () {\n var _a = _this.props,\n uid = _a.uid,\n disabled = _a.disabled,\n onRetry = _a.onRetry;\n\n if (disabled) {\n return;\n }\n\n onRetry.call(undefined, uid);\n };\n\n _this.state = {\n retryFocused: false,\n actionFocused: false\n };\n return _this;\n }\n\n UploadListActionButton.prototype.actionButtonTitle = function (status, localizationService) {\n if (status === UploadFileStatus.Uploading) {\n return localizationService.toLanguageString(cancel, messages[cancel]);\n }\n\n return localizationService.toLanguageString(remove, messages[remove]);\n };\n\n UploadListActionButton.prototype.retryButtonTitle = function (localizationService) {\n return localizationService.toLanguageString(retry, messages[retry]);\n };\n\n UploadListActionButton.prototype.render = function () {\n var _a = this.props,\n status = _a.status,\n progress = _a.progress;\n var actionButtonClassNames = classNames('k-icon', status === UploadFileStatus.Uploading ? 'k-cancel k-i-deny' : '', status !== UploadFileStatus.Uploading ? 'k-delete k-i-x' : '');\n var isRetryVisible = status === UploadFileStatus.UploadFailed;\n var isProgressVisible = status === UploadFileStatus.Uploading;\n var isActionHidden = (status === UploadFileStatus.Uploaded || status === UploadFileStatus.Initial) && !this.props.async.removeUrl;\n var localizationService = provideLocalizationService(this);\n var percent = '%';\n return React.createElement(\"strong\", {\n className: 'k-upload-status'\n }, isProgressVisible ? React.createElement(\"span\", {\n className: 'k-upload-pct'\n }, progress, percent) : undefined, isRetryVisible ? React.createElement(\"button\", {\n type: \"button\",\n tabIndex: -1,\n className: this.buttonClassNames('retry'),\n onFocus: this.onRetryFocus,\n onBlur: this.onRetryBlur,\n onClick: this.onRetryClick\n }, React.createElement(\"span\", {\n \"aria-label\": this.retryButtonTitle(localizationService),\n title: this.retryButtonTitle(localizationService),\n className: 'k-icon k-retry k-i-refresh-sm'\n })) : undefined, !isActionHidden ? React.createElement(\"button\", {\n type: \"button\",\n tabIndex: -1,\n className: this.buttonClassNames('action'),\n onFocus: this.onActionFocus,\n onBlur: this.onActionBlur,\n onClick: this.onActionClick\n }, React.createElement(\"span\", {\n \"aria-label\": this.actionButtonTitle(status, localizationService),\n title: this.actionButtonTitle(status, localizationService),\n className: actionButtonClassNames\n })) : undefined);\n };\n\n return UploadListActionButton;\n}(React.Component);\n\nexport { UploadListActionButton };\nregisterForLocalization(UploadListActionButton);","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { UploadFileStatus } from './interfaces/UploadFileStatus';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages } from './messages';\nimport utils from './utils/utils';\nimport { UploadListActionButton } from './UploadListActionButton';\n/**\n * @hidden\n */\n\nvar UploadListSingleItem =\n/** @class */\nfunction (_super) {\n __extends(UploadListSingleItem, _super);\n\n function UploadListSingleItem() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n\n\n _this.isProgressActive = function () {\n return _this.props.files[0].status === UploadFileStatus.Uploading;\n };\n\n return _this;\n }\n /**\n * @hidden\n */\n\n\n UploadListSingleItem.prototype.getFileExtension = function (file) {\n return file.extension ? file.extension.substring(1) : '';\n };\n /**\n * @hidden\n */\n\n\n UploadListSingleItem.prototype.getFileValidationMessage = function (file) {\n var validationMessage = '';\n\n if (file.validationErrors && file.validationErrors.length > 0) {\n var localizationService = provideLocalizationService(this);\n var messageKey = \"upload.\" + file.validationErrors[0];\n validationMessage = localizationService.toLanguageString(messageKey, messages[messageKey]);\n }\n\n return validationMessage;\n };\n /**\n * @hidden\n */\n\n\n UploadListSingleItem.prototype.renderValidationError = function (file) {\n var exclamation = '!';\n return [React.createElement(\"span\", {\n className: 'k-file-invalid-extension-wrapper',\n key: '1'\n }, React.createElement(\"span\", {\n className: 'k-file-invalid-icon'\n }, exclamation), React.createElement(\"span\", {\n className: 'k-file-state'\n })), React.createElement(\"span\", {\n className: 'k-file-name-size-wrapper',\n key: '2'\n }, React.createElement(\"span\", {\n className: 'k-file-name k-file-name-invalid',\n title: file.name\n }, file.name), React.createElement(\"span\", {\n className: 'k-file-validation-message'\n }, this.getFileValidationMessage(file)))];\n };\n /**\n * @hidden\n */\n\n\n UploadListSingleItem.prototype.renderFileDetails = function (file) {\n return [React.createElement(\"span\", {\n className: 'k-file-extension-wrapper',\n key: '1'\n }, React.createElement(\"span\", {\n className: 'k-file-extension'\n }, this.getFileExtension(file)), React.createElement(\"span\", {\n className: 'k-file-state'\n })), React.createElement(\"span\", {\n className: 'k-file-name-size-wrapper',\n key: '2'\n }, React.createElement(\"span\", {\n className: 'k-file-name',\n title: file.name\n }, file.name), React.createElement(\"span\", {\n className: 'k-file-size'\n }, utils.getTotalFilesSizeMessage([file])))];\n };\n /**\n * @hidden\n */\n\n\n UploadListSingleItem.prototype.render = function () {\n var _a = this.props,\n files = _a.files,\n others = __rest(_a, [\"files\"]);\n\n var file = files[0];\n var itemClassName = classNames('k-file-single');\n return React.createElement(\"div\", {\n className: itemClassName\n }, React.createElement(\"span\", {\n className: 'k-progress',\n style: {\n width: (file.progress || 0) + '%',\n opacity: this.isProgressActive() ? 1 : 0,\n transition: 'opacity .5s ease-in-out'\n }\n }), file.validationErrors && file.validationErrors.length > 0 ? this.renderValidationError(file) : undefined, !file.validationErrors || file.validationErrors.length === 0 ? this.renderFileDetails(file) : undefined, React.createElement(UploadListActionButton, __assign({\n uid: file.uid,\n status: file.status,\n progress: file.progress\n }, others)));\n };\n\n return UploadListSingleItem;\n}(React.Component);\n\nexport { UploadListSingleItem };\nregisterForLocalization(UploadListSingleItem);","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { UploadFileStatus } from './interfaces/UploadFileStatus';\nimport utils from './utils/utils';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, total, files as filesM, invalidFiles } from './messages';\nimport { UploadListActionButton } from './UploadListActionButton';\n/**\n * @hidden\n */\n\nvar UploadListMultiItem =\n/** @class */\nfunction (_super) {\n __extends(UploadListMultiItem, _super);\n\n function UploadListMultiItem() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n\n\n _this.mapFiles = function () {\n var files = _this.props.files;\n return files.map(function (file) {\n return React.createElement(\"span\", {\n key: file.name,\n className: _this.fileNameClasses(file),\n title: file.name\n }, file.name);\n });\n };\n /**\n * @hidden\n */\n\n\n _this.fileNameClasses = function (file) {\n return classNames('k-file-name', utils.fileHasValidationErrors(file) ? 'k-file-name-invalid' : '');\n };\n /**\n * @hidden\n */\n\n\n _this.isProgressActive = function () {\n return _this.props.files[0].status === UploadFileStatus.Uploading;\n };\n /**\n * @hidden\n */\n\n\n _this.progress = function () {\n var files = _this.props.files;\n var sum = 0;\n files.forEach(function (file) {\n sum += file.progress || 0;\n });\n return sum / files.length;\n };\n\n return _this;\n }\n\n UploadListMultiItem.prototype.render = function () {\n var _a = this.props,\n files = _a.files,\n others = __rest(_a, [\"files\"]);\n\n var itemClassName = classNames('k-file-multiple');\n var hasValidationErrors = utils.filesHaveValidationErrors(files);\n var localizationService = provideLocalizationService(this);\n var totalMessage = localizationService.toLanguageString(total, messages[total]);\n var filesMessage = localizationService.toLanguageString(filesM, messages[filesM]);\n var invalidFileMessage = localizationService.toLanguageString(invalidFiles, messages[invalidFiles]);\n var progress = this.progress();\n var infoMes = totalMessage + \": \" + files.length + \" \" + filesMessage + \", \" + utils.getTotalFilesSizeMessage(files);\n var exclamation = '!';\n return React.createElement(\"div\", {\n className: itemClassName\n }, React.createElement(\"span\", {\n className: 'k-progress',\n style: {\n width: progress + '%',\n opacity: this.isProgressActive() ? 1 : 0,\n transition: 'opacity .5s ease-in-out'\n }\n }), hasValidationErrors ? React.createElement(\"span\", {\n className: \"k-multiple-files-invalid-extension-wrapper\"\n }, React.createElement(\"span\", {\n className: 'k-file-invalid-icon'\n }, exclamation), React.createElement(\"span\", {\n className: 'k-file-state'\n })) : React.createElement(\"span\", {\n className: 'k-multiple-files-extension-wrapper'\n }, React.createElement(\"span\", {\n className: 'k-file-state'\n })), React.createElement(\"span\", {\n className: \"k-file-name-size-wrapper\"\n }, this.mapFiles(), !hasValidationErrors ? React.createElement(\"span\", {\n className: 'k-file-information'\n }, infoMes) : React.createElement(\"span\", {\n className: 'k-file-validation-message'\n }, invalidFileMessage)), React.createElement(UploadListActionButton, __assign({\n uid: files[0].uid,\n status: files[0].status,\n progress: progress\n }, others)));\n };\n\n return UploadListMultiItem;\n}(React.Component);\n\nexport { UploadListMultiItem };\nregisterForLocalization(UploadListMultiItem);","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { UploadFileStatus } from './interfaces/UploadFileStatus';\nimport { UploadListSingleItem } from './UploadListSingleItem';\nimport { UploadListMultiItem } from './UploadListMultiItem';\nimport utils from './utils/utils';\n/**\n * @hidden\n */\n\nvar UploadListGroup =\n/** @class */\nfunction (_super) {\n __extends(UploadListGroup, _super);\n\n function UploadListGroup() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.onClick = function () {\n _this.props.onClick.call(undefined, _this.props.index);\n };\n\n return _this;\n }\n\n UploadListGroup.prototype.componentDidUpdate = function () {\n var _a = this.props,\n navigationIndex = _a.navigationIndex,\n index = _a.index;\n\n if (navigationIndex === index && this._element && document.activeElement !== this._element) {\n this._element.focus();\n }\n };\n\n UploadListGroup.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n files = _a.files,\n async = _a.async,\n disabled = _a.disabled,\n navigationIndex = _a.navigationIndex,\n index = _a.index,\n listItemUI = _a.listItemUI,\n onCancel = _a.onCancel,\n onRemove = _a.onRemove,\n onRetry = _a.onRetry;\n var firstFile = files[0];\n var isFileSuccess = firstFile.status === UploadFileStatus.Uploaded || firstFile.status === UploadFileStatus.Initial;\n var liClassName = classNames('k-file', utils.filesHaveValidationErrors(files) ? 'k-file-invalid' : '', firstFile.status === UploadFileStatus.UploadFailed || firstFile.status === UploadFileStatus.RemoveFailed ? 'k-file-error' : '', firstFile.status === UploadFileStatus.Uploading ? 'k-file-progress' : '', isFileSuccess ? 'k-file-success' : '', navigationIndex === index ? 'k-state-focused' : '');\n var itemOptions = {\n async: async,\n disabled: disabled,\n onCancel: onCancel,\n onRemove: onRemove,\n onRetry: onRetry\n };\n var ItemComponent = listItemUI || (files.length === 1 ? UploadListSingleItem : UploadListMultiItem);\n return React.createElement(\"li\", {\n ref: function ref(_ref) {\n return _this._element = _ref;\n },\n className: liClassName,\n \"data-uid\": firstFile.uid,\n tabIndex: -1,\n onClick: this.onClick\n }, React.createElement(ItemComponent, __assign({\n files: files\n }, itemOptions)));\n };\n\n return UploadListGroup;\n}(React.Component);\n\nexport { UploadListGroup };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { UploadListGroup } from './UploadListGroup';\n/**\n * @hidden\n */\n\nvar UploadList =\n/** @class */\nfunction (_super) {\n __extends(UploadList, _super);\n\n function UploadList() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n UploadList.prototype.mapListGroups = function () {\n var _a = this.props,\n groupedFiles = _a.groupedFiles,\n navigationIndex = _a.navigationIndex,\n others = __rest(_a, [\"groupedFiles\", \"navigationIndex\"]);\n\n return Object.keys(groupedFiles).map(function (key, index) {\n var files = groupedFiles[key];\n return React.createElement(UploadListGroup, __assign({\n key: key,\n files: files,\n index: index,\n navigationIndex: navigationIndex\n }, others));\n });\n };\n\n UploadList.prototype.render = function () {\n var ulClassName = classNames('k-upload-files', 'k-reset');\n return React.createElement(\"ul\", {\n className: ulClassName\n }, this.mapListGroups());\n };\n\n return UploadList;\n}(React.Component);\n\nexport { UploadList };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nvar CHROME_REGEX = /(chrome)[ \\/]([\\w.]+)/i;\nvar SAFARI_REGEX = /(webkit)[ \\/]([\\w.]+)/i;\n/**\n * @hidden\n */\n\nvar UploadInput =\n/** @class */\nfunction (_super) {\n __extends(UploadInput, _super);\n\n function UploadInput() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.inputRef = function () {\n return _this._input;\n };\n\n _this.onAdd = function () {\n var ua = navigator.userAgent;\n var input = _this._input;\n\n if (input) {\n if (_this.props.onAdd && input.files) {\n _this.props.onAdd.call(undefined, input.files);\n }\n /*\n Chrome and Internet Explorer do not trigger a `change` event\n when a file with the same name is selected a number of consecutive times.\n As a workaround, clear the input value after handling the file.\n */\n\n\n if (!(!ua.match(CHROME_REGEX) && ua.match(SAFARI_REGEX))) {\n input.type = '';\n input.type = 'file';\n }\n }\n };\n\n return _this;\n }\n\n UploadInput.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n multiple = _a.multiple,\n async = _a.async,\n disabled = _a.disabled,\n accept = _a.accept;\n return React.createElement(\"input\", {\n ref: function ref(_ref) {\n return _this._input = _ref;\n },\n autoComplete: 'off',\n name: async.saveField,\n accept: accept,\n type: 'file',\n tabIndex: -1,\n multiple: multiple,\n disabled: disabled,\n onChange: this.onAdd\n });\n };\n\n return UploadInput;\n}(React.Component);\n\nexport { UploadInput };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, select } from './messages';\nimport { UploadInput } from './UploadInput';\n/**\n * @hidden\n */\n\nvar UploadAddButton =\n/** @class */\nfunction (_super) {\n __extends(UploadAddButton, _super);\n\n function UploadAddButton() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.onClick = function () {\n _this.props.onClick.call(undefined, _this.props.addButtonIndex);\n };\n\n return _this;\n }\n\n UploadAddButton.prototype.componentDidUpdate = function (prevProps) {\n var _a = this.props,\n navigationIndex = _a.navigationIndex,\n addButtonIndex = _a.addButtonIndex,\n notFocusedIndex = _a.notFocusedIndex;\n\n if (navigationIndex !== prevProps.navigationIndex && prevProps.navigationIndex !== notFocusedIndex && navigationIndex === addButtonIndex && this._element) {\n this._element.focus();\n }\n };\n\n UploadAddButton.prototype.inputRef = function () {\n if (this._uploadInput) {\n return this._uploadInput.inputRef();\n }\n };\n\n UploadAddButton.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n navigationIndex = _a.navigationIndex,\n addButtonIndex = _a.addButtonIndex,\n tabIndex = _a.tabIndex,\n others = __rest(_a, [\"navigationIndex\", \"addButtonIndex\", \"tabIndex\"]);\n\n var localizationService = provideLocalizationService(this);\n var selectMessage = localizationService.toLanguageString(select, messages[select]);\n var buttonClassName = classNames('k-button', 'k-upload-button', navigationIndex === addButtonIndex ? 'k-state-focused' : '');\n return React.createElement(\"div\", {\n ref: function ref(_ref) {\n return _this._element = _ref;\n },\n role: \"button\",\n className: buttonClassName,\n \"aria-label\": selectMessage,\n tabIndex: tabIndex,\n onClick: this.onClick\n }, React.createElement(UploadInput, __assign({}, others, {\n ref: function ref(_ref2) {\n return _this._uploadInput = _ref2;\n }\n })), React.createElement(\"span\", null, selectMessage));\n };\n\n return UploadAddButton;\n}(React.Component);\n\nexport { UploadAddButton };\nregisterForLocalization(UploadAddButton);","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, clearSelectedFiles, uploadSelectedFiles } from './messages';\n/**\n * @hidden\n */\n\nvar UploadActionButtons =\n/** @class */\nfunction (_super) {\n __extends(UploadActionButtons, _super);\n\n function UploadActionButtons() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.onClearClick = function () {\n if (_this.props.disabled) {\n return;\n }\n\n if (_this.props.onClear) {\n _this.props.onClear.call(undefined);\n }\n };\n\n _this.onUploadClick = function () {\n if (_this.props.disabled) {\n return;\n }\n\n _this.props.onClick.call(undefined, _this.props.uploadButtonIndex);\n\n if (_this.props.onUpload) {\n _this.props.onUpload.call(undefined);\n }\n };\n\n return _this;\n }\n\n UploadActionButtons.prototype.componentDidUpdate = function (prevProps) {\n var _a = this.props,\n navigationIndex = _a.navigationIndex,\n clearButtonIndex = _a.clearButtonIndex,\n uploadButtonIndex = _a.uploadButtonIndex;\n\n if (navigationIndex !== prevProps.navigationIndex) {\n if (navigationIndex === clearButtonIndex && this._clearElement) {\n this._clearElement.focus();\n }\n\n if (navigationIndex === uploadButtonIndex && this._uploadElement) {\n this._uploadElement.focus();\n }\n }\n };\n\n UploadActionButtons.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n disabled = _a.disabled,\n navigationIndex = _a.navigationIndex,\n clearButtonIndex = _a.clearButtonIndex,\n uploadButtonIndex = _a.uploadButtonIndex;\n var localizationService = provideLocalizationService(this);\n var wrapperClasses = classNames('k-action-buttons');\n var clearButtonClasses = classNames('k-button', 'k-clear-selected', disabled ? 'k-state-disabled' : '', navigationIndex === clearButtonIndex ? 'k-state-focused' : '');\n var uploadButtonClasses = classNames('k-button', 'k-primary', 'k-upload-selected', disabled ? 'k-state-disabled' : '', navigationIndex === uploadButtonIndex ? 'k-state-focused' : '');\n return React.createElement(\"div\", {\n className: wrapperClasses\n }, React.createElement(\"button\", {\n ref: function ref(_ref) {\n return _this._clearElement = _ref;\n },\n type: 'button',\n className: clearButtonClasses,\n tabIndex: -1,\n onClick: this.onClearClick\n }, localizationService.toLanguageString(clearSelectedFiles, messages[clearSelectedFiles])), React.createElement(\"button\", {\n ref: function ref(_ref2) {\n return _this._uploadElement = _ref2;\n },\n type: 'button',\n className: uploadButtonClasses,\n tabIndex: -1,\n onClick: this.onUploadClick\n }, localizationService.toLanguageString(uploadSelectedFiles, messages[uploadSelectedFiles])));\n };\n\n return UploadActionButtons;\n}(React.Component);\n\nexport { UploadActionButtons };\nregisterForLocalization(UploadActionButtons);","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { UploadFileStatus } from './interfaces/UploadFileStatus';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, headerStatusUploading, headerStatusUploaded } from './messages';\n/**\n * @hidden\n */\n\nvar UploadStatus =\n/** @class */\nfunction (_super) {\n __extends(UploadStatus, _super);\n\n function UploadStatus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n UploadStatus.prototype.render = function () {\n var fileGroup = this.props.fileGroup;\n var isUploading;\n var isUploaded;\n var isFailed;\n Object.keys(fileGroup).forEach(function (key) {\n var files = fileGroup[key];\n files.forEach(function (file) {\n if (file.status === UploadFileStatus.Uploading) {\n isUploading = true;\n }\n\n if (file.status === UploadFileStatus.Uploaded) {\n isUploaded = true;\n }\n\n if (file.status === UploadFileStatus.UploadFailed) {\n isFailed = true;\n }\n });\n });\n var className = classNames('k-upload-status', 'k-upload-status-total');\n var statusClassName = classNames(!isUploading && !isFailed && isUploaded ? 'k-i-checkmark' : '', !isUploading && isFailed ? 'k-i-exception' : '', isUploading ? 'k-i-loading' : '', 'k-icon');\n var statusText = '';\n var localizationService = provideLocalizationService(this);\n\n if (isUploading) {\n statusText = localizationService.toLanguageString(headerStatusUploading, messages[headerStatusUploading]);\n } else if (isUploaded || isFailed) {\n statusText = localizationService.toLanguageString(headerStatusUploaded, messages[headerStatusUploaded]);\n }\n\n return React.createElement(\"div\", {\n className: className\n }, React.createElement(\"span\", {\n className: statusClassName\n }), statusText);\n };\n\n return UploadStatus;\n}(React.Component);\n\nexport { UploadStatus };\nregisterForLocalization(UploadStatus);","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, dropFilesHere } from './messages';\n/**\n * @hidden\n */\n\nvar TIME_TO_CHECK_DRAG = 100;\n/**\n * @hidden\n */\n\nvar UploadDropZone =\n/** @class */\nfunction (_super) {\n __extends(UploadDropZone, _super);\n\n function UploadDropZone() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this._documentActive = false;\n _this._elementActive = false;\n\n _this.onDocumentDragEnter = function () {\n if (!_this.documentActive) {\n _this.documentActive = true;\n\n var documentInterval = function documentInterval() {\n if (_this.isDragOver(_this._lastDocumentDragOver)) {\n _this.documentActive = false;\n clearInterval(_this._documentInterval);\n _this._documentInterval = null;\n _this._lastDocumentDragOver = null;\n }\n };\n\n _this._documentInterval = setInterval(documentInterval, TIME_TO_CHECK_DRAG);\n }\n };\n\n _this.onDocumentDragOver = function () {\n _this._lastDocumentDragOver = new Date();\n };\n\n _this.onElementDragEnter = function () {\n if (!_this.elementActive) {\n _this.elementActive = true;\n\n var elementInterval = function elementInterval() {\n if (_this.isDragOver(_this._lastElementDragOver)) {\n _this.elementActive = false;\n clearInterval(_this._elementInterval);\n _this._elementInterval = null;\n _this._lastElementDragOver = null;\n }\n };\n\n _this._elementInterval = setInterval(elementInterval, TIME_TO_CHECK_DRAG);\n }\n };\n\n _this.onElementDragOver = function (event) {\n event.preventDefault();\n _this._lastElementDragOver = new Date();\n };\n\n _this.onDrop = function (event) {\n event.preventDefault();\n var droppedFiles = event.dataTransfer.files;\n\n if (droppedFiles.length > 0 && !_this.props.disabled && _this.props.onAdd) {\n _this.props.onAdd.call(undefined, droppedFiles);\n }\n };\n\n _this.isDragOver = function (prevDate) {\n return new Date().getTime() - (prevDate || new Date()).getTime() > TIME_TO_CHECK_DRAG;\n };\n\n return _this;\n }\n\n Object.defineProperty(UploadDropZone.prototype, \"documentActive\", {\n get: function get() {\n return this._documentActive;\n },\n set: function set(active) {\n var prevActive = this.documentActive;\n this._documentActive = active;\n\n if (active !== prevActive) {\n this.forceUpdate();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(UploadDropZone.prototype, \"elementActive\", {\n get: function get() {\n return this._elementActive;\n },\n set: function set(active) {\n var currentActive = this._elementActive;\n this._elementActive = active;\n\n if (active !== currentActive) {\n this.setState({});\n }\n },\n enumerable: true,\n configurable: true\n });\n\n UploadDropZone.prototype.componentDidMount = function () {\n document.addEventListener('dragenter', this.onDocumentDragEnter);\n document.addEventListener('dragover', this.onDocumentDragOver);\n };\n\n UploadDropZone.prototype.componentWillUnmount = function () {\n document.removeEventListener('dragenter', this.onDocumentDragEnter);\n document.removeEventListener('dragover', this.onDocumentDragOver);\n };\n\n UploadDropZone.prototype.render = function () {\n var _a = this.props,\n addButtonComponent = _a.addButtonComponent,\n statusComponent = _a.statusComponent;\n var localizationService = provideLocalizationService(this);\n var dropFilesMessage = localizationService.toLanguageString(dropFilesHere, messages[dropFilesHere]);\n var className = classNames('k-dropzone', this.documentActive ? 'k-dropzone-active' : '', this.elementActive ? 'k-dropzone-hovered' : '');\n return React.createElement(\"div\", {\n className: className,\n onDrop: this.onDrop,\n onDragEnter: this.onElementDragEnter,\n onDragOver: this.onElementDragOver\n }, addButtonComponent, React.createElement(\"div\", {\n className: 'k-dropzone-hint'\n }, dropFilesMessage), statusComponent);\n };\n\n return UploadDropZone;\n}(React.Component);\n\nexport { UploadDropZone };\nregisterForLocalization(UploadDropZone);","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { UploadList } from './UploadList';\nimport { UploadAddButton } from './UploadAddButton';\nimport { UploadActionButtons } from './UploadActionButtons';\nimport { UploadStatus } from './UploadStatus';\nimport { UploadDropZone } from './UploadDropZone';\nvar ADD_BUTTON_NAV_INDEX = -1;\n/**\n * @hidden\n */\n\nvar UploadUI =\n/** @class */\nfunction (_super) {\n __extends(UploadUI, _super);\n\n function UploadUI() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n\n\n _this.onAdd = function (files) {\n if (_this.props.onAdd) {\n _this.props.onAdd.call(undefined, files);\n }\n };\n /**\n * @hidden\n */\n\n\n _this.onRetry = function (uid) {\n if (_this.props.onRetry) {\n _this.props.onRetry.call(undefined, uid);\n }\n };\n /**\n * @hidden\n */\n\n\n _this.onCancel = function (uid) {\n if (_this.props.onCancel) {\n _this.props.onCancel.call(undefined, uid);\n }\n };\n /**\n * @hidden\n */\n\n\n _this.onClear = function () {\n if (_this.props.onClear) {\n _this.props.onClear.call(undefined);\n }\n };\n /**\n * @hidden\n */\n\n\n _this.onUpload = function () {\n if (_this.props.onUpload) {\n _this.props.onUpload.call(undefined);\n }\n };\n /**\n * @hidden\n */\n\n\n _this.onRemove = function (uid) {\n if (_this.props.onRemove) {\n _this.props.onRemove.call(undefined, uid);\n }\n };\n /**\n * @hidden\n */\n\n\n _this.onKeyDown = function (event) {\n if (_this.props.onKeyDown) {\n _this.props.onKeyDown.call(undefined, event, _this.isRtl);\n }\n };\n /**\n * @hidden\n */\n\n\n _this.onFocus = function (event) {\n if (_this.props.onFocus) {\n _this.props.onFocus.call(undefined, event);\n }\n };\n /**\n * @hidden\n */\n\n\n _this.onBlur = function (event) {\n if (_this.props.onBlur) {\n _this.props.onBlur.call(undefined, event);\n }\n };\n /**\n * @hidden\n */\n\n\n _this.onClick = function (navIndex) {\n if (_this.props.onClick) {\n _this.props.onClick.call(undefined, navIndex);\n }\n };\n\n return _this;\n }\n\n Object.defineProperty(UploadUI.prototype, \"async\", {\n get: function get() {\n var _a = this.props,\n autoUpload = _a.autoUpload,\n batch = _a.batch,\n withCredentials = _a.withCredentials,\n saveField = _a.saveField,\n saveHeaders = _a.saveHeaders,\n saveMethod = _a.saveMethod,\n saveUrl = _a.saveUrl,\n responseType = _a.responseType,\n removeField = _a.removeField,\n removeHeaders = _a.removeHeaders,\n removeMethod = _a.removeMethod,\n removeUrl = _a.removeUrl;\n return {\n autoUpload: autoUpload,\n batch: batch,\n withCredentials: withCredentials,\n saveField: saveField,\n saveHeaders: saveHeaders,\n saveMethod: saveMethod,\n saveUrl: saveUrl,\n responseType: responseType,\n removeField: removeField,\n removeHeaders: removeHeaders,\n removeMethod: removeMethod,\n removeUrl: removeUrl\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(UploadUI.prototype, \"groupsCount\", {\n get: function get() {\n return Object.keys(this.props.groupedFiles).length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(UploadUI.prototype, \"lastGroupIndex\", {\n get: function get() {\n return this.groupsCount - 1;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(UploadUI.prototype, \"addButtonIndex\", {\n get: function get() {\n return ADD_BUTTON_NAV_INDEX;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(UploadUI.prototype, \"clearButtonIndex\", {\n get: function get() {\n return this.lastGroupIndex + 1;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(UploadUI.prototype, \"uploadButtonIndex\", {\n get: function get() {\n return this.lastGroupIndex + 2;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(UploadUI.prototype, \"isRtl\", {\n get: function get() {\n return this._container && getComputedStyle(this._container).direction === 'rtl' || false;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n UploadUI.prototype.inputRef = function () {\n if (this._uploadAddButton) {\n return this._uploadAddButton.inputRef();\n }\n };\n /**\n * @hidden\n */\n\n\n UploadUI.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n multiple = _a.multiple,\n disabled = _a.disabled,\n tabIndex = _a.tabIndex,\n accept = _a.accept,\n showFileList = _a.showFileList,\n groupedFiles = _a.groupedFiles,\n navigationIndex = _a.navigationIndex,\n showActionButtons = _a.showActionButtons,\n notFocusedIndex = _a.notFocusedIndex,\n listItemUI = _a.listItemUI;\n var className = classNames('k-widget', 'k-upload', 'k-header', this.props.className, disabled ? 'k-state-disabled' : '');\n var statusComponent = React.createElement(UploadStatus, {\n fileGroup: groupedFiles\n });\n var addButtonComponent = React.createElement(UploadAddButton, {\n ref: function ref(_ref) {\n return _this._uploadAddButton = _ref;\n },\n accept: accept,\n async: this.async,\n addButtonIndex: this.addButtonIndex,\n navigationIndex: navigationIndex,\n notFocusedIndex: notFocusedIndex,\n tabIndex: tabIndex,\n multiple: multiple,\n disabled: disabled,\n onAdd: this.onAdd,\n onClick: this.onClick\n });\n return React.createElement(\"div\", {\n ref: function ref(_ref2) {\n return _this._container = _ref2;\n },\n className: className,\n onKeyDown: this.onKeyDown,\n onFocus: this.onFocus,\n onBlur: this.onBlur\n }, React.createElement(UploadDropZone, {\n addButtonComponent: addButtonComponent,\n statusComponent: statusComponent,\n disabled: disabled,\n onAdd: this.onAdd\n }), showFileList ? React.createElement(UploadList, {\n groupedFiles: groupedFiles,\n disabled: disabled,\n async: this.async,\n navigationIndex: navigationIndex,\n listItemUI: listItemUI,\n onCancel: this.onCancel,\n onRemove: this.onRemove,\n onRetry: this.onRetry,\n onClick: this.onClick\n }) : undefined, showActionButtons ? React.createElement(UploadActionButtons, {\n disabled: disabled,\n navigationIndex: navigationIndex,\n clearButtonIndex: this.clearButtonIndex,\n uploadButtonIndex: this.uploadButtonIndex,\n onUpload: this.onUpload,\n onClear: this.onClear,\n onClick: this.onClick\n }) : undefined);\n };\n\n UploadUI.defaultProps = {\n disabled: false,\n groupedFiles: {},\n multiple: true\n };\n return UploadUI;\n}(React.Component);\n\nexport { UploadUI };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport { Keys } from '@progress/kendo-react-common';\nimport { UploadUI } from './UploadUI';\n/**\n * @hidden\n */\n\nvar NOT_FOCUSED_INDEX = -2;\n/**\n * @hidden\n */\n\nvar DEFAULT_INDEX = -1;\n/**\n * @hidden\n */\n\nvar UploadNavigation =\n/** @class */\nfunction (_super) {\n __extends(UploadNavigation, _super);\n\n function UploadNavigation(props) {\n var _this = _super.call(this, props) || this;\n\n _this.onKeyDown = function (event, isRtl) {\n var navIndex = _this.navIndex;\n var groupKeys = Object.keys(_this.props.groupedFiles);\n var maxFileIndex = groupKeys.length - 1;\n var maxNavIndex = _this.props.autoUpload || groupKeys.length === 0 ? maxFileIndex : maxFileIndex + 1;\n var cancelButtonIndex = maxFileIndex + 1;\n var uploadButtonIndex = cancelButtonIndex + 1;\n var prevIndex = navIndex === NOT_FOCUSED_INDEX ? DEFAULT_INDEX : navIndex;\n var nextIndex = navIndex;\n\n switch (event.keyCode) {\n case Keys.up:\n if (navIndex > -1) {\n nextIndex = prevIndex - 1;\n }\n\n break;\n\n case Keys.down:\n if (navIndex < maxNavIndex) {\n nextIndex = prevIndex + 1;\n }\n\n break;\n\n case Keys.left:\n if (isRtl) {\n if (navIndex === cancelButtonIndex) {\n nextIndex = prevIndex + 1;\n }\n } else {\n if (navIndex === uploadButtonIndex) {\n nextIndex = prevIndex - 1;\n }\n }\n\n break;\n\n case Keys.right:\n if (isRtl) {\n if (navIndex === uploadButtonIndex) {\n nextIndex = prevIndex - 1;\n }\n } else {\n if (navIndex === cancelButtonIndex) {\n nextIndex = prevIndex + 1;\n }\n }\n\n break;\n\n case Keys.enter:\n if (navIndex === DEFAULT_INDEX || navIndex === NOT_FOCUSED_INDEX) {\n if (_this._uploadUI) {\n var input = _this._uploadUI.inputRef();\n\n if (input) {\n input.click();\n }\n }\n }\n\n if (navIndex >= 0 && navIndex <= maxFileIndex) {\n _this.onRetry(groupKeys[navIndex]);\n }\n\n break;\n\n case Keys.space:\n if (navIndex === DEFAULT_INDEX || navIndex === NOT_FOCUSED_INDEX) {\n if (_this._uploadUI) {\n var input = _this._uploadUI.inputRef();\n\n if (input) {\n input.click();\n }\n }\n }\n\n break;\n\n case Keys.tab:\n nextIndex = NOT_FOCUSED_INDEX;\n break;\n\n case Keys.delete:\n if (navIndex >= 0 && navIndex <= maxFileIndex) {\n nextIndex = prevIndex - 1;\n\n _this.onRemove(groupKeys[navIndex]);\n }\n\n break;\n\n case Keys.esc:\n if (navIndex >= 0 && navIndex <= maxFileIndex) {\n nextIndex = prevIndex - 1;\n\n _this.onCancel(groupKeys[navIndex]);\n }\n\n break;\n\n default:\n }\n\n _this.navIndex = nextIndex;\n };\n\n _this.onCancel = function (uid) {\n if (_this.props.onCancel) {\n _this.props.onCancel.call(undefined, uid);\n }\n };\n\n _this.onClear = function () {\n _this.navIndex = DEFAULT_INDEX;\n\n if (_this.props.onClear) {\n _this.props.onClear.call(undefined);\n }\n };\n\n _this.onUpload = function () {\n _this.navIndex = DEFAULT_INDEX;\n\n if (_this.props.onUpload) {\n _this.props.onUpload.call(undefined);\n }\n };\n\n _this.onRetry = function (uid) {\n if (_this.props.onRetry) {\n _this.props.onRetry.call(undefined, uid);\n }\n };\n\n _this.onRemove = function (uid) {\n _this.navIndex = _this.navIndex > DEFAULT_INDEX ? _this.navIndex - 1 : DEFAULT_INDEX;\n\n if (_this.props.onRemove) {\n _this.props.onRemove.call(undefined, uid);\n }\n };\n\n _this.onAdd = function (files) {\n _this.navIndex = DEFAULT_INDEX;\n\n if (_this.props.onAdd) {\n _this.props.onAdd.call(undefined, files);\n }\n };\n\n _this.onClick = function (navIndex) {\n _this.navIndex = navIndex;\n };\n\n _this.onFocus = function () {\n if (_this._blurTimeout) {\n clearTimeout(_this._blurTimeout);\n _this._blurTimeout = undefined;\n }\n };\n\n _this.onBlurTimeout = function () {\n _this.navIndex = NOT_FOCUSED_INDEX;\n _this._blurTimeout = undefined;\n };\n\n _this.onBlur = function () {\n clearTimeout(_this._blurTimeout);\n _this._blurTimeout = setTimeout(_this.onBlurTimeout);\n };\n\n _this._navIndex = NOT_FOCUSED_INDEX;\n return _this;\n }\n\n Object.defineProperty(UploadNavigation.prototype, \"navIndex\", {\n get: function get() {\n return this._navIndex;\n },\n set: function set(navIndex) {\n var prevNavIndex = this.navIndex;\n this._navIndex = navIndex;\n\n if (navIndex !== prevNavIndex) {\n this.forceUpdate();\n }\n },\n enumerable: true,\n configurable: true\n });\n\n UploadNavigation.prototype.componentDidUpdate = function (prevProps) {\n var prevGroupLength = Object.keys(prevProps.groupedFiles).length;\n var groupLength = Object.keys(this.props.groupedFiles).length;\n\n if (prevGroupLength > groupLength && this.navIndex > DEFAULT_INDEX) {\n this.navIndex = this.navIndex - (prevGroupLength - groupLength);\n }\n };\n\n UploadNavigation.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n onClear = _a.onClear,\n onRemove = _a.onRemove,\n onRetry = _a.onRetry,\n onCancel = _a.onCancel,\n onUpload = _a.onUpload,\n onAdd = _a.onAdd,\n others = __rest(_a, [\"onClear\", \"onRemove\", \"onRetry\", \"onCancel\", \"onUpload\", \"onAdd\"]);\n\n return React.createElement(UploadUI, __assign({\n ref: function ref(_ref) {\n return _this._uploadUI = _ref;\n },\n className: this.props.className,\n onKeyDown: this.onKeyDown,\n navigationIndex: this.navIndex,\n notFocusedIndex: NOT_FOCUSED_INDEX,\n onAdd: this.onAdd,\n onClear: this.onClear,\n onUpload: this.onUpload,\n onRemove: this.onRemove,\n onRetry: this.onRetry,\n onCancel: this.onCancel,\n onClick: this.onClick,\n onFocus: this.onFocus,\n onBlur: this.onBlur\n }, others));\n };\n\n return UploadNavigation;\n}(React.Component);\n\nexport { UploadNavigation };","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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport { UploadFileStatus } from '../interfaces/UploadFileStatus';\n\nvar copyState = function copyState(state) {\n return (state || []).map(function (file) {\n return __assign({}, file);\n });\n};\n\nvar add = function add(file, filesState) {\n filesState.push(file);\n};\n\nvar addMany = function addMany(fileList, filesState) {\n fileList.forEach(function (file) {\n return add(file, filesState);\n });\n};\n\nvar groupFilesByUid = function groupFilesByUid(files) {\n var fileGroup = {};\n files.forEach(function (file) {\n if (fileGroup[file.uid]) {\n fileGroup[file.uid].push(file);\n } else {\n fileGroup[file.uid] = [file];\n }\n });\n return fileGroup;\n};\n\nvar filesForUpload = function filesForUpload(files) {\n var notUploadedGroups = {};\n groupForEach(files, function (currentFiles, uid) {\n var currentFilesValid = true;\n currentFiles.forEach(function (file) {\n if (file.status !== UploadFileStatus.Selected || file.validationErrors && file.validationErrors.length > 0) {\n currentFilesValid = false;\n }\n });\n\n if (currentFilesValid) {\n notUploadedGroups[uid] = currentFiles;\n }\n });\n return notUploadedGroups;\n};\n\nvar setFilesStatus = function setFilesStatus(filesGroup, status) {\n groupForEach(filesGroup, function (currentFiles) {\n currentFiles.forEach(function (file) {\n file.status = status;\n });\n });\n};\n\nvar flatFileGroup = function flatFileGroup(fileGroup) {\n var transformed = [];\n groupForEach(fileGroup, function (currentFiles) {\n transformed.push.apply(transformed, currentFiles);\n });\n return transformed;\n};\n\nvar groupForEach = function groupForEach(fileGroup, callBack) {\n Object.keys(fileGroup).forEach(function (uidKey) {\n callBack(fileGroup[uidKey], uidKey);\n });\n};\n\nexport default {\n copyState: copyState,\n addMany: addMany,\n add: add,\n groupFilesByUid: groupFilesByUid,\n filesForUpload: filesForUpload,\n setFilesStatus: setFilesStatus,\n flatFileGroup: flatFileGroup,\n groupForEach: groupForEach\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nvar populateClientFormData = function populateClientFormData(data, clientData) {\n Object.keys(clientData).forEach(function (key) {\n data.append(key, clientData[key]);\n });\n};\n\nvar populateUploadFormData = function populateUploadFormData(files, saveField, clientData) {\n var data = new FormData();\n populateClientFormData(data, clientData);\n files.forEach(function (file) {\n data.append(saveField, file.getRawFile ? file.getRawFile() : '');\n });\n return data;\n};\n\nvar populateRemoveFormData = function populateRemoveFormData(fileNames, removeField, clientData) {\n var data = new FormData();\n populateClientFormData(data, clientData);\n fileNames.forEach(function (fileName) {\n data.append(removeField, fileName);\n });\n return data;\n};\n\nvar populateRequestOptions = function populateRequestOptions(headers, async) {\n return {\n headers: headers,\n responseType: async.responseType,\n withCredentials: async.withCredentials\n };\n};\n\nvar cloneRequestHeaders = function cloneRequestHeaders(headers) {\n var cloned = {};\n Object.keys(headers).forEach(function (key) {\n cloned[key] = headers[key];\n });\n return cloned;\n};\n\nvar convertAxiosResponse = function convertAxiosResponse(event) {\n var data = event.data,\n config = event.config,\n others = __rest(event, [\"data\", \"config\"]);\n\n return __assign({\n response: data\n }, others);\n};\n\nexport default {\n populateClientFormData: populateClientFormData,\n populateUploadFormData: populateUploadFormData,\n populateRemoveFormData: populateRemoveFormData,\n populateRequestOptions: populateRequestOptions,\n cloneRequestHeaders: cloneRequestHeaders,\n convertAxiosResponse: convertAxiosResponse\n};","var INVALIDMAXFILESIZE = 'invalidMaxFileSize';\nvar INVALIDMINFILESIZE = 'invalidMinFileSize';\nvar INVALIDFILEEXTENSION = 'invalidFileExtension';\n\nvar validateFileExtension = function validateFileExtension(file, allowedExtensions) {\n if (allowedExtensions.length > 0) {\n if (allowedExtensions.indexOf((file.extension || '').toLowerCase()) < 0) {\n file.validationErrors = file.validationErrors || [];\n\n if (file.validationErrors.indexOf(INVALIDFILEEXTENSION) < 0) {\n file.validationErrors.push(INVALIDFILEEXTENSION);\n }\n }\n }\n};\n\nvar validateFileSize = function validateFileSize(file, minFileSize, maxFileSize) {\n if (minFileSize !== 0 && (file.size || 0) < minFileSize) {\n file.validationErrors = file.validationErrors || [];\n\n if (file.validationErrors.indexOf(INVALIDMINFILESIZE) < 0) {\n file.validationErrors.push(INVALIDMINFILESIZE);\n }\n }\n\n if (maxFileSize !== 0 && (file.size || 0) > maxFileSize) {\n file.validationErrors = file.validationErrors || [];\n\n if (file.validationErrors.indexOf(INVALIDMAXFILESIZE) < 0) {\n file.validationErrors.push(INVALIDMAXFILESIZE);\n }\n }\n};\n\nvar parseAllowedExtensions = function parseAllowedExtensions(extensions) {\n var allowedExtensions = extensions.map(function (ext) {\n var parsedExt = ext.substring(0, 1) === '.' ? ext : '.' + ext;\n return parsedExt.toLowerCase();\n });\n return allowedExtensions;\n};\n\nvar validateFiles = function validateFiles(files, restrictionInfo) {\n var allowedExtensions = parseAllowedExtensions(restrictionInfo.allowedExtensions || []);\n var maxFileSize = restrictionInfo.maxFileSize || 0;\n var minFileSize = restrictionInfo.minFileSize || 0;\n var i;\n\n for (i = 0; i < files.length; i++) {\n validateFileExtension(files[i], allowedExtensions);\n validateFileSize(files[i], minFileSize, maxFileSize);\n }\n};\n\nexport default {\n validateFiles: validateFiles\n};","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { getTabIndex } from '@progress/kendo-react-common';\nimport { UploadFileStatus } from './interfaces/UploadFileStatus';\nimport { UploadNavigation } from './UploadNavigation';\nimport axios from 'axios';\nimport utils from './utils/utils';\nimport stateUtils from './utils/stateUtils';\nimport connectionUtils from './utils/connectionUtils';\nimport validationUtils from './utils/validationUtils';\n\nvar Upload =\n/** @class */\nfunction (_super) {\n __extends(Upload, _super);\n\n function Upload(props) {\n var _this = _super.call(this, props) || this;\n\n _this._httpSubscriptions = {};\n /**\n * @hidden\n */\n\n _this.uploadFiles = function (filesForUpload) {\n var async = _this.async;\n stateUtils.setFilesStatus(filesForUpload, UploadFileStatus.Uploading);\n stateUtils.groupForEach(filesForUpload, function (currentFiles, uid) {\n var headers = connectionUtils.cloneRequestHeaders(async.saveHeaders || {});\n var additionalData = {};\n var eventData = {\n target: _this,\n files: currentFiles,\n headers: headers,\n additionalData: additionalData\n };\n\n if (_this.props.onBeforeUpload) {\n _this.props.onBeforeUpload.call(undefined, eventData);\n }\n\n var requestOptions = connectionUtils.populateRequestOptions(eventData.headers, _this.async);\n var formData = connectionUtils.populateUploadFormData(currentFiles, async.saveField, eventData.additionalData);\n\n if (_this.isCustomSave) {\n _this.props.saveUrl(currentFiles, {\n formData: formData,\n requestOptions: requestOptions\n }, _this.onUploadProgress).then(function (event) {\n return _this.onUploadSuccess(event.uid);\n }).catch(function (event) {\n return _this.onUploadError(event.uid);\n });\n } else {\n var cancelTokenSource = axios.CancelToken.source();\n _this._httpSubscriptions[uid] = cancelTokenSource;\n axios(__assign({\n method: async.saveMethod,\n url: async.saveUrl,\n data: formData,\n cancelToken: cancelTokenSource.token\n }, requestOptions, {\n onUploadProgress: function onUploadProgress(event) {\n return _this.onUploadProgress(uid, event);\n }\n })).then(function (event) {\n return _this.onUploadSuccess(uid, event);\n }).catch(function (event) {\n return _this.onUploadError(uid, event);\n });\n }\n });\n };\n /**\n * @hidden\n */\n\n\n _this.removeFiles = function (filesForRemove) {\n var async = _this.async;\n stateUtils.groupForEach(filesForRemove, function (currentFiles, uid) {\n var headers = connectionUtils.cloneRequestHeaders(async.removeHeaders || {});\n var additionalData = {};\n var eventData = {\n target: _this,\n files: currentFiles,\n headers: headers,\n additionalData: additionalData\n };\n\n if (_this.props.onBeforeRemove) {\n _this.props.onBeforeRemove.call(undefined, eventData);\n }\n\n var fileNames = currentFiles.map(function (file) {\n return file.name;\n });\n var requestOptions = connectionUtils.populateRequestOptions(eventData.headers, _this.async);\n var formData = connectionUtils.populateRemoveFormData(fileNames, async.removeField, eventData.additionalData);\n\n if (_this.isCustomRemove) {\n _this.props.removeUrl(currentFiles, {\n formData: formData,\n requestOptions: requestOptions\n }).then(function (event) {\n return _this.onRemoveSuccess(event.uid);\n }).catch(function (event) {\n return _this.onRemoveError(event.uid);\n });\n } else {\n axios(__assign({\n method: async.removeMethod,\n url: async.removeUrl,\n data: formData\n }, requestOptions)).then(function (event) {\n return _this.onRemoveSuccess(uid, event);\n }).catch(function (event) {\n return _this.onRemoveError(uid, event);\n });\n }\n });\n };\n /**\n * @hidden\n */\n\n\n _this.onUpload = function () {\n var newState = _this.fileStateCopy;\n var groupedFiles = stateUtils.groupFilesByUid(newState);\n var filesForUpload = stateUtils.filesForUpload(groupedFiles);\n\n _this.uploadFiles(filesForUpload);\n\n var onStatusChangeEvent = function onStatusChangeEvent() {\n if (_this.props.onStatusChange) {\n var eventData = {\n target: _this,\n newState: newState,\n affectedFiles: stateUtils.flatFileGroup(filesForUpload)\n };\n\n _this.props.onStatusChange.call(undefined, eventData);\n }\n };\n\n if (_this.isControlled) {\n onStatusChangeEvent();\n } else {\n _this.setState({\n files: newState\n }, onStatusChangeEvent);\n }\n };\n /**\n * @hidden\n */\n\n\n _this.onAdd = function (files) {\n // The problem when removing rawFile is that there is no reliable way of preserving it internally.\n // For example, uid + filename - the filename can be changed at any moment.\n var selectedFiles = utils.getAllFileInfo(files);\n var newState;\n selectedFiles = utils.assignGuidToFiles(selectedFiles, _this.async.batch);\n validationUtils.validateFiles(selectedFiles, _this.props.restrictions);\n\n if (!_this.props.multiple) {\n newState = [];\n } else {\n newState = _this.fileStateCopy;\n }\n\n stateUtils.addMany(selectedFiles, newState);\n\n if (_this.async.autoUpload) {\n var groupedFiles = stateUtils.groupFilesByUid(newState);\n\n _this.uploadFiles(stateUtils.filesForUpload(groupedFiles));\n }\n\n var onAddEvent = function onAddEvent() {\n if (_this.props.onAdd) {\n var eventData = {\n target: _this,\n newState: newState,\n affectedFiles: selectedFiles\n };\n\n _this.props.onAdd.call(undefined, eventData);\n }\n };\n\n if (_this.isControlled) {\n onAddEvent();\n } else {\n _this.setState({\n files: newState\n }, onAddEvent);\n }\n };\n /**\n * @hidden\n */\n\n\n _this.onUploadProgress = function (uid, event) {\n var percentComplete = Math.round(100 * event.loaded / event.total) || 0;\n var newState = _this.fileStateCopy;\n var filesWithProgress = newState.filter(function (file) {\n return file.uid === uid;\n });\n\n if (!filesWithProgress.length) {\n return;\n }\n\n filesWithProgress.forEach(function (file) {\n file.progress = percentComplete;\n });\n\n var onProgressEvent = function onProgressEvent() {\n if (_this.props.onProgress) {\n var eventData = {\n target: _this,\n newState: newState,\n affectedFiles: filesWithProgress\n };\n\n _this.props.onProgress.call(undefined, eventData);\n }\n };\n\n if (_this.isControlled) {\n onProgressEvent();\n } else {\n _this.setState({\n files: newState\n }, onProgressEvent);\n }\n };\n /**\n * @hidden\n */\n\n\n _this.onUploadSuccess = function (uid, event) {\n var newState = _this.fileStateCopy;\n var successFiles = newState.filter(function (file) {\n return file.uid === uid;\n });\n successFiles.forEach(function (file) {\n file.status = UploadFileStatus.Uploaded;\n });\n delete _this._httpSubscriptions[uid];\n\n var onStatusChangeEvent = function onStatusChangeEvent() {\n if (_this.props.onStatusChange) {\n var eventData = {\n target: _this,\n newState: newState,\n affectedFiles: successFiles,\n response: event ? connectionUtils.convertAxiosResponse(event) : undefined\n };\n\n _this.props.onStatusChange.call(undefined, eventData);\n }\n };\n\n if (_this.isControlled) {\n onStatusChangeEvent();\n } else {\n _this.setState({\n files: newState\n }, onStatusChangeEvent);\n }\n };\n /**\n * @hidden\n */\n\n\n _this.onUploadError = function (uid, event) {\n var newState = _this.fileStateCopy;\n var failedFiles = newState.filter(function (file) {\n return file.uid === uid;\n });\n failedFiles.forEach(function (file) {\n file.status = UploadFileStatus.UploadFailed;\n });\n delete _this._httpSubscriptions[uid];\n\n if (!failedFiles.length) {\n return;\n }\n\n var onStatusChangeEvent = function onStatusChangeEvent() {\n if (_this.props.onStatusChange) {\n var eventData = {\n target: _this,\n newState: newState,\n affectedFiles: failedFiles,\n response: event ? connectionUtils.convertAxiosResponse(event) : undefined\n };\n\n _this.props.onStatusChange.call(undefined, eventData);\n }\n };\n\n if (_this.isControlled) {\n onStatusChangeEvent();\n } else {\n _this.setState({\n files: newState\n }, onStatusChangeEvent);\n }\n };\n /**\n * @hidden\n */\n\n\n _this.onRemove = function (uid) {\n var _a;\n\n var newState = _this.fileStateCopy;\n var filesForRemove = newState.filter(function (file) {\n return file.uid === uid;\n });\n var filesToKeep = newState.filter(function (file) {\n return file.uid !== uid;\n });\n var remoteRemoveStatuses = [UploadFileStatus.Uploaded, UploadFileStatus.Initial, UploadFileStatus.RemoveFailed];\n\n if (remoteRemoveStatuses.indexOf(filesForRemove[0].status) > -1) {\n var fileGroup = (_a = {}, _a[uid] = filesForRemove, _a);\n stateUtils.setFilesStatus(fileGroup, UploadFileStatus.Removing);\n\n _this.removeFiles(fileGroup);\n\n var onStatusChangeEvent = function onStatusChangeEvent() {\n if (_this.props.onStatusChange) {\n var eventData = {\n target: _this,\n newState: newState,\n affectedFiles: filesForRemove\n };\n\n _this.props.onStatusChange.call(undefined, eventData);\n }\n };\n\n if (_this.isControlled) {\n onStatusChangeEvent();\n } else {\n _this.setState({\n files: newState\n }, onStatusChangeEvent);\n }\n } else {\n var onRemoveEvent = function onRemoveEvent() {\n if (_this.props.onRemove) {\n var eventData = {\n target: _this,\n newState: filesToKeep,\n affectedFiles: filesForRemove\n };\n\n _this.props.onRemove.call(undefined, eventData);\n }\n };\n\n if (_this.isControlled) {\n onRemoveEvent();\n } else {\n _this.setState({\n files: filesToKeep\n }, onRemoveEvent);\n }\n }\n };\n /**\n * @hidden\n */\n\n\n _this.onRemoveSuccess = function (uid, event) {\n var newState = _this.fileStateCopy;\n var filesForRemove = newState.filter(function (file) {\n return file.uid === uid;\n });\n var filesToKeep = newState.filter(function (file) {\n return file.uid !== uid;\n });\n\n var onRemoveEvent = function onRemoveEvent() {\n if (_this.props.onRemove) {\n var eventData = {\n target: _this,\n newState: filesToKeep,\n affectedFiles: filesForRemove,\n response: event ? connectionUtils.convertAxiosResponse(event) : undefined\n };\n\n _this.props.onRemove.call(undefined, eventData);\n }\n };\n\n if (_this.isControlled) {\n onRemoveEvent();\n } else {\n _this.setState({\n files: filesToKeep\n }, onRemoveEvent);\n }\n };\n /**\n * @hidden\n */\n\n\n _this.onRemoveError = function (uid, event) {\n var newState = _this.fileStateCopy;\n var failedFiles = newState.filter(function (file) {\n return file.uid === uid;\n });\n failedFiles.forEach(function (file) {\n file.status = UploadFileStatus.RemoveFailed;\n });\n\n var onStatusChangeEvent = function onStatusChangeEvent() {\n if (_this.props.onStatusChange) {\n var eventData = {\n target: _this,\n newState: newState,\n affectedFiles: failedFiles,\n response: event ? connectionUtils.convertAxiosResponse(event) : undefined\n };\n\n _this.props.onStatusChange.call(undefined, eventData);\n }\n };\n\n if (_this.isControlled) {\n onStatusChangeEvent();\n } else {\n _this.setState({\n files: newState\n }, onStatusChangeEvent);\n }\n };\n /**\n * @hidden\n */\n\n\n _this.onRetry = function (uid) {\n var newState = _this.fileStateCopy;\n var filesForRetry = stateUtils.groupFilesByUid(newState.filter(function (file) {\n return file.uid === uid;\n }));\n stateUtils.setFilesStatus(filesForRetry, UploadFileStatus.Uploading);\n\n _this.uploadFiles(filesForRetry);\n\n var onStatusChangeEvent = function onStatusChangeEvent() {\n if (_this.props.onStatusChange) {\n var eventData = {\n target: _this,\n newState: newState,\n affectedFiles: stateUtils.flatFileGroup(filesForRetry)\n };\n\n _this.props.onStatusChange.call(undefined, eventData);\n }\n };\n\n if (_this.isControlled) {\n onStatusChangeEvent();\n } else {\n _this.setState({\n files: newState\n }, onStatusChangeEvent);\n }\n };\n /**\n * @hidden\n */\n\n\n _this.onCancel = function (uid) {\n var newState = _this.fileStateCopy;\n var filesToKeep = newState.filter(function (file) {\n return file.uid !== uid;\n });\n var filesForRemove = newState.filter(function (file) {\n return file.uid === uid;\n });\n\n if (_this._httpSubscriptions[uid]) {\n _this._httpSubscriptions[uid].cancel();\n\n delete _this._httpSubscriptions[uid];\n }\n\n if (_this.props.onCancel) {\n var eventData = {\n target: _this,\n uid: uid\n };\n\n _this.props.onCancel.call(undefined, eventData);\n }\n\n var onRemoveEvent = function onRemoveEvent() {\n if (_this.props.onRemove) {\n var eventData = {\n target: _this,\n newState: filesToKeep,\n affectedFiles: filesForRemove\n };\n\n _this.props.onRemove.call(undefined, eventData);\n }\n };\n\n if (_this.isControlled) {\n onRemoveEvent();\n } else {\n _this.setState({\n files: filesToKeep\n }, onRemoveEvent);\n }\n };\n /**\n * @hidden\n */\n\n\n _this.onClear = function () {\n if (!_this.files.length) {\n return;\n }\n\n Object.keys(_this._httpSubscriptions).forEach(function (key) {\n _this._httpSubscriptions[key].cancel();\n });\n _this._httpSubscriptions = {};\n\n var onRemoveEvent = function onRemoveEvent() {\n if (_this.props.onRemove) {\n var eventData = {\n target: _this,\n newState: [],\n affectedFiles: _this.fileStateCopy\n };\n\n _this.props.onRemove.call(undefined, eventData);\n }\n };\n\n if (_this.isControlled) {\n onRemoveEvent();\n } else {\n _this.setState({\n files: []\n }, onRemoveEvent);\n }\n };\n\n _this.state = {\n files: props.defaultFiles || []\n };\n return _this;\n }\n\n Object.defineProperty(Upload.prototype, \"async\", {\n get: function get() {\n var _a = this.props,\n autoUpload = _a.autoUpload,\n batch = _a.batch,\n removeField = _a.removeField,\n removeHeaders = _a.removeHeaders,\n removeMethod = _a.removeMethod,\n removeUrl = _a.removeUrl,\n responseType = _a.responseType,\n saveField = _a.saveField,\n saveHeaders = _a.saveHeaders,\n saveMethod = _a.saveMethod,\n saveUrl = _a.saveUrl,\n withCredentials = _a.withCredentials;\n return {\n autoUpload: autoUpload,\n batch: batch,\n removeField: removeField,\n removeHeaders: removeHeaders,\n removeMethod: removeMethod,\n removeUrl: removeUrl,\n responseType: responseType,\n saveField: saveField,\n saveHeaders: saveHeaders,\n saveMethod: saveMethod,\n saveUrl: saveUrl,\n withCredentials: withCredentials\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Upload.prototype, \"files\", {\n get: function get() {\n var files = this.isControlled ? this.props.files : this.state.files;\n return files || [];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Upload.prototype, \"isControlled\", {\n get: function get() {\n return !this.props.defaultFiles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Upload.prototype, \"isCustomSave\", {\n get: function get() {\n return this.props.saveUrl && typeof this.props.saveUrl === 'function';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Upload.prototype, \"isCustomRemove\", {\n get: function get() {\n return this.props.removeUrl && typeof this.props.removeUrl === 'function';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Upload.prototype, \"fileStateCopy\", {\n get: function get() {\n if (this.isControlled) {\n return stateUtils.copyState(this.props.files);\n } else {\n return stateUtils.copyState(this.state.files);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n Upload.prototype.render = function () {\n var _a = this.props,\n showFileList = _a.showFileList,\n onAdd = _a.onAdd,\n onRemove = _a.onRemove,\n onCancel = _a.onCancel,\n autoUpload = _a.autoUpload,\n showActionButtons = _a.showActionButtons,\n tabIndex = _a.tabIndex,\n tabindex = _a.tabindex,\n disabled = _a.disabled,\n others = __rest(_a, [\"showFileList\", \"onAdd\", \"onRemove\", \"onCancel\", \"autoUpload\", \"showActionButtons\", \"tabIndex\", \"tabindex\", \"disabled\"]);\n\n var currentTabIndex = tabIndex !== undefined ? tabIndex : tabindex;\n var groupedFiles = stateUtils.groupFilesByUid(this.files);\n var filesForUpload = stateUtils.filesForUpload(groupedFiles);\n return React.createElement(UploadNavigation, __assign({\n groupedFiles: groupedFiles,\n className: this.props.className,\n showFileList: showFileList && !!Object.keys(groupedFiles).length,\n showActionButtons: showActionButtons && !autoUpload && !!Object.keys(filesForUpload).length,\n autoUpload: autoUpload,\n disabled: disabled,\n onAdd: this.onAdd,\n onRemove: this.onRemove,\n onClear: this.onClear,\n onUpload: this.onUpload,\n onRetry: this.onRetry,\n onCancel: this.onCancel,\n tabIndex: getTabIndex(currentTabIndex, disabled)\n }, others));\n };\n /**\n * @hidden\n */\n\n\n Upload.defaultProps = {\n autoUpload: true,\n batch: false,\n removeField: 'fileNames',\n removeHeaders: {},\n removeMethod: 'POST',\n removeUrl: '',\n responseType: 'json',\n saveField: 'files',\n saveHeaders: {},\n saveMethod: 'POST',\n saveUrl: '',\n withCredentials: true,\n restrictions: {\n allowedExtensions: [],\n maxFileSize: 0,\n minFileSize: 0\n },\n multiple: true,\n showFileList: true,\n showActionButtons: true,\n disabled: false\n };\n /**\n * @hidden\n */\n\n Upload.propTypes = {\n autoUpload: PropTypes.bool,\n batch: PropTypes.bool,\n withCredentials: PropTypes.bool,\n saveField: PropTypes.string,\n saveHeaders: PropTypes.object,\n saveMethod: PropTypes.string,\n saveUrl: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n responseType: PropTypes.oneOf(['arraybuffer', 'blob', 'json', 'text']),\n removeField: PropTypes.string,\n removeHeaders: PropTypes.object,\n removeMethod: PropTypes.string,\n removeUrl: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n multiple: PropTypes.bool,\n disabled: PropTypes.bool,\n showFileList: PropTypes.bool,\n showActionButtons: PropTypes.bool,\n tabindex: PropTypes.number,\n tabIndex: PropTypes.number,\n accept: PropTypes.string,\n listItemUI: PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.shape({\n render: PropTypes.func.isRequired\n })]),\n restrictions: PropTypes.shape({\n allowedExtensions: PropTypes.arrayOf(PropTypes.string),\n maxFileSize: PropTypes.number,\n minFileSize: PropTypes.number\n }),\n files: PropTypes.arrayOf(PropTypes.shape({\n uid: PropTypes.string,\n name: PropTypes.string,\n extension: PropTypes.string,\n size: PropTypes.number,\n validationErrors: PropTypes.arrayOf(PropTypes.string),\n status: PropTypes.oneOf([UploadFileStatus.Initial, UploadFileStatus.RemoveFailed, UploadFileStatus.Removing, UploadFileStatus.Selected, UploadFileStatus.UploadFailed, UploadFileStatus.Uploaded, UploadFileStatus.Uploading]),\n progress: PropTypes.number,\n getRawFile: PropTypes.func\n })),\n defaultFiles: PropTypes.arrayOf(PropTypes.shape({\n uid: PropTypes.string,\n name: PropTypes.string,\n extension: PropTypes.string,\n size: PropTypes.number,\n validationErrors: PropTypes.arrayOf(PropTypes.string),\n status: PropTypes.oneOf([UploadFileStatus.Initial, UploadFileStatus.RemoveFailed, UploadFileStatus.Removing, UploadFileStatus.Selected, UploadFileStatus.UploadFailed, UploadFileStatus.Uploaded, UploadFileStatus.Uploading]),\n progress: PropTypes.number,\n getRawFile: PropTypes.func\n }))\n };\n return Upload;\n}(React.Component);\n\nexport { Upload };","import { UploadUI } from './UploadUI';\nimport { Upload } from './Upload';\nimport { UploadFileStatus } from './interfaces/UploadFileStatus';\nexport { UploadUI, Upload, UploadFileStatus };","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","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 * \n * {state => (\n *
    \n * I'm a fade Transition!\n *
    \n * )}\n *
    \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 *
    \n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
    \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 =\n/*#__PURE__*/\nfunction (_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 * \n * {state => (\n * \n * )}\n * \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 * > `` 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;","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\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 `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` 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 ``.\n *\n * Note that `` 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 =\n/*#__PURE__*/\nfunction (_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 (\n /*#__PURE__*/\n React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children)\n );\n }\n\n return (\n /*#__PURE__*/\n React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n },\n /*#__PURE__*/\n React.createElement(Component, props, children))\n );\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
    ` 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 `
    ` 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 `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` 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;","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 React, { Component, isValidElement, cloneElement } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport { Transition, TransitionGroup } from 'react-transition-group';\nimport { render } from 'react-dom';\nvar POSITION = {\n TOP_LEFT: 'top-left',\n TOP_RIGHT: 'top-right',\n TOP_CENTER: 'top-center',\n BOTTOM_LEFT: 'bottom-left',\n BOTTOM_RIGHT: 'bottom-right',\n BOTTOM_CENTER: 'bottom-center'\n};\nvar TYPE = {\n INFO: 'info',\n SUCCESS: 'success',\n WARNING: 'warning',\n ERROR: 'error',\n DEFAULT: 'default'\n};\nvar ACTION = {\n SHOW: 0,\n CLEAR: 1,\n DID_MOUNT: 2,\n WILL_UNMOUNT: 3,\n ON_CHANGE: 4\n};\n\nvar NOOP = function NOOP() {};\n\nvar RT_NAMESPACE = 'Toastify';\n\nfunction isValidDelay(val) {\n return typeof val === 'number' && !isNaN(val) && val > 0;\n}\n\nfunction objectValues(obj) {\n return Object.keys(obj).map(function (key) {\n return obj[key];\n });\n}\n\nvar canUseDom = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nfunction withRequired(fn) {\n fn.isRequired = function (props, propName, componentName) {\n var prop = props[propName];\n\n if (typeof prop === 'undefined') {\n return new Error(\"The prop \" + propName + \" is marked as required in \\n \" + componentName + \", but its value is undefined.\");\n }\n\n fn(props, propName, componentName);\n };\n\n return fn;\n}\n\nvar falseOrDelay = withRequired(function (props, propName, componentName) {\n var prop = props[propName];\n\n if (prop !== false && !isValidDelay(prop)) {\n return new Error(componentName + \" expect \" + propName + \" \\n to be a valid Number > 0 or equal to false. \" + prop + \" given.\");\n }\n\n return null;\n});\nvar eventManager = {\n list: new Map(),\n on: function on(event, callback) {\n this.list.has(event) || this.list.set(event, []);\n this.list.get(event).push(callback);\n return this;\n },\n off: function off(event) {\n this.list.delete(event);\n return this;\n },\n\n /**\n * Enqueue the event at the end of the call stack\n * Doing so let the user call toast as follow:\n * toast('1')\n * toast('2')\n * toast('3')\n * Without setTimemout the code above will not work\n */\n emit: function emit(event) {\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 this.list.has(event) && this.list.get(event).forEach(function (callback) {\n return setTimeout(function () {\n callback.apply(void 0, args);\n }, 0);\n });\n }\n};\n\nfunction cssTransition(_ref) {\n var enter = _ref.enter,\n exit = _ref.exit,\n _ref$duration = _ref.duration,\n duration = _ref$duration === void 0 ? 750 : _ref$duration,\n _ref$appendPosition = _ref.appendPosition,\n appendPosition = _ref$appendPosition === void 0 ? false : _ref$appendPosition;\n return function Animation(_ref2) {\n var children = _ref2.children,\n position = _ref2.position,\n preventExitTransition = _ref2.preventExitTransition,\n props = _objectWithoutPropertiesLoose(_ref2, [\"children\", \"position\", \"preventExitTransition\"]);\n\n var enterClassName = appendPosition ? enter + \"--\" + position : enter;\n var exitClassName = appendPosition ? exit + \"--\" + position : exit;\n var enterDuration, exitDuration;\n\n if (Array.isArray(duration) && duration.length === 2) {\n enterDuration = duration[0];\n exitDuration = duration[1];\n } else {\n enterDuration = exitDuration = duration;\n }\n\n var onEnter = function onEnter(node) {\n node.classList.add(enterClassName);\n node.style.animationFillMode = 'forwards';\n node.style.animationDuration = enterDuration * 0.001 + \"s\";\n };\n\n var onEntered = function onEntered(node) {\n node.classList.remove(enterClassName);\n node.style.cssText = '';\n };\n\n var onExit = function onExit(node) {\n node.classList.add(exitClassName);\n node.style.animationFillMode = 'forwards';\n node.style.animationDuration = exitDuration * 0.001 + \"s\";\n };\n\n return React.createElement(Transition, _extends({}, props, {\n timeout: preventExitTransition ? 0 : {\n enter: enterDuration,\n exit: exitDuration\n },\n onEnter: onEnter,\n onEntered: onEntered,\n onExit: preventExitTransition ? NOOP : onExit\n }), children);\n };\n}\n\nfunction ProgressBar(_ref) {\n var _cx, _animationEvent;\n\n var delay = _ref.delay,\n isRunning = _ref.isRunning,\n closeToast = _ref.closeToast,\n type = _ref.type,\n hide = _ref.hide,\n className = _ref.className,\n userStyle = _ref.style,\n controlledProgress = _ref.controlledProgress,\n progress = _ref.progress,\n rtl = _ref.rtl;\n\n var style = _extends({}, userStyle, {\n animationDuration: delay + \"ms\",\n animationPlayState: isRunning ? 'running' : 'paused',\n opacity: hide ? 0 : 1,\n transform: controlledProgress ? \"scaleX(\" + progress + \")\" : null\n });\n\n var classNames = cx(RT_NAMESPACE + \"__progress-bar\", controlledProgress ? RT_NAMESPACE + \"__progress-bar--controlled\" : RT_NAMESPACE + \"__progress-bar--animated\", RT_NAMESPACE + \"__progress-bar--\" + type, (_cx = {}, _cx[RT_NAMESPACE + \"__progress-bar--rtl\"] = rtl, _cx), className);\n var animationEvent = (_animationEvent = {}, _animationEvent[controlledProgress && progress >= 1 ? 'onTransitionEnd' : 'onAnimationEnd'] = controlledProgress && progress < 1 ? null : closeToast, _animationEvent);\n return React.createElement(\"div\", _extends({\n className: classNames,\n style: style\n }, animationEvent));\n}\n\nProgressBar.propTypes = {\n /**\n * The animation delay which determine when to close the toast\n */\n delay: falseOrDelay.isRequired,\n\n /**\n * Whether or not the animation is running or paused\n */\n isRunning: PropTypes.bool.isRequired,\n\n /**\n * Func to close the current toast\n */\n closeToast: PropTypes.func.isRequired,\n\n /**\n * Support rtl content\n */\n rtl: PropTypes.bool.isRequired,\n\n /**\n * Optional type : info, success ...\n */\n type: PropTypes.string,\n\n /**\n * Hide or not the progress bar\n */\n hide: PropTypes.bool,\n\n /**\n * Optionnal className\n */\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n\n /**\n * Controlled progress value\n */\n progress: PropTypes.number,\n\n /**\n * Tell wether or not controlled progress bar is used\n */\n controlledProgress: PropTypes.bool\n};\nProgressBar.defaultProps = {\n type: TYPE.DEFAULT,\n hide: false\n};\n\nfunction getX(e) {\n return e.targetTouches && e.targetTouches.length >= 1 ? e.targetTouches[0].clientX : e.clientX;\n}\n\nfunction getY(e) {\n return e.targetTouches && e.targetTouches.length >= 1 ? e.targetTouches[0].clientY : e.clientY;\n}\n\nvar iLoveInternetExplorer = canUseDom && /(msie|trident)/i.test(navigator.userAgent);\n\nvar Toast =\n/*#__PURE__*/\nfunction (_Component) {\n _inheritsLoose(Toast, _Component);\n\n function Toast() {\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 = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.state = {\n isRunning: true,\n preventExitTransition: false\n };\n _this.flag = {\n canCloseOnClick: true,\n canDrag: false\n };\n _this.drag = {\n start: 0,\n x: 0,\n y: 0,\n deltaX: 0,\n removalDistance: 0\n };\n _this.boundingRect = null;\n _this.ref = null;\n\n _this.pauseToast = function () {\n if (_this.props.autoClose) {\n _this.setState({\n isRunning: false\n });\n }\n };\n\n _this.playToast = function () {\n if (_this.props.autoClose) {\n _this.setState({\n isRunning: true\n });\n }\n };\n\n _this.onDragStart = function (e) {\n _this.flag.canCloseOnClick = true;\n _this.flag.canDrag = true;\n _this.boundingRect = _this.ref.getBoundingClientRect();\n _this.ref.style.transition = '';\n _this.drag.start = _this.drag.x = getX(e.nativeEvent);\n _this.drag.removalDistance = _this.ref.offsetWidth * (_this.props.draggablePercent / 100);\n };\n\n _this.onDragMove = function (e) {\n if (_this.flag.canDrag) {\n if (_this.state.isRunning) {\n _this.pauseToast();\n }\n\n _this.drag.x = getX(e);\n _this.drag.deltaX = _this.drag.x - _this.drag.start;\n _this.drag.y = getY(e); // prevent false positif during a toast click\n\n _this.drag.start !== _this.drag.x && (_this.flag.canCloseOnClick = false);\n _this.ref.style.transform = \"translateX(\" + _this.drag.deltaX + \"px)\";\n _this.ref.style.opacity = 1 - Math.abs(_this.drag.deltaX / _this.drag.removalDistance);\n }\n };\n\n _this.onDragEnd = function (e) {\n if (_this.flag.canDrag) {\n _this.flag.canDrag = false;\n\n if (Math.abs(_this.drag.deltaX) > _this.drag.removalDistance) {\n _this.setState({\n preventExitTransition: true\n }, _this.props.closeToast);\n\n return;\n }\n\n _this.ref.style.transition = 'transform 0.2s, opacity 0.2s';\n _this.ref.style.transform = 'translateX(0)';\n _this.ref.style.opacity = 1;\n }\n };\n\n _this.onDragTransitionEnd = function () {\n if (_this.boundingRect) {\n var _this$boundingRect = _this.boundingRect,\n top = _this$boundingRect.top,\n bottom = _this$boundingRect.bottom,\n left = _this$boundingRect.left,\n right = _this$boundingRect.right;\n\n if (_this.props.pauseOnHover && _this.drag.x >= left && _this.drag.x <= right && _this.drag.y >= top && _this.drag.y <= bottom) {\n _this.pauseToast();\n } else {\n _this.playToast();\n }\n }\n };\n\n _this.onExitTransitionEnd = function () {\n if (iLoveInternetExplorer) {\n _this.props.onExited();\n\n return;\n }\n\n var height = _this.ref.scrollHeight;\n var style = _this.ref.style;\n requestAnimationFrame(function () {\n style.minHeight = 'initial';\n style.height = height + 'px';\n style.transition = 'all 0.4s ';\n requestAnimationFrame(function () {\n style.height = 0;\n style.padding = 0;\n style.margin = 0;\n });\n setTimeout(function () {\n return _this.props.onExited();\n }, 400);\n });\n };\n\n return _this;\n }\n\n var _proto = Toast.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.props.onOpen(this.props.children.props);\n\n if (this.props.draggable) {\n this.bindDragEvents();\n } // Maybe I could bind the event in the ToastContainer and rely on delegation\n\n\n if (this.props.pauseOnFocusLoss) {\n this.bindFocusEvents();\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (prevProps.draggable !== this.props.draggable) {\n if (this.props.draggable) {\n this.bindDragEvents();\n } else {\n this.unbindDragEvents();\n }\n }\n\n if (prevProps.pauseOnFocusLoss !== this.props.pauseOnFocusLoss) {\n if (this.props.pauseOnFocusLoss) {\n this.bindFocusEvents();\n } else {\n this.unbindFocusEvents();\n }\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.props.onClose(this.props.children.props);\n\n if (this.props.draggable) {\n this.unbindDragEvents();\n }\n\n if (this.props.pauseOnFocusLoss) {\n this.unbindFocusEvents();\n }\n };\n\n _proto.bindFocusEvents = function bindFocusEvents() {\n window.addEventListener('focus', this.playToast);\n window.addEventListener('blur', this.pauseToast);\n };\n\n _proto.unbindFocusEvents = function unbindFocusEvents() {\n window.removeEventListener('focus', this.playToast);\n window.removeEventListener('blur', this.pauseToast);\n };\n\n _proto.bindDragEvents = function bindDragEvents() {\n document.addEventListener('mousemove', this.onDragMove);\n document.addEventListener('mouseup', this.onDragEnd);\n document.addEventListener('touchmove', this.onDragMove);\n document.addEventListener('touchend', this.onDragEnd);\n };\n\n _proto.unbindDragEvents = function unbindDragEvents() {\n document.removeEventListener('mousemove', this.onDragMove);\n document.removeEventListener('mouseup', this.onDragEnd);\n document.removeEventListener('touchmove', this.onDragMove);\n document.removeEventListener('touchend', this.onDragEnd);\n };\n\n _proto.render = function render() {\n var _cx,\n _this2 = this;\n\n var _this$props = this.props,\n closeButton = _this$props.closeButton,\n children = _this$props.children,\n autoClose = _this$props.autoClose,\n pauseOnHover = _this$props.pauseOnHover,\n onClick = _this$props.onClick,\n closeOnClick = _this$props.closeOnClick,\n type = _this$props.type,\n hideProgressBar = _this$props.hideProgressBar,\n closeToast = _this$props.closeToast,\n Transition = _this$props.transition,\n position = _this$props.position,\n className = _this$props.className,\n bodyClassName = _this$props.bodyClassName,\n progressClassName = _this$props.progressClassName,\n progressStyle = _this$props.progressStyle,\n updateId = _this$props.updateId,\n role = _this$props.role,\n progress = _this$props.progress,\n rtl = _this$props.rtl;\n var toastProps = {\n className: cx(RT_NAMESPACE + \"__toast\", RT_NAMESPACE + \"__toast--\" + type, (_cx = {}, _cx[RT_NAMESPACE + \"__toast--rtl\"] = rtl, _cx), className)\n };\n\n if (autoClose && pauseOnHover) {\n toastProps.onMouseEnter = this.pauseToast;\n toastProps.onMouseLeave = this.playToast;\n } // prevent toast from closing when user drags the toast\n\n\n if (closeOnClick) {\n toastProps.onClick = function (e) {\n onClick && onClick(e);\n _this2.flag.canCloseOnClick && closeToast();\n };\n }\n\n var controlledProgress = parseFloat(progress) === progress;\n return React.createElement(Transition, {\n in: this.props.in,\n appear: true,\n onExited: this.onExitTransitionEnd,\n position: position,\n preventExitTransition: this.state.preventExitTransition\n }, React.createElement(\"div\", _extends({\n onClick: onClick\n }, toastProps, {\n ref: function ref(_ref) {\n return _this2.ref = _ref;\n },\n onMouseDown: this.onDragStart,\n onTouchStart: this.onDragStart,\n onMouseUp: this.onDragTransitionEnd,\n onTouchEnd: this.onDragTransitionEnd\n }), React.createElement(\"div\", _extends({}, this.props.in && {\n role: role\n }, {\n className: cx(RT_NAMESPACE + \"__toast-body\", bodyClassName)\n }), children), closeButton && closeButton, (autoClose || controlledProgress) && React.createElement(ProgressBar, _extends({}, updateId && !controlledProgress ? {\n key: \"pb-\" + updateId\n } : {}, {\n rtl: rtl,\n delay: autoClose,\n isRunning: this.state.isRunning,\n closeToast: closeToast,\n hide: hideProgressBar,\n type: type,\n style: progressStyle,\n className: progressClassName,\n controlledProgress: controlledProgress,\n progress: progress\n }))));\n };\n\n return Toast;\n}(Component);\n\nToast.propTypes = {\n closeButton: PropTypes.oneOfType([PropTypes.node, PropTypes.bool]).isRequired,\n autoClose: falseOrDelay.isRequired,\n children: PropTypes.node.isRequired,\n closeToast: PropTypes.func.isRequired,\n position: PropTypes.oneOf(objectValues(POSITION)).isRequired,\n pauseOnHover: PropTypes.bool.isRequired,\n pauseOnFocusLoss: PropTypes.bool.isRequired,\n closeOnClick: PropTypes.bool.isRequired,\n transition: PropTypes.func.isRequired,\n rtl: PropTypes.bool.isRequired,\n hideProgressBar: PropTypes.bool.isRequired,\n draggable: PropTypes.bool.isRequired,\n draggablePercent: PropTypes.number.isRequired,\n in: PropTypes.bool,\n onExited: PropTypes.func,\n onOpen: PropTypes.func,\n onClose: PropTypes.func,\n type: PropTypes.oneOf(objectValues(TYPE)),\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n bodyClassName: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n progressClassName: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n progressStyle: PropTypes.object,\n progress: PropTypes.number,\n updateId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n ariaLabel: PropTypes.string,\n containerId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n role: PropTypes.string\n};\nToast.defaultProps = {\n type: TYPE.DEFAULT,\n in: true,\n onOpen: NOOP,\n onClose: NOOP,\n className: null,\n bodyClassName: null,\n progressClassName: null,\n updateId: null\n};\n\nfunction CloseButton(_ref) {\n var closeToast = _ref.closeToast,\n type = _ref.type,\n ariaLabel = _ref.ariaLabel;\n return React.createElement(\"button\", {\n className: RT_NAMESPACE + \"__close-button \" + RT_NAMESPACE + \"__close-button--\" + type,\n type: \"button\",\n onClick: function onClick(e) {\n e.stopPropagation();\n closeToast(e);\n },\n \"aria-label\": ariaLabel\n }, \"\\u2716\");\n}\n\nCloseButton.propTypes = {\n closeToast: PropTypes.func,\n arialLabel: PropTypes.string\n};\nCloseButton.defaultProps = {\n ariaLabel: 'close'\n};\nvar Bounce = cssTransition({\n enter: RT_NAMESPACE + \"__bounce-enter\",\n exit: RT_NAMESPACE + \"__bounce-exit\",\n appendPosition: true\n});\nvar Slide = cssTransition({\n enter: RT_NAMESPACE + \"__slide-enter\",\n exit: RT_NAMESPACE + \"__slide-exit\",\n duration: [450, 750],\n appendPosition: true\n});\nvar Zoom = cssTransition({\n enter: RT_NAMESPACE + \"__zoom-enter\",\n exit: RT_NAMESPACE + \"__zoom-exit\"\n});\nvar Flip = cssTransition({\n enter: RT_NAMESPACE + \"__flip-enter\",\n exit: RT_NAMESPACE + \"__flip-exit\"\n});\n\nvar ToastContainer =\n/*#__PURE__*/\nfunction (_Component) {\n _inheritsLoose(ToastContainer, _Component);\n\n function ToastContainer() {\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 = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.state = {\n toast: []\n };\n _this.toastKey = 1;\n _this.collection = {};\n\n _this.isToastActive = function (id) {\n return _this.state.toast.indexOf(id) !== -1;\n };\n\n return _this;\n }\n\n var _proto = ToastContainer.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n eventManager.on(ACTION.SHOW, function (content, options) {\n return _this2.buildToast(content, options);\n }).on(ACTION.CLEAR, function (id) {\n return id == null ? _this2.clear() : _this2.removeToast(id);\n }).emit(ACTION.DID_MOUNT, this);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n eventManager.emit(ACTION.WILL_UNMOUNT, this);\n };\n\n _proto.removeToast = function removeToast(id) {\n this.setState({\n toast: this.state.toast.filter(function (v) {\n return v !== id;\n })\n }, this.dispatchChange);\n };\n\n _proto.dispatchChange = function dispatchChange() {\n eventManager.emit(ACTION.ON_CHANGE, this.state.toast.length);\n };\n\n _proto.makeCloseButton = function makeCloseButton(toastClose, toastId, type) {\n var _this3 = this;\n\n var closeButton = this.props.closeButton;\n\n if (isValidElement(toastClose) || toastClose === false) {\n closeButton = toastClose;\n } else if (toastClose === true) {\n closeButton = this.props.closeButton && typeof this.props.closeButton !== 'boolean' ? this.props.closeButton : React.createElement(CloseButton, null);\n }\n\n return closeButton === false ? false : cloneElement(closeButton, {\n closeToast: function closeToast() {\n return _this3.removeToast(toastId);\n },\n type: type\n });\n };\n\n _proto.getAutoCloseDelay = function getAutoCloseDelay(toastAutoClose) {\n return toastAutoClose === false || isValidDelay(toastAutoClose) ? toastAutoClose : this.props.autoClose;\n };\n\n _proto.canBeRendered = function canBeRendered(content) {\n return isValidElement(content) || typeof content === 'string' || typeof content === 'number' || typeof content === 'function';\n };\n\n _proto.parseClassName = function parseClassName(prop) {\n if (typeof prop === 'string') {\n return prop;\n } else if (prop !== null && typeof prop === 'object' && 'toString' in prop) {\n return prop.toString();\n }\n\n return null;\n };\n\n _proto.belongToContainer = function belongToContainer(_ref) {\n var containerId = _ref.containerId;\n return containerId === this.props.containerId;\n };\n\n _proto.buildToast = function buildToast(content, _ref2) {\n var _this4 = this;\n\n var delay = _ref2.delay,\n options = _objectWithoutPropertiesLoose(_ref2, [\"delay\"]);\n\n if (!this.canBeRendered(content)) {\n throw new Error(\"The element you provided cannot be rendered. You provided an element of type \" + typeof content);\n }\n\n var toastId = options.toastId,\n updateId = options.updateId; // Check for multi-container and also for duplicate toastId\n // Maybe it would be better to extract it\n\n if (this.props.enableMultiContainer && !this.belongToContainer(options) || this.isToastActive(toastId) && updateId == null) {\n return;\n }\n\n var closeToast = function closeToast() {\n return _this4.removeToast(toastId);\n };\n\n var toastOptions = {\n id: toastId,\n // ⚠️ if no options.key, this.toastKey - 1 is assigned\n key: options.key || this.toastKey++,\n type: options.type,\n closeToast: closeToast,\n updateId: options.updateId,\n rtl: this.props.rtl,\n position: options.position || this.props.position,\n transition: options.transition || this.props.transition,\n className: this.parseClassName(options.className || this.props.toastClassName),\n bodyClassName: this.parseClassName(options.bodyClassName || this.props.bodyClassName),\n onClick: options.onClick || this.props.onClick,\n closeButton: this.makeCloseButton(options.closeButton, toastId, options.type),\n pauseOnHover: typeof options.pauseOnHover === 'boolean' ? options.pauseOnHover : this.props.pauseOnHover,\n pauseOnFocusLoss: typeof options.pauseOnFocusLoss === 'boolean' ? options.pauseOnFocusLoss : this.props.pauseOnFocusLoss,\n draggable: typeof options.draggable === 'boolean' ? options.draggable : this.props.draggable,\n draggablePercent: typeof options.draggablePercent === 'number' && !isNaN(options.draggablePercent) ? options.draggablePercent : this.props.draggablePercent,\n closeOnClick: typeof options.closeOnClick === 'boolean' ? options.closeOnClick : this.props.closeOnClick,\n progressClassName: this.parseClassName(options.progressClassName || this.props.progressClassName),\n progressStyle: this.props.progressStyle,\n autoClose: this.getAutoCloseDelay(options.autoClose),\n hideProgressBar: typeof options.hideProgressBar === 'boolean' ? options.hideProgressBar : this.props.hideProgressBar,\n progress: parseFloat(options.progress),\n role: typeof options.role === 'string' ? options.role : this.props.role\n };\n typeof options.onOpen === 'function' && (toastOptions.onOpen = options.onOpen);\n typeof options.onClose === 'function' && (toastOptions.onClose = options.onClose); // add closeToast function to react component only\n\n if (isValidElement(content) && typeof content.type !== 'string' && typeof content.type !== 'number') {\n content = cloneElement(content, {\n closeToast: closeToast\n });\n } else if (typeof content === 'function') {\n content = content({\n closeToast: closeToast\n });\n }\n\n if (isValidDelay(delay)) {\n setTimeout(function () {\n _this4.appendToast(toastOptions, content, options.staleToastId);\n }, delay);\n } else {\n this.appendToast(toastOptions, content, options.staleToastId);\n }\n };\n\n _proto.appendToast = function appendToast(options, content, staleToastId) {\n var _extends2;\n\n var id = options.id,\n updateId = options.updateId;\n this.collection = _extends({}, this.collection, (_extends2 = {}, _extends2[id] = {\n options: options,\n content: content,\n position: options.position\n }, _extends2));\n this.setState({\n toast: (updateId ? [].concat(this.state.toast) : [].concat(this.state.toast, [id])).filter(function (id) {\n return id !== staleToastId;\n })\n }, this.dispatchChange);\n };\n\n _proto.clear = function clear() {\n this.setState({\n toast: []\n });\n };\n\n _proto.renderToast = function renderToast() {\n var _this5 = this;\n\n var toastToRender = {};\n var _this$props = this.props,\n className = _this$props.className,\n style = _this$props.style,\n newestOnTop = _this$props.newestOnTop;\n var collection = newestOnTop ? Object.keys(this.collection).reverse() : Object.keys(this.collection); // group toast by position\n\n collection.forEach(function (toastId) {\n var _this5$collection$toa = _this5.collection[toastId],\n position = _this5$collection$toa.position,\n options = _this5$collection$toa.options,\n content = _this5$collection$toa.content;\n toastToRender[position] || (toastToRender[position] = []);\n\n if (_this5.state.toast.indexOf(options.id) !== -1) {\n toastToRender[position].push(React.createElement(Toast, _extends({}, options, {\n isDocumentHidden: _this5.state.isDocumentHidden,\n key: \"toast-\" + options.key\n }), content));\n } else {\n toastToRender[position].push(null);\n delete _this5.collection[toastId];\n }\n });\n return Object.keys(toastToRender).map(function (position) {\n var _cx;\n\n var disablePointer = toastToRender[position].length === 1 && toastToRender[position][0] === null;\n var props = {\n className: cx(RT_NAMESPACE + \"__toast-container\", RT_NAMESPACE + \"__toast-container--\" + position, (_cx = {}, _cx[RT_NAMESPACE + \"__toast-container--rtl\"] = _this5.props.rtl, _cx), _this5.parseClassName(className)),\n style: disablePointer ? _extends({}, style, {\n pointerEvents: 'none'\n }) : _extends({}, style)\n };\n return React.createElement(TransitionGroup, _extends({}, props, {\n key: \"container-\" + position\n }), toastToRender[position]);\n });\n };\n\n _proto.render = function render() {\n return React.createElement(\"div\", {\n className: \"\" + RT_NAMESPACE\n }, this.renderToast());\n };\n\n return ToastContainer;\n}(Component);\n\nToastContainer.propTypes = {\n /**\n * Set toast position\n */\n position: PropTypes.oneOf(objectValues(POSITION)),\n\n /**\n * Disable or set autoClose delay\n */\n autoClose: falseOrDelay,\n\n /**\n * Disable or set a custom react element for the close button\n */\n closeButton: PropTypes.oneOfType([PropTypes.node, PropTypes.bool]),\n\n /**\n * Hide or not progress bar when autoClose is enabled\n */\n hideProgressBar: PropTypes.bool,\n\n /**\n * Pause toast duration on hover\n */\n pauseOnHover: PropTypes.bool,\n\n /**\n * Dismiss toast on click\n */\n closeOnClick: PropTypes.bool,\n\n /**\n * Newest on top\n */\n newestOnTop: PropTypes.bool,\n\n /**\n * An optional className\n */\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n\n /**\n * An optional style\n */\n style: PropTypes.object,\n\n /**\n * An optional className for the toast\n */\n toastClassName: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n\n /**\n * An optional className for the toast body\n */\n bodyClassName: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n\n /**\n * An optional className for the toast progress bar\n */\n progressClassName: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n\n /**\n * An optional style for the toast progress bar\n */\n progressStyle: PropTypes.object,\n\n /**\n * Define enter and exit transition using react-transition-group\n */\n transition: PropTypes.func,\n\n /**\n * Support rtl display\n */\n rtl: PropTypes.bool,\n\n /**\n * Allow toast to be draggable\n */\n draggable: PropTypes.bool,\n\n /**\n * The percentage of the toast's width it takes for a drag to dismiss a toast\n */\n draggablePercent: PropTypes.number,\n\n /**\n * Pause the toast on focus loss\n */\n pauseOnFocusLoss: PropTypes.bool,\n\n /**\n * Show the toast only if it includes containerId and it's the same as containerId\n */\n enableMultiContainer: PropTypes.bool,\n\n /**\n * Set id to handle multiple container\n */\n containerId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n\n /**\n * Set role attribute for the toast body\n */\n role: PropTypes.string,\n\n /**\n * Fired when clicking inside toaster\n */\n onClick: PropTypes.func\n};\nToastContainer.defaultProps = {\n position: POSITION.TOP_RIGHT,\n transition: Bounce,\n rtl: false,\n autoClose: 5000,\n hideProgressBar: false,\n closeButton: React.createElement(CloseButton, null),\n pauseOnHover: true,\n pauseOnFocusLoss: true,\n closeOnClick: true,\n newestOnTop: false,\n draggable: true,\n draggablePercent: 80,\n className: null,\n style: null,\n toastClassName: null,\n bodyClassName: null,\n progressClassName: null,\n progressStyle: null,\n role: 'alert'\n};\nvar containers = new Map();\nvar latestInstance = null;\nvar containerDomNode = null;\nvar containerConfig = {};\nvar queue = [];\nvar lazy = false;\n/**\n * Check whether any container is currently mounted in the DOM\n */\n\nfunction isAnyContainerMounted() {\n return containers.size > 0;\n}\n/**\n * Get the container by id. Returns the last container declared when no id is given.\n */\n\n\nfunction getContainer(containerId) {\n if (!isAnyContainerMounted()) return null;\n if (!containerId) return containers.get(latestInstance);\n return containers.get(containerId);\n}\n/**\n * Get the toast by id, given it's in the DOM, otherwise returns null\n */\n\n\nfunction getToast(toastId, _ref) {\n var containerId = _ref.containerId;\n var container = getContainer(containerId);\n if (!container) return null;\n var toast = container.collection[toastId];\n if (typeof toast === 'undefined') return null;\n return toast;\n}\n/**\n * Merge provided options with the defaults settings and generate the toastId\n */\n\n\nfunction mergeOptions(options, type) {\n return _extends({}, options, {\n type: type,\n toastId: getToastId(options)\n });\n}\n/**\n * Generate a random toastId\n */\n\n\nfunction generateToastId() {\n return (Math.random().toString(36) + Date.now().toString(36)).substr(2, 10);\n}\n/**\n * Generate a toastId or use the one provided\n */\n\n\nfunction getToastId(options) {\n if (options && (typeof options.toastId === 'string' || typeof options.toastId === 'number' && !isNaN(options.toastId))) {\n return options.toastId;\n }\n\n return generateToastId();\n}\n/**\n * If the container is not mounted, the toast is enqueued and\n * the container lazy mounted\n */\n\n\nfunction dispatchToast(content, options) {\n if (isAnyContainerMounted()) {\n eventManager.emit(ACTION.SHOW, content, options);\n } else {\n queue.push({\n action: ACTION.SHOW,\n content: content,\n options: options\n });\n\n if (lazy && canUseDom) {\n lazy = false;\n containerDomNode = document.createElement('div');\n document.body.appendChild(containerDomNode);\n render(React.createElement(ToastContainer, containerConfig), containerDomNode);\n }\n }\n\n return options.toastId;\n}\n\nvar toast = function toast(content, options) {\n return dispatchToast(content, mergeOptions(options, options && options.type || TYPE.DEFAULT));\n};\n/**\n * For each available type create a shortcut\n */\n\n\nvar _loop = function _loop(t) {\n if (TYPE[t] !== TYPE.DEFAULT) {\n toast[TYPE[t].toLowerCase()] = function (content, options) {\n return dispatchToast(content, mergeOptions(options, options && options.type || TYPE[t]));\n };\n }\n};\n\nfor (var t in TYPE) {\n _loop(t);\n}\n/**\n * Maybe I should remove warning in favor of warn, I don't know\n */\n\n\ntoast.warn = toast.warning;\n/**\n * Remove toast programmaticaly\n */\n\ntoast.dismiss = function (id) {\n if (id === void 0) {\n id = null;\n }\n\n return isAnyContainerMounted() && eventManager.emit(ACTION.CLEAR, id);\n};\n/**\n * return true if one container is displaying the toast\n */\n\n\ntoast.isActive = function (id) {\n var isToastActive = false;\n\n if (containers.size > 0) {\n containers.forEach(function (container) {\n if (container.isToastActive(id)) {\n isToastActive = true;\n }\n });\n }\n\n return isToastActive;\n};\n\ntoast.update = function (toastId, options) {\n if (options === void 0) {\n options = {};\n } // if you call toast and toast.update directly nothing will be displayed\n // this is why I defered the update\n\n\n setTimeout(function () {\n var toast = getToast(toastId, options);\n\n if (toast) {\n var oldOptions = toast.options,\n oldContent = toast.content;\n\n var nextOptions = _extends({}, oldOptions, {}, options, {\n toastId: options.toastId || toastId\n });\n\n if (!options.toastId || options.toastId === toastId) {\n nextOptions.updateId = generateToastId();\n } else {\n nextOptions.staleToastId = toastId;\n }\n\n var content = typeof nextOptions.render !== 'undefined' ? nextOptions.render : oldContent;\n delete nextOptions.render;\n dispatchToast(content, nextOptions);\n }\n }, 0);\n};\n/**\n * Used for controlled progress bar.\n */\n\n\ntoast.done = function (id) {\n toast.update(id, {\n progress: 1\n });\n};\n/**\n * Track changes. The callback get the number of toast displayed\n */\n\n\ntoast.onChange = function (callback) {\n if (typeof callback === 'function') {\n eventManager.on(ACTION.ON_CHANGE, callback);\n }\n};\n/**\n * Configure the ToastContainer when lazy mounted\n */\n\n\ntoast.configure = function (config) {\n lazy = true;\n containerConfig = config;\n};\n\ntoast.POSITION = POSITION;\ntoast.TYPE = TYPE;\n/**\n * Wait until the ToastContainer is mounted to dispatch the toast\n * and attach isActive method\n */\n\neventManager.on(ACTION.DID_MOUNT, function (containerInstance) {\n latestInstance = containerInstance.props.containerId || containerInstance;\n containers.set(latestInstance, containerInstance);\n queue.forEach(function (item) {\n eventManager.emit(item.action, item.content, item.options);\n });\n queue = [];\n}).on(ACTION.WILL_UNMOUNT, function (containerInstance) {\n if (containerInstance) containers.delete(containerInstance.props.containerId || containerInstance);else containers.clear();\n\n if (containers.size === 0) {\n eventManager.off(ACTION.SHOW).off(ACTION.CLEAR);\n }\n\n if (canUseDom && containerDomNode) {\n document.body.removeChild(containerDomNode);\n }\n});\nexport { Bounce, Flip, Slide, ToastContainer, POSITION as ToastPosition, TYPE as ToastType, Zoom, cssTransition, toast };","/** PURE_IMPORTS_START _scheduleObservable,_schedulePromise,_scheduleArray,_scheduleIterable,_util_isInteropObservable,_util_isPromise,_util_isArrayLike,_util_isIterable PURE_IMPORTS_END */\nimport { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n } else if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n } else if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n } else if (isIterable(input) || typeof input === 'string') {\n return scheduleIterable(input, scheduler);\n }\n }\n\n throw new TypeError((input !== null && typeof input || input) + ' is not observable');\n}","/** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function isInteropObservable(input) {\n return input && typeof input[Symbol_observable] === 'function';\n}","/** PURE_IMPORTS_START _Observable,_Subscription,_symbol_observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function scheduleObservable(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n sub.add(scheduler.schedule(function () {\n var observable = input[Symbol_observable]();\n sub.add(observable.subscribe({\n next: function next(value) {\n sub.add(scheduler.schedule(function () {\n return subscriber.next(value);\n }));\n },\n error: function error(err) {\n sub.add(scheduler.schedule(function () {\n return subscriber.error(err);\n }));\n },\n complete: function complete() {\n sub.add(scheduler.schedule(function () {\n return subscriber.complete();\n }));\n }\n }));\n }));\n return sub;\n });\n}","/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function schedulePromise(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n sub.add(scheduler.schedule(function () {\n return input.then(function (value) {\n sub.add(scheduler.schedule(function () {\n subscriber.next(value);\n sub.add(scheduler.schedule(function () {\n return subscriber.complete();\n }));\n }));\n }, function (err) {\n sub.add(scheduler.schedule(function () {\n return subscriber.error(err);\n }));\n });\n }));\n return sub;\n });\n}","/** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport function isIterable(input) {\n return input && typeof input[Symbol_iterator] === 'function';\n}","/** PURE_IMPORTS_START _Observable,_Subscription,_symbol_iterator PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport function scheduleIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n var iterator;\n sub.add(function () {\n if (iterator && typeof iterator.return === 'function') {\n iterator.return();\n }\n });\n sub.add(scheduler.schedule(function () {\n iterator = input[Symbol_iterator]();\n sub.add(scheduler.schedule(function () {\n if (subscriber.closed) {\n return;\n }\n\n var value;\n var done;\n\n try {\n var result = iterator.next();\n value = result.value;\n done = result.done;\n } catch (err) {\n subscriber.error(err);\n return;\n }\n\n if (done) {\n subscriber.complete();\n } else {\n subscriber.next(value);\n this.schedule();\n }\n }));\n }));\n return sub;\n });\n}","/** PURE_IMPORTS_START _Observable,_util_subscribeTo,_scheduled_scheduled PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { scheduled } from '../scheduled/scheduled';\nexport function from(input, scheduler) {\n if (!scheduler) {\n if (input instanceof Observable) {\n return input;\n }\n\n return new Observable(subscribeTo(input));\n } else {\n return scheduled(input, scheduler);\n }\n}","/** PURE_IMPORTS_START _subscribeToArray,_subscribeToPromise,_subscribeToIterable,_subscribeToObservable,_isArrayLike,_isPromise,_isObject,_symbol_iterator,_symbol_observable PURE_IMPORTS_END */\nimport { subscribeToArray } from './subscribeToArray';\nimport { subscribeToPromise } from './subscribeToPromise';\nimport { subscribeToIterable } from './subscribeToIterable';\nimport { subscribeToObservable } from './subscribeToObservable';\nimport { isArrayLike } from './isArrayLike';\nimport { isPromise } from './isPromise';\nimport { isObject } from './isObject';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport var subscribeTo = function subscribeTo(result) {\n if (!!result && typeof result[Symbol_observable] === 'function') {\n return subscribeToObservable(result);\n } else if (isArrayLike(result)) {\n return subscribeToArray(result);\n } else if (isPromise(result)) {\n return subscribeToPromise(result);\n } else if (!!result && typeof result[Symbol_iterator] === 'function') {\n return subscribeToIterable(result);\n } else {\n var value = isObject(result) ? 'an invalid object' : \"'\" + result + \"'\";\n var msg = \"You provided \" + value + \" where a stream was expected.\" + ' You can provide an Observable, Promise, Array, or Iterable.';\n throw new TypeError(msg);\n }\n};","/** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport var subscribeToObservable = function subscribeToObservable(obj) {\n return function (subscriber) {\n var obs = obj[Symbol_observable]();\n\n if (typeof obs.subscribe !== 'function') {\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n } else {\n return obs.subscribe(subscriber);\n }\n };\n};","/** PURE_IMPORTS_START _hostReportError PURE_IMPORTS_END */\nimport { hostReportError } from './hostReportError';\nexport var subscribeToPromise = function subscribeToPromise(promise) {\n return function (subscriber) {\n promise.then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) {\n return subscriber.error(err);\n }).then(null, hostReportError);\n return subscriber;\n };\n};","/** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport var subscribeToIterable = function subscribeToIterable(iterable) {\n return function (subscriber) {\n var iterator = iterable[Symbol_iterator]();\n\n do {\n var item = iterator.next();\n\n if (item.done) {\n subscriber.complete();\n break;\n }\n\n subscriber.next(item.value);\n\n if (subscriber.closed) {\n break;\n }\n } while (true);\n\n if (typeof iterator.return === 'function') {\n subscriber.add(function () {\n if (iterator.return) {\n iterator.return();\n }\n });\n }\n\n return subscriber;\n };\n};","module.exports = require('./lib/axios');","//! moment.js\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.moment = factory();\n})(this, function () {\n 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n } // This is done to register the method called with moment()\n // without creating circular dependencies.\n\n\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\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 input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n\n for (k in obj) {\n if (obj.hasOwnProperty(k)) {\n return false;\n }\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 typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n\n function map(arr, fn) {\n var res = [],\n i;\n\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n\n return res;\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\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 invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\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\n return m._pf;\n }\n\n var some;\n\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function some(fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var 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 if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) && flags.overflow < 0 && !flags.empty && !flags.invalidMonth && !flags.invalidWeekday && !flags.weekdayMismatch && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated && (!flags.meridiem || flags.meridiem && parsedParts);\n\n if (m._strict) {\n isNowValid = isNowValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n } // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n\n\n var momentProperties = hooks.momentProperties = [];\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n var updateInProgress = false; // Moment prototype object\n\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n\n if (!this.isValid()) {\n this._d = new Date(NaN);\n } // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n\n\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return obj instanceof Moment || obj != null && obj._isAMomentObject != null;\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 } // compare two arrays, return the number of differences\n\n\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\n for (i = 0; i < len; i++) {\n if (dontConvert && array1[i] !== array2[i] || !dontConvert && toInt(array1[i]) !== toInt(array2[i])) {\n diffs++;\n }\n }\n\n return diffs + lengthDiff;\n }\n\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n\n if (firstTime) {\n var args = [];\n var arg;\n\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n\n for (var key in arguments[0]) {\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\n args.push(arg);\n }\n\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + new Error().stack);\n firstTime = false;\n }\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\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 input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n function set(config) {\n var prop, i;\n\n for (i in config) {\n prop = config[i];\n\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n\n this._config = config; // 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\n this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + '|' + /\\d{1,2}/.source);\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n\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\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) && !hasOwnProp(childConfig, prop) && isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\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 keys(obj) {\n var i,\n res = [];\n\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\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 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.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\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 var 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 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) ? output(number, withoutSuffix, string, isFuture) : 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\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : 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\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [];\n\n for (var u in unitsObj) {\n units.push({\n unit: u,\n priority: priorities[u]\n });\n }\n\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\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 (sign ? forceSign ? '+' : '' : '-') + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n var formatFunctions = {};\n var formatTokenFunctions = {}; // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n\n if (typeof callback === 'string') {\n func = function func() {\n return this[callback]();\n };\n }\n\n if (token) {\n formatTokenFunctions[token] = func;\n }\n\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\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\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n\n return output;\n };\n } // format date using native date object\n\n\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] = formatFunctions[format] || makeFormatFunction(format);\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\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var match1 = /\\d/; // 0 - 9\n\n var match2 = /\\d\\d/; // 00 - 99\n\n var match3 = /\\d{3}/; // 000 - 999\n\n var match4 = /\\d{4}/; // 0000 - 9999\n\n var match6 = /[+-]?\\d{6}/; // -999999 - 999999\n\n var match1to2 = /\\d\\d?/; // 0 - 99\n\n var match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\n\n var match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\n\n var match1to3 = /\\d{1,3}/; // 0 - 999\n\n var match1to4 = /\\d{1,4}/; // 0 - 9999\n\n var match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\n var matchUnsigned = /\\d+/; // 0 - inf\n\n var matchSigned = /[+-]?\\d+/; // -inf - inf\n\n var matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n\n var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n var 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\n var matchWord = /[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 var regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : 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 } // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n\n\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback;\n\n if (typeof token === 'string') {\n token = [token];\n }\n\n if (isNumber(callback)) {\n func = function func(input, array) {\n array[callback] = toInt(input);\n };\n }\n\n for (i = 0; i < token.length; 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 var YEAR = 0;\n var MONTH = 1;\n var DATE = 2;\n var HOUR = 3;\n var MINUTE = 4;\n var SECOND = 5;\n var MILLISECOND = 6;\n var WEEK = 7;\n var WEEKDAY = 8; // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n });\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); // ALIASES\n\n addUnitAlias('year', 'y'); // PRIORITIES\n\n addUnitPriority('year', 1); // 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 addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = 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 }); // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n function isLeapYear(year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n } // HOOKS\n\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n }; // MOMENTS\n\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 return mom.isValid() ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n } // MOMENTS\n\n\n function stringGet(units) {\n units = normalizeUnits(units);\n\n if (isFunction(this[units])) {\n return this[units]();\n }\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\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n\n if (isFunction(this[units])) {\n return this[units](value);\n }\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 indexOf(o) {\n // I know\n var i;\n\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1 ? isLeapYear(year) ? 29 : 28 : 31 - modMonth % 7 % 2;\n } // FORMATTING\n\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n }); // ALIASES\n\n addUnitAlias('month', 'M'); // PRIORITY\n\n addUnitPriority('month', 8); // PARSING\n\n addRegexToken('M', match1to2);\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 addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict); // if we didn't find a month name, mark the date as invalid.\n\n\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n }); // LOCALES\n\n var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months) ? this._months : this._months['standalone'];\n }\n\n return isArray(this._months) ? this._months[m.month()] : this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort : this._monthsShort['standalone'];\n }\n\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] : this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').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\n if (ii !== -1) {\n return ii;\n }\n\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n\n if (ii !== -1) {\n return ii;\n }\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 } // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n\n\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n } // test the regex\n\n\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n } // MOMENTS\n\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\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); // TODO: Another silent failure?\n\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n\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 var defaultMonthsShortRegex = matchWord;\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\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\n return this._monthsShortStrictRegex && isStrict ? this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n\n var defaultMonthsRegex = matchWord;\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\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\n return this._monthsStrictRegex && isStrict ? this._monthsStrictRegex : 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\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n } // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n\n\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\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; // the date constructor remaps years 0-99 to 1900-1999\n\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\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; // the Date.UTC function remaps years 0-99 to 1900-1999\n\n if (y < 100 && y >= 0) {\n var args = Array.prototype.slice.call(arguments); // preserve leap years using a full 400 year cycle, then reset\n\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n\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 } // start-of-first-week - start-of-year\n\n\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 return -fwdlw + fwd - 1;\n } // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n\n\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 } // FORMATTING\n\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W'); // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5); // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }); // HELPERS\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,\n // 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\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n } // MOMENTS\n\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 } // FORMATTING\n\n\n addFormatToken('d', 0, 'do', 'day');\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday'); // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E'); // PRIORITY\n\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11); // 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 addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict); // if we didn't get a weekday name, mark the date as invalid\n\n\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\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\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\n return isNaN(input) ? null : input;\n } // LOCALES\n\n\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays) ? this._weekdays : this._weekdays[m && m !== true && this._weekdays.isFormat.test(format) ? 'format' : 'standalone'];\n return m === true ? shiftWeekdays(weekdays, this._week.dow) : m ? weekdays[m.day()] : weekdays;\n }\n\n var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n\n function localeWeekdaysShort(m) {\n return m === true ? shiftWeekdays(this._weekdaysShort, this._week.dow) : m ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n\n var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n\n function localeWeekdaysMin(m) {\n return m === true ? shiftWeekdays(this._weekdaysMin, this._week.dow) : m ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n\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(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').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\n if (ii !== -1) {\n return ii;\n }\n\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n\n if (ii !== -1) {\n return ii;\n }\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\n if (ii !== -1) {\n return ii;\n }\n\n ii = indexOf.call(this._weekdaysParse, llc);\n\n if (ii !== -1) {\n return ii;\n }\n\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n\n if (ii !== -1) {\n return ii;\n }\n\n ii = indexOf.call(this._weekdaysParse, llc);\n\n if (ii !== -1) {\n return ii;\n }\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 mom = createUTC([2000, 1]).day(i);\n\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n } // test the regex\n\n\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n } // MOMENTS\n\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n\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\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 } // 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\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 var defaultWeekdaysRegex = matchWord;\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\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\n return this._weekdaysStrictRegex && isStrict ? this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n\n var defaultWeekdaysShortRegex = matchWord;\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\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\n return this._weekdaysShortStrictRegex && isStrict ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n\n var defaultWeekdaysMinRegex = matchWord;\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\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\n return this._weekdaysMinStrictRegex && isStrict ? this._weekdaysMinStrictRegex : 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\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 = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = 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 } // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n\n\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n } // FORMATTING\n\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 addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n });\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n\n meridiem('a', true);\n meridiem('A', false); // ALIASES\n\n addUnitAlias('hour', 'h'); // PRIORITY\n\n addUnitPriority('hour', 13); // 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);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\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 var 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 var 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 }); // 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\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n } // MOMENTS\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\n\n var getSetHour = makeGetSet('Hours', true);\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n week: defaultLocaleWeek,\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n meridiemParse: defaultLocaleMeridiemParse\n }; // internal storage for locale config files\n\n var locales = {};\n var localeFamilies = {};\n var globalLocale;\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\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\n\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\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n\n if (locale) {\n return locale;\n }\n\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n\n j--;\n }\n\n i++;\n }\n\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null; // TODO: Find a better way to register and load all the locales in Node\n\n if (!locales[name] && typeof module !== 'undefined' && module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n var aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {}\n }\n\n return locales[name];\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\n\n function getSetGlobalLocale(key, values) {\n var data;\n\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('Locale ' + key + ' not found. Did you forget to load it?');\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\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride', 'use moment.updateLocale(localeName, config) to change ' + 'an existing locale. moment.defineLocale(localeName, ' + 'config) should only be used for creating a new locale ' + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\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\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\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 } // 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\n\n getSetGlobalLocale(name);\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; // MERGE\n\n tmpLocale = loadLocale(name);\n\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale; // backwards compat for now: also set the locale\n\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 } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n\n return locales[name];\n } // returns locale data\n\n\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\n if (locale) {\n return locale;\n }\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 var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow = a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : a[HOUR] < 0 || a[HOUR] > 24 || a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0) ? HOUR : a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n } // Pick the first defined of two or three arguments.\n\n\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n\n if (b != null) {\n return b;\n }\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\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\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\n\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); //compute day of the year from weeks and weekdays\n\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n } //if the day of the year is set, figure out what it is\n\n\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\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 } // 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\n\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n } // Zero out whatever was not defaulted, including time\n\n\n for (; i < 7; i++) {\n config._a[i] = input[i] = config._a[i] == null ? i === 2 ? 1 : 0 : config._a[i];\n } // Check for 24:00:00.000\n\n\n if (config._a[HOUR] === 24 && config._a[MINUTE] === 0 && config._a[SECOND] === 0 && config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay(); // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n\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 } // check for mismatching day of week\n\n\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n w = config._w;\n\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4; // 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\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n\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 var curWeek = weekOfYear(createLocal(), dow, doy);\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); // Default to current week.\n\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\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\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\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 } // 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\n\n var extendedIsoRegex = /^\\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 var basicIsoRegex = /^\\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 var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n var isoDates = [['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/], ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/], ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/], ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false], ['YYYY-DDD', /\\d{4}-\\d{3}/], ['YYYY-MM', /\\d{4}-\\d\\d/, false], ['YYYYYYMMDD', /[+-]\\d{10}/], ['YYYYMMDD', /\\d{8}/], // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/], ['GGGG[W]WW', /\\d{4}W\\d{2}/, false], ['YYYYDDD', /\\d{7}/]]; // iso time formats and regexes\n\n var isoTimes = [['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/], ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/], ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/], ['HH:mm', /\\d\\d:\\d\\d/], ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/], ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/], ['HHmmss', /\\d\\d\\d\\d\\d\\d/], ['HHmm', /\\d\\d\\d\\d/], ['HH', /\\d\\d/]];\n var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i; // date from iso format\n\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\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; 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\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n\n if (match[3]) {\n for (i = 0, l = isoTimes.length; 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\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\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\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n } // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n\n\n var rfc2822 = /^(?:(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\n function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [untruncateYear(yearStr), defaultLocaleMonthsShort.indexOf(monthStr), parseInt(dayStr, 10), parseInt(hourStr, 10), parseInt(minuteStr, 10)];\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\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\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.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n\n return true;\n }\n\n var 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 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 var m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n } // date and time from ref 2822 format\n\n\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i));\n\n if (match) {\n var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], 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 config._d = createUTCDate.apply(null, config._a);\n\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n } // date from iso format or fallback\n\n\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n } // Final attempt, use Input Fallback\n\n\n hooks.createFromInputFallback(config);\n }\n\n hooks.createFromInputFallback = deprecate('value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + 'discouraged and will be removed in an upcoming major release. Please refer to ' + 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }); // constant that refers to the ISO standard\n\n hooks.ISO_8601 = function () {}; // constant that refers to the RFC 2822 form\n\n\n hooks.RFC_2822 = function () {}; // date from string and format string\n\n\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\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n\n config._a = [];\n getParsingFlags(config).empty = true; // This array is used to make a Date, either with `new Date` or `Date.UTC`\n\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n } // don't parse if it's not a known token\n\n\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n } // add remaining unparsed input length to the string\n\n\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n } // clear _12h flag if hour is <= 12\n\n\n if (config._a[HOUR] <= 12 && getParsingFlags(config).bigHour === true && config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem; // handle meridiem\n\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\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\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\n if (isPm && hour < 12) {\n hour += 12;\n }\n\n if (!isPm && hour === 12) {\n hour = 0;\n }\n\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n } // date from string and array of format strings\n\n\n function configFromStringAndArray(config) {\n var tempConfig, bestMoment, scoreToBeat, i, currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n } // if there is any input that was not parsed add a penalty for that format\n\n\n currentScore += getParsingFlags(tempConfig).charsLeftOver; //or tokens\n\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\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 config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n\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 config._locale = config._locale || getLocale(config._l);\n\n if (input === null || format === undefined && input === '') {\n return createInvalid({\n nullInput: true\n });\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\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 (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (isObject(input) && isObjectEmpty(input) || isArray(input) && input.length === 0) {\n input = undefined;\n } // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n\n\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 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('moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', function () {\n var other = createLocal.apply(null, arguments);\n\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n });\n var prototypeMax = deprecate('moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', function () {\n var other = createLocal.apply(null, arguments);\n\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\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\n function pickBy(fn, moments) {\n var res, i;\n\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n\n if (!moments.length) {\n return createLocal();\n }\n\n res = moments[0];\n\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n\n return res;\n } // TODO: Use [].sort instead?\n\n\n function min() {\n var args = [].slice.call(arguments, 0);\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n return pickBy('isAfter', args);\n }\n\n var now = function now() {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n function isDurationValid(m) {\n for (var key in m) {\n if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n\n var unitHasDecimal = false;\n\n for (var i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\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 this._isValid = isDurationValid(normalizedInput); // representation for dateAddRemove\n\n this._milliseconds = +milliseconds + 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\n this._days = +days + weeks * 7; // 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\n this._months = +months + quarters * 3 + years * 12;\n this._data = {};\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 } // FORMATTING\n\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~offset % 60, 2);\n });\n }\n\n offset('Z', ':');\n offset('ZZ', ''); // 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 }); // HELPERS\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n } // Return a moment from input, that is local/utc/zone equivalent to model.\n\n\n function cloneWithOffset(input, model) {\n var res, diff;\n\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); // Use low-level api, because this fn is low-level api.\n\n res._d.setTime(res._d.valueOf() + diff);\n\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() / 15) * 15;\n } // HOOKS\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\n\n hooks.updateOffset = function () {}; // MOMENTS\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\n\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n\n this._offset = input;\n this._isUTC = true;\n\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\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 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\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\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n\n input = input ? createLocal(input).utcOffset() : 0;\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset();\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = 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 } // ASP.NET json date format regex\n\n\n var aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/; // 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\n var isoRegex = /^(-|\\+)?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)) {\n duration = {};\n\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 };\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 (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\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 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(',', '.')); // apply sign while we're at it\n\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n res.months = other.month() - base.month() + (other.year() - base.year()) * 12;\n\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 return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n\n if (!(base.isValid() && other.isValid())) {\n return {\n milliseconds: 0,\n months: 0\n };\n }\n\n other = cloneWithOffset(other, base);\n\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 } // TODO: remove 'name' arg after deprecation is removed\n\n\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp; //invert the arguments, but complain about it\n\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val;\n val = period;\n period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\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\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add');\n var subtract = createAdder(-1, 'subtract');\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' : diff < -1 ? 'lastWeek' : diff < 0 ? 'lastDay' : diff < 1 ? 'sameDay' : diff < 2 ? 'nextDay' : diff < 7 ? 'nextWeek' : 'sameElse';\n }\n\n function calendar$1(time, formats) {\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 var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\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\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n\n units = normalizeUnits(units) || 'millisecond';\n\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\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n\n units = normalizeUnits(units) || 'millisecond';\n\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\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) && (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n\n units = normalizeUnits(units) || 'millisecond';\n\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\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 units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n\n case 'month':\n output = monthDiff(this, that);\n break;\n\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n\n case 'second':\n output = (this - that) / 1e3;\n break;\n // 1000\n\n case 'minute':\n output = (this - that) / 6e4;\n break;\n // 1000 * 60\n\n case 'hour':\n output = (this - that) / 36e5;\n break;\n // 1000 * 60 * 60\n\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break;\n // 1000 * 60 * 60 * 24, negate dst\n\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break;\n // 1000 * 60 * 60 * 24 * 7, negate dst\n\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\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'); // linear across the month\n\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); // linear across the month\n\n adjust = (b - anchor) / (anchor2 - anchor);\n } //check for negative zero, return zero if negative zero\n\n\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\n var utc = keepOffset !== true;\n var m = utc ? this.clone().utc() : this;\n\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : '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).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\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\n\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n\n var func = 'moment';\n var zone = '';\n\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n\n var prefix = '[' + func + '(\"]';\n var year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n return createDuration({\n to: this,\n from: time\n }).locale(this.locale()).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 (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n return createDuration({\n from: this,\n to: time\n }).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\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\n\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n\n return this;\n }\n }\n\n var lang = deprecate('moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n });\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000;\n var MS_PER_MINUTE = 60 * MS_PER_SECOND;\n var MS_PER_HOUR = 60 * MS_PER_MINUTE;\n var MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR; // actual modulo - handles negative numbers (for dates before 1970):\n\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;\n units = normalizeUnits(units);\n\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3, 1);\n break;\n\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday());\n break;\n\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));\n break;\n\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);\n break;\n\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n\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\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time;\n units = normalizeUnits(units);\n\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;\n break;\n\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;\n break;\n\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;\n break;\n\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n\n case 'hour':\n time = this._d.valueOf();\n time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;\n break;\n\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n\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\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 [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\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 } // FORMATTING\n\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\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'); // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG'); // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1); // 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 addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n }); // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(this, input, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy);\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(this, input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n\n if (week > weeksTarget) {\n week = weeksTarget;\n }\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 this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n } // FORMATTING\n\n\n addFormatToken('Q', 0, 'Qo', 'quarter'); // ALIASES\n\n addUnitAlias('quarter', 'Q'); // PRIORITY\n\n addUnitPriority('quarter', 7); // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n }); // MOMENTS\n\n function getSetQuarter(input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n } // FORMATTING\n\n\n addFormatToken('D', ['DD', 2], 'Do', 'date'); // ALIASES\n\n addUnitAlias('date', 'D'); // PRIORITY\n\n addUnitPriority('date', 9); // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ? locale._dayOfMonthOrdinalParse || locale._ordinalParse : locale._dayOfMonthOrdinalParseLenient;\n });\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n }); // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true); // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD'); // PRIORITY\n\n addUnitPriority('dayOfYear', 4); // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n }); // HELPERS\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n } // FORMATTING\n\n\n addFormatToken('m', ['mm', 2], 0, 'minute'); // ALIASES\n\n addUnitAlias('minute', 'm'); // PRIORITY\n\n addUnitPriority('minute', 14); // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE); // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false); // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second'); // ALIASES\n\n addUnitAlias('second', 's'); // PRIORITY\n\n addUnitPriority('second', 15); // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND); // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false); // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\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 }); // ALIASES\n\n addUnitAlias('millisecond', 'ms'); // PRIORITY\n\n addUnitPriority('millisecond', 16); // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n var token;\n\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 } // MOMENTS\n\n\n var getSetMillisecond = makeGetSet('Milliseconds', false); // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName'); // 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 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 proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\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.isoWeeksInYear = getISOWeeksInYear;\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('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\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 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.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 proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale();\n var 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 var out = [];\n\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n\n return out;\n } // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n\n\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\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\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 dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function ordinal(number) {\n var b = number % 10,\n output = toInt(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n }\n }); // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\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 return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n return duration._bubble();\n } // supports only 2.0-style add(1, 's') or add(duration)\n\n\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n } // supports only 2.0-style subtract(1, 's') or subtract(duration)\n\n\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 var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays; // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n\n if (!(milliseconds >= 0 && days >= 0 && months >= 0 || milliseconds <= 0 && days <= 0 && months <= 0)) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n } // The following code bubbles up values, see the tests for\n // examples of what that means.\n\n\n data.milliseconds = milliseconds % 1000;\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n days += absFloor(hours / 24); // convert days to months\n\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays)); // 12 months -> 1 year\n\n years = absFloor(months / 12);\n months %= 12;\n data.days = days;\n data.months = months;\n data.years = years;\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\n var days;\n var months;\n var milliseconds = this._milliseconds;\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\n switch (units) {\n case 'month':\n return months;\n\n case 'quarter':\n return months / 3;\n\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\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n\n case 'day':\n return days + milliseconds / 864e5;\n\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n } // TODO: Use this.as('ms')?\n\n\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n\n return this._milliseconds + this._days * 864e5 + this._months % 12 * 2592e6 + toInt(this._months / 12) * 31536e6;\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms');\n var asSeconds = makeAs('s');\n var asMinutes = makeAs('m');\n var asHours = makeAs('h');\n var asDays = makeAs('d');\n var asWeeks = makeAs('w');\n var asMonths = makeAs('M');\n var asQuarters = makeAs('Q');\n var asYears = makeAs('y');\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 var seconds = makeGetter('seconds');\n var minutes = makeGetter('minutes');\n var hours = makeGetter('hours');\n var days = makeGetter('days');\n var months = makeGetter('months');\n var years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round;\n var thresholds = {\n ss: 44,\n // a few seconds to seconds\n s: 45,\n // seconds to minute\n m: 45,\n // minutes to hour\n h: 22,\n // hours to day\n d: 26,\n // days to month\n M: 11 // months to year\n\n }; // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n\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, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n var a = seconds <= thresholds.ss && ['s', seconds] || seconds < thresholds.s && ['ss', seconds] || minutes <= 1 && ['m'] || minutes < thresholds.m && ['mm', minutes] || hours <= 1 && ['h'] || hours < thresholds.h && ['hh', hours] || days <= 1 && ['d'] || days < thresholds.d && ['dd', days] || months <= 1 && ['M'] || months < thresholds.M && ['MM', months] || years <= 1 && ['y'] || ['yy', years];\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n } // This function allows you to set the rounding function for relative time strings\n\n\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n\n return false;\n } // This function allows you to set a threshold for relative time strings\n\n\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n\n if (limit === undefined) {\n return thresholds[threshold];\n }\n\n thresholds[threshold] = limit;\n\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n\n return true;\n }\n\n function humanize(withSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, 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 var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years; // 3600 seconds -> 60 minutes -> 1 hour\n\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60; // 12 months -> 1 year\n\n years = absFloor(months / 12);\n months %= 12; // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n var total = this.asSeconds();\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 var totalSign = total < 0 ? '-' : '';\n var ymSign = sign(this._months) !== sign(total) ? '-' : '';\n var daysSign = sign(this._days) !== sign(total) ? '-' : '';\n var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n return totalSign + 'P' + (Y ? ymSign + Y + 'Y' : '') + (M ? ymSign + M + 'M' : '') + (D ? daysSign + D + 'D' : '') + (h || m || s ? 'T' : '') + (h ? hmsSign + h + 'H' : '') + (m ? hmsSign + m + 'M' : '') + (s ? hmsSign + s + 'S' : '');\n }\n\n var proto$2 = Duration.prototype;\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 proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n proto$2.lang = lang; // Side effect imports\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf'); // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n }); // Side effect imports\n\n hooks.version = '2.24.0';\n setHookCallback(createLocal);\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; // currently HTML5 input type only supports 24-hour formats\n\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm',\n // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss',\n // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS',\n // \n DATE: 'YYYY-MM-DD',\n // \n TIME: 'HH:mm',\n // \n TIME_SECONDS: 'HH:mm:ss',\n // \n TIME_MS: 'HH:mm:ss.SSS',\n // \n WEEK: 'GGGG-[W]WW',\n // \n MONTH: 'YYYY-MM' // \n\n };\n return hooks;\n});","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n'use strict';\n/* eslint-disable no-unused-vars */\n\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n if (val === null || val === undefined) {\n throw new TypeError('Object.assign cannot be called with null or undefined');\n }\n\n return Object(val);\n}\n\nfunction shouldUseNative() {\n try {\n if (!Object.assign) {\n return false;\n } // Detect buggy property enumeration order in older V8 versions.\n // https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\n\n var test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\n test1[5] = 'de';\n\n if (Object.getOwnPropertyNames(test1)[0] === '5') {\n return false;\n } // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\n\n var test2 = {};\n\n for (var i = 0; i < 10; i++) {\n test2['_' + String.fromCharCode(i)] = i;\n }\n\n var order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n return test2[n];\n });\n\n if (order2.join('') !== '0123456789') {\n return false;\n } // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\n\n var test3 = {};\n 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n test3[letter] = letter;\n });\n\n if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {\n return false;\n }\n\n return true;\n } catch (err) {\n // We don't expect any of the above to throw, but better to be safe.\n return false;\n }\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n var from;\n var to = toObject(target);\n var symbols;\n\n for (var s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n\n if (getOwnPropertySymbols) {\n symbols = getOwnPropertySymbols(from);\n\n for (var i = 0; i < symbols.length; i++) {\n if (propIsEnumerable.call(from, symbols[i])) {\n to[symbols[i]] = from[symbols[i]];\n }\n }\n }\n }\n\n return to;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.trackPromise = exports.promiseCounterUpdateEventId = exports.manuallyResetPromiseCounter = exports.manuallyIncrementPromiseCounter = exports.manuallyDecrementPromiseCounter = exports.getCounter = exports.emitter = void 0;\n\nvar _tinyEmmiter = require(\"./tinyEmmiter\");\n\nvar _constants = require(\"./constants\");\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar emitter = new _tinyEmmiter.Emitter();\nexports.emitter = emitter;\nvar promiseCounterUpdateEventId = \"promise-counter-update\";\nexports.promiseCounterUpdateEventId = promiseCounterUpdateEventId;\n\nvar counter = _defineProperty({}, _constants.defaultArea, 0);\n\nvar getCounter = function getCounter(area) {\n return counter[area];\n};\n\nexports.getCounter = getCounter;\n\nvar trackPromise = function trackPromise(promise, area) {\n area = area || _constants.defaultArea;\n incrementPromiseCounter(area);\n\n var onResolveHandler = function onResolveHandler() {\n return decrementPromiseCounter(area);\n };\n\n promise.then(onResolveHandler, onResolveHandler);\n return promise;\n};\n\nexports.trackPromise = trackPromise;\n\nvar incrementPromiseCounter = function incrementPromiseCounter(area) {\n incrementCounter(area);\n var promiseInProgress = anyPromiseInProgress(area);\n emitter.emit(promiseCounterUpdateEventId, promiseInProgress, area);\n};\n\nvar incrementCounter = function incrementCounter(area) {\n if (Boolean(counter[area])) {\n counter[area]++;\n } else {\n counter[area] = 1;\n }\n};\n\nvar anyPromiseInProgress = function anyPromiseInProgress(area) {\n return counter[area] > 0;\n};\n\nvar decrementPromiseCounter = function decrementPromiseCounter(area) {\n counter[area] > 0 && decrementCounter(area);\n var promiseInProgress = anyPromiseInProgress(area);\n emitter.emit(promiseCounterUpdateEventId, promiseInProgress, area);\n};\n\nvar decrementCounter = function decrementCounter(area) {\n counter[area]--;\n};\n\nvar manuallyResetPromiseCounter = function manuallyResetPromiseCounter(area) {\n area = area || _constants.defaultArea;\n counter[area] = 0;\n emitter.emit(promiseCounterUpdateEventId, false, area);\n};\n\nexports.manuallyResetPromiseCounter = manuallyResetPromiseCounter;\n\nvar manuallyDecrementPromiseCounter = function manuallyDecrementPromiseCounter(area) {\n area = area || _constants.defaultArea;\n decrementPromiseCounter(area);\n};\n\nexports.manuallyDecrementPromiseCounter = manuallyDecrementPromiseCounter;\n\nvar manuallyIncrementPromiseCounter = function manuallyIncrementPromiseCounter(area) {\n area = area || _constants.defaultArea;\n incrementPromiseCounter(area);\n}; // TODO: Enhancement we could catch here errors and throw an Event in case there's an HTTP Error\n// then the consumer of this event can be listening and decide what to to in case of error\n\n\nexports.manuallyIncrementPromiseCounter = manuallyIncrementPromiseCounter;","'use strict';\n\nvar utils = require('./utils');\n\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\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\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) || utils.isArrayBuffer(data) || utils.isBuffer(data) || utils.isStream(data) || utils.isFile(data) || utils.isBlob(data)) {\n return data;\n }\n\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n\n return data;\n }],\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) {\n /* Ignore */\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 xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n maxContentLength: -1,\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\nmodule.exports = defaults;","import { Router, __RouterContext, matchPath } from 'react-router';\nexport { MemoryRouter, Prompt, Redirect, Route, Router, StaticRouter, Switch, generatePath, matchPath, useHistory, useLocation, useParams, useRouteMatch, withRouter } from 'react-router';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport React from 'react';\nimport { createBrowserHistory, createHashHistory, createLocation } from 'history';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport invariant from 'tiny-invariant';\n/**\n * The public API for a that uses HTML5 history.\n */\n\nvar BrowserRouter =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(BrowserRouter, _React$Component);\n\n function BrowserRouter() {\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.history = createBrowserHistory(_this.props);\n return _this;\n }\n\n var _proto = BrowserRouter.prototype;\n\n _proto.render = function render() {\n return React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return BrowserRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\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 process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\") : void 0;\n };\n}\n/**\n * The public API for a that uses window.location.hash.\n */\n\n\nvar HashRouter =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(HashRouter, _React$Component);\n\n function HashRouter() {\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.history = createHashHistory(_this.props);\n return _this;\n }\n\n var _proto = HashRouter.prototype;\n\n _proto.render = function render() {\n return React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return HashRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\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 process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { HashRouter as Router }`.\") : void 0;\n };\n}\n\nvar resolveToLocation = function resolveToLocation(to, currentLocation) {\n return typeof to === \"function\" ? to(currentLocation) : to;\n};\n\nvar normalizeToLocation = function normalizeToLocation(to, currentLocation) {\n return typeof to === \"string\" ? createLocation(to, null, null, currentLocation) : to;\n};\n\nvar forwardRefShim = function forwardRefShim(C) {\n return C;\n};\n\nvar forwardRef = React.forwardRef;\n\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nvar LinkAnchor = forwardRef(function (_ref, forwardedRef) {\n var innerRef = _ref.innerRef,\n navigate = _ref.navigate,\n _onClick = _ref.onClick,\n rest = _objectWithoutPropertiesLoose(_ref, [\"innerRef\", \"navigate\", \"onClick\"]);\n\n var target = rest.target;\n\n var props = _extends({}, rest, {\n onClick: function onClick(event) {\n try {\n if (_onClick) _onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (!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 }); // React 15 compat\n\n\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n\n\n return React.createElement(\"a\", props);\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n/**\n * The public API for rendering a history-aware .\n */\n\n\nvar Link = forwardRef(function (_ref2, forwardedRef) {\n var _ref2$component = _ref2.component,\n component = _ref2$component === void 0 ? LinkAnchor : _ref2$component,\n replace = _ref2.replace,\n to = _ref2.to,\n innerRef = _ref2.innerRef,\n rest = _objectWithoutPropertiesLoose(_ref2, [\"component\", \"replace\", \"to\", \"innerRef\"]);\n\n return React.createElement(__RouterContext.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var history = context.history;\n var location = normalizeToLocation(resolveToLocation(to, context.location), context.location);\n var href = location ? history.createHref(location) : \"\";\n\n var props = _extends({}, rest, {\n href: href,\n navigate: function navigate() {\n var location = resolveToLocation(to, context.location);\n var method = replace ? history.replace : history.push;\n method(location);\n }\n }); // React 15 compat\n\n\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});\n\nif (process.env.NODE_ENV !== \"production\") {\n var toType = PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.func]);\n var refType = PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.shape({\n current: PropTypes.any\n })]);\n Link.displayName = \"Link\";\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\nvar forwardRefShim$1 = function forwardRefShim(C) {\n return C;\n};\n\nvar forwardRef$1 = React.forwardRef;\n\nif (typeof forwardRef$1 === \"undefined\") {\n forwardRef$1 = forwardRefShim$1;\n}\n\nfunction joinClassnames() {\n for (var _len = arguments.length, classnames = new Array(_len), _key = 0; _key < _len; _key++) {\n classnames[_key] = arguments[_key];\n }\n\n return classnames.filter(function (i) {\n return i;\n }).join(\" \");\n}\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\n\n\nvar NavLink = forwardRef$1(function (_ref, forwardedRef) {\n var _ref$ariaCurrent = _ref[\"aria-current\"],\n ariaCurrent = _ref$ariaCurrent === void 0 ? \"page\" : _ref$ariaCurrent,\n _ref$activeClassName = _ref.activeClassName,\n activeClassName = _ref$activeClassName === void 0 ? \"active\" : _ref$activeClassName,\n activeStyle = _ref.activeStyle,\n classNameProp = _ref.className,\n exact = _ref.exact,\n isActiveProp = _ref.isActive,\n locationProp = _ref.location,\n sensitive = _ref.sensitive,\n strict = _ref.strict,\n styleProp = _ref.style,\n to = _ref.to,\n innerRef = _ref.innerRef,\n rest = _objectWithoutPropertiesLoose(_ref, [\"aria-current\", \"activeClassName\", \"activeStyle\", \"className\", \"exact\", \"isActive\", \"location\", \"sensitive\", \"strict\", \"style\", \"to\", \"innerRef\"]);\n\n return React.createElement(__RouterContext.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var currentLocation = locationProp || context.location;\n var toLocation = normalizeToLocation(resolveToLocation(to, currentLocation), currentLocation);\n var path = toLocation.pathname; // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n\n var escapedPath = path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n var match = escapedPath ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact: exact,\n sensitive: sensitive,\n strict: strict\n }) : null;\n var isActive = !!(isActiveProp ? isActiveProp(match, currentLocation) : match);\n var className = isActive ? joinClassnames(classNameProp, activeClassName) : classNameProp;\n var style = isActive ? _extends({}, styleProp, {}, activeStyle) : styleProp;\n\n var props = _extends({\n \"aria-current\": isActive && ariaCurrent || null,\n className: className,\n style: style,\n to: toLocation\n }, rest); // React 15 compat\n\n\n if (forwardRefShim$1 !== forwardRef$1) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(Link, props);\n });\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n NavLink.displayName = \"NavLink\";\n var ariaCurrentType = PropTypes.oneOf([\"page\", \"step\", \"location\", \"date\", \"time\", \"true\"]);\n NavLink.propTypes = _extends({}, Link.propTypes, {\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.string,\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.object\n });\n}\n\nexport { BrowserRouter, HashRouter, Link, NavLink };","/* global window */\nimport ponyfill from './ponyfill.js';\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {};\n\nfunction getUniqueId() {\n var key = '__global_unique_id__';\n return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n}\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + getUniqueId() + '__';\n\n var Provider =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer =\n /*#__PURE__*/\n function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\nexport default index;","var isarray = require('isarray');\n/**\n * Expose `pathToRegexp`.\n */\n\n\nmodule.exports = pathToRegexp;\nmodule.exports.parse = parse;\nmodule.exports.compile = compile;\nmodule.exports.tokensToFunction = tokensToFunction;\nmodule.exports.tokensToRegExp = tokensToRegExp;\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\n\nvar PATH_REGEXP = new RegExp([// Match escaped characters that would otherwise appear in future matches.\n// This allows the user to escape special characters that won't transform.\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+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'].join('|'), 'g');\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\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; // Ignore already escaped sequences.\n\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]; // Push the current path onto the tokens.\n\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 = res[2] || defaultDelimiter;\n var pattern = capture || group;\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 ? '.*' : '[^' + escapeString(delimiter) + ']+?'\n });\n } // Match any characters still remaining.\n\n\n if (index < str.length) {\n path += str.substr(index);\n } // If the path exists, push it onto the end.\n\n\n if (path) {\n tokens.push(path);\n }\n\n return tokens;\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 */\n\n\nfunction compile(str, options) {\n return tokensToFunction(parse(str, options), options);\n}\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\n\n\nfunction encodeURIComponentPretty(str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\n\n\nfunction encodeAsterisk(str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\n/**\n * Expose a method for transforming tokens into the path function.\n */\n\n\nfunction tokensToFunction(tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length); // Compile all the patterns before compilation.\n\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 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 * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\n\n\nfunction escapeString(str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1');\n}\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\n\n\nfunction escapeGroup(group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1');\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 */\n\n\nfunction attachKeys(re, keys) {\n re.keys = keys;\n return re;\n}\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\n\n\nfunction flags(options) {\n return options && options.sensitive ? '' : 'i';\n}\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\n\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 * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\n\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 return attachKeys(regexp, keys);\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 */\n\n\nfunction stringToRegexp(path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options);\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 */\n\n\nfunction tokensToRegExp(tokens, keys, options) {\n if (!isarray(keys)) {\n options =\n /** @type {!Object} */\n keys || options;\n keys = [];\n }\n\n options = options || {};\n var strict = options.strict;\n var end = options.end !== false;\n var route = ''; // Iterate over the tokens and create our regexp string.\n\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 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; // 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\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 * 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 */\n\n\nfunction pathToRegexp(path, keys, options) {\n if (!isarray(keys)) {\n options =\n /** @type {!Object} */\n keys || options;\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path,\n /** @type {!Array} */\n keys);\n }\n\n if (isarray(path)) {\n return arrayToRegexp(\n /** @type {!Array} */\n path,\n /** @type {!Array} */\n keys, options);\n }\n\n return stringToRegexp(\n /** @type {string} */\n path,\n /** @type {!Array} */\n keys, options);\n}","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\n\nvar TabStripNavigationItem =\n/** @class */\nfunction (_super) {\n __extends(TabStripNavigationItem, _super);\n\n function TabStripNavigationItem() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.onClick = function () {\n if (_this.props.onSelect) {\n _this.props.onSelect(_this.props.index);\n }\n };\n\n return _this;\n }\n /**\n * @hidden\n */\n\n\n TabStripNavigationItem.prototype.render = function () {\n var _a;\n\n var _b = this.props,\n active = _b.active,\n disabled = _b.disabled,\n _c = _b.title,\n title = _c === void 0 ? 'Untitled' : _c;\n var props = {\n 'aria-selected': active,\n 'role': 'tab',\n onClick: !disabled ? this.onClick : undefined\n };\n var itemClasses = classNames((_a = {}, _a['k-item'] = true, _a['k-state-default'] = !(disabled || active), _a['k-state-disabled'] = disabled, _a['k-state-active'] = active, _a['k-tab-on-top'] = active, _a));\n return React.createElement(\"li\", __assign({}, props, {\n className: itemClasses\n }), React.createElement(\"span\", {\n className: \"k-link\"\n }, title));\n };\n /**\n * @hidden\n */\n\n\n TabStripNavigationItem.propTypes = {\n active: PropTypes.bool,\n disabled: PropTypes.bool,\n index: PropTypes.number,\n onSelect: PropTypes.func,\n title: PropTypes.oneOfType([PropTypes.string, PropTypes.element])\n };\n return TabStripNavigationItem;\n}(React.Component);\n\nexport default TabStripNavigationItem;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport TabStripNavigationItem from './TabStripNavigationItem';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\n\nvar times = function times(count) {\n return Array.apply(null, Array(count));\n};\n\nvar TabStripNavigation =\n/** @class */\nfunction (_super) {\n __extends(TabStripNavigation, _super);\n\n function TabStripNavigation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n\n\n TabStripNavigation.prototype.render = function () {\n var _a = this.props,\n selected = _a.selected,\n children = _a.children,\n onSelect = _a.onSelect,\n onKeyDown = _a.onKeyDown;\n var tabsCount = React.Children.count(children);\n var childElements = React.Children.toArray(children);\n var tabs;\n\n if (children) {\n tabs = times(tabsCount).map(function (_, index, array) {\n return {\n first: index === 0,\n last: index === array.length - 1\n };\n }).map(function (_, index) {\n var tabProps = {\n active: selected === index,\n disabled: childElements[index].props.disabled,\n index: index,\n title: childElements[index].props.title,\n onSelect: onSelect\n };\n return React.createElement(TabStripNavigationItem, __assign({\n key: index\n }, tabProps));\n });\n }\n\n var navClasses = classNames('k-tabstrip-items', 'k-reset');\n return React.createElement(\"ul\", {\n className: navClasses,\n role: 'tablist',\n tabIndex: this.props.tabIndex,\n onKeyDown: onKeyDown\n }, tabs);\n };\n /**\n * @hidden\n */\n\n\n TabStripNavigation.propTypes = {\n children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]),\n onSelect: PropTypes.func,\n onKeyDown: PropTypes.func,\n selected: PropTypes.number,\n tabIndex: PropTypes.number\n };\n return TabStripNavigation;\n}(React.Component);\n\nexport default TabStripNavigation;","/**\n * @hidden\n */\nvar outerHeight = function outerHeight(element) {\n if (!element) {\n return 0;\n }\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 */\n\n\nvar outerWidth = function outerWidth(element) {\n if (!element) {\n return 0;\n }\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 */\n\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 */\n\nexport default {\n outerHeight: outerHeight,\n outerWidth: outerWidth,\n styles: styles\n};","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\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;\n\nvar AnimationChild =\n/** @class */\nfunction (_super) {\n __extends(AnimationChild, _super);\n\n function AnimationChild() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(AnimationChild.prototype, \"element\", {\n /**\n * The element that is being animated.\n */\n get: function get() {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n AnimationChild.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n children = _a.children,\n style = _a.style,\n appear = _a.appear,\n enter = _a.enter,\n exit = _a.exit,\n transitionName = _a.transitionName,\n transitionEnterDuration = _a.transitionEnterDuration,\n transitionExitDuration = _a.transitionExitDuration,\n className = _a.className,\n _onEnter = _a.onEnter,\n _onEntering = _a.onEntering,\n _onEntered = _a.onEntered,\n _onExit = _a.onExit,\n _onExiting = _a.onExiting,\n _onExited = _a.onExited,\n mountOnEnter = _a.mountOnEnter,\n unmountOnExit = _a.unmountOnExit,\n animationEnteringStyle = _a.animationEnteringStyle,\n animationEnteredStyle = _a.animationEnteredStyle,\n animationExitingStyle = _a.animationExitingStyle,\n animationExitedStyle = _a.animationExitedStyle,\n other = __rest(_a, [\"children\", \"style\", \"appear\", \"enter\", \"exit\", \"transitionName\", \"transitionEnterDuration\", \"transitionExitDuration\", \"className\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"mountOnEnter\", \"unmountOnExit\", \"animationEnteringStyle\", \"animationEnteredStyle\", \"animationExitingStyle\", \"animationExitedStyle\"]);\n\n var childAnimationContainerClassNames = classNames(className, styles['child-animation-container']);\n\n var defaultStyle = __assign({\n transitionDelay: '0ms'\n }, style);\n\n var animationStyle = {\n entering: __assign({\n transitionDuration: transitionEnterDuration + \"ms\"\n }, animationEnteringStyle),\n entered: __assign({}, animationEnteredStyle),\n exiting: __assign({\n transitionDuration: transitionExitDuration + \"ms\"\n }, 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 onEnter(e) {\n if (_onEnter) {\n _onEnter.call(undefined, {\n animatedElement: e,\n target: _this\n });\n }\n },\n onEntering: function onEntering(e) {\n if (_onEntering) {\n _onEntering.call(undefined, {\n animatedElement: e,\n target: _this\n });\n }\n },\n onEntered: function onEntered(e) {\n if (_onEntered) {\n _onEntered.call(undefined, {\n animatedElement: e,\n target: _this\n });\n }\n },\n onExit: function onExit(e) {\n if (_onExit) {\n _onExit.call(undefined, {\n animatedElement: e,\n target: _this\n });\n }\n },\n onExiting: function onExiting(e) {\n if (_onExiting) {\n _onExiting.call(undefined, {\n animatedElement: e,\n target: _this\n });\n }\n },\n onExited: function onExited(e) {\n if (_onExited) {\n _onExited.call(undefined, {\n animatedElement: e,\n target: _this\n });\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\", {\n style: __assign({}, defaultStyle, animationStyle[status]),\n className: childAnimationContainerClassNames,\n ref: function ref(div) {\n _this._element = div;\n }\n }, children);\n });\n };\n /**\n * @hidden\n */\n\n\n AnimationChild.propTypes = {\n in: PropTypes.bool,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\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\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 animationEnteringStyle: {},\n animationEnteredStyle: {},\n animationExitingStyle: {},\n animationExitedStyle: {}\n };\n return AnimationChild;\n}(React.Component);\n\nexport { AnimationChild };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\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 util from './util';\nvar styles = util.styles; // tslint:enable:max-line-length\n\nvar Animation =\n/** @class */\nfunction (_super) {\n __extends(Animation, _super);\n\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n\n\n Animation.prototype.render = function () {\n var _a = this.props,\n id = _a.id,\n style = _a.style,\n children = _a.children,\n component = _a.component,\n className = _a.className,\n childFactory = _a.childFactory,\n stackChildren = _a.stackChildren,\n componentChildStyle = _a.componentChildStyle,\n componentChildClassName = _a.componentChildClassName,\n other = __rest(_a, [\"id\", \"style\", \"children\", \"component\", \"className\", \"childFactory\", \"stackChildren\", \"componentChildStyle\", \"componentChildClassName\"]);\n\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) {\n return React.createElement(AnimationChild, __assign({}, other, {\n style: componentChildStyle,\n className: componentChildClassName\n }), child);\n });\n return React.createElement(TransitionGroup, __assign({}, transitionProps), content);\n };\n /**\n * @hidden\n */\n\n\n Animation.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\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\n Animation.defaultProps = {\n component: 'div'\n };\n return Animation;\n}(React.Component);\n\nexport { Animation };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation'; // tslint:enable:max-line-length\n\nvar Fade =\n/** @class */\nfunction (_super) {\n __extends(Fade, _super);\n\n function Fade() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n\n\n Fade.prototype.render = function () {\n var _a = this.props,\n children = _a.children,\n other = __rest(_a, [\"children\"]);\n\n var animationProps = {\n transitionName: \"fade\"\n };\n return React.createElement(Animation, __assign({}, animationProps, other), children);\n };\n /**\n * @hidden\n */\n\n\n Fade.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n childFactory: PropTypes.any,\n className: PropTypes.string,\n component: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.any\n };\n /**\n * @hidden\n */\n\n Fade.defaultProps = {\n appear: false,\n enter: true,\n exit: false,\n transitionEnterDuration: 500,\n transitionExitDuration: 500\n };\n return Fade;\n}(React.Component);\n\nexport { Fade };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation'; // tslint:enable:max-line-length\n\nvar Expand =\n/** @class */\nfunction (_super) {\n __extends(Expand, _super);\n\n function Expand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n\n\n Expand.prototype.render = function () {\n var _a = this.props,\n direction = _a.direction,\n children = _a.children,\n other = __rest(_a, [\"direction\", \"children\"]);\n\n var animationProps = {\n transitionName: \"expand-\" + direction\n };\n return React.createElement(Animation, __assign({}, animationProps, other), children);\n };\n /**\n * @hidden\n */\n\n\n Expand.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n childFactory: PropTypes.any,\n className: PropTypes.string,\n direction: PropTypes.oneOf(['horizontal', 'vertical']),\n component: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.any\n };\n /**\n * @hidden\n */\n\n Expand.defaultProps = {\n appear: false,\n enter: true,\n exit: true,\n transitionEnterDuration: 300,\n transitionExitDuration: 300,\n direction: 'vertical'\n };\n return Expand;\n}(React.Component);\n\nexport { Expand };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation';\nvar EXITING_ANIMATION_STYLE = {\n position: 'absolute',\n top: '0',\n left: '0'\n}; // tslint:enable:max-line-length\n\nvar Push =\n/** @class */\nfunction (_super) {\n __extends(Push, _super);\n\n function Push() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n\n\n Push.prototype.render = function () {\n var _a = this.props,\n children = _a.children,\n direction = _a.direction,\n other = __rest(_a, [\"children\", \"direction\"]);\n\n return React.createElement(Animation, __assign({}, other, {\n transitionName: \"push-\" + direction,\n animationExitingStyle: this.props.stackChildren ? EXITING_ANIMATION_STYLE : undefined\n }), children);\n };\n /**\n * @hidden\n */\n\n\n Push.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n childFactory: PropTypes.any,\n className: PropTypes.string,\n direction: PropTypes.oneOf(['up', 'down', 'left', 'right']),\n component: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.any,\n stackChildren: PropTypes.bool\n };\n /**\n * @hidden\n */\n\n Push.defaultProps = {\n appear: false,\n enter: true,\n exit: true,\n transitionEnterDuration: 300,\n transitionExitDuration: 300,\n direction: 'right',\n stackChildren: false\n };\n return Push;\n}(React.Component);\n\nexport { Push };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation'; // tslint:enable:max-line-length\n\nvar Slide =\n/** @class */\nfunction (_super) {\n __extends(Slide, _super);\n\n function Slide() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n\n\n Slide.prototype.render = function () {\n var _a = this.props,\n direction = _a.direction,\n children = _a.children,\n other = __rest(_a, [\"direction\", \"children\"]);\n\n var animationProps = {\n transitionName: \"slide-\" + direction\n };\n return React.createElement(Animation, __assign({}, animationProps, other), children);\n };\n /**\n * @hidden\n */\n\n\n Slide.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n childFactory: PropTypes.any,\n className: PropTypes.string,\n direction: PropTypes.oneOf(['up', 'down', 'left', 'right']),\n component: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.any\n };\n /**\n * @hidden\n */\n\n Slide.defaultProps = {\n appear: false,\n enter: true,\n exit: true,\n transitionEnterDuration: 300,\n transitionExitDuration: 300,\n direction: 'down'\n };\n return Slide;\n}(React.Component);\n\nexport { Slide };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation';\nvar EXITING_ANIMATION_STYLE = {\n position: 'absolute',\n top: '0',\n left: '0'\n}; // tslint:enable:max-line-length\n\nvar Zoom =\n/** @class */\nfunction (_super) {\n __extends(Zoom, _super);\n\n function Zoom() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n\n\n Zoom.prototype.render = function () {\n var _a = this.props,\n children = _a.children,\n direction = _a.direction,\n other = __rest(_a, [\"children\", \"direction\"]);\n\n return React.createElement(Animation, __assign({}, other, {\n transitionName: \"zoom-\" + direction,\n animationExitingStyle: this.props.stackChildren ? EXITING_ANIMATION_STYLE : undefined\n }), children);\n };\n /**\n * @hidden\n */\n\n\n Zoom.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n childFactory: PropTypes.any,\n className: PropTypes.string,\n direction: PropTypes.oneOf(['in', 'out']),\n component: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.any,\n stackChildren: PropTypes.bool\n };\n /**\n * @hidden\n */\n\n Zoom.defaultProps = {\n appear: false,\n enter: true,\n exit: true,\n transitionEnterDuration: 300,\n transitionExitDuration: 300,\n direction: 'out',\n stackChildren: false\n };\n return Zoom;\n}(React.Component);\n\nexport { Zoom };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\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';\n\nvar Reveal =\n/** @class */\nfunction (_super) {\n __extends(Reveal, _super);\n\n function Reveal() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n\n\n _this.state = {\n maxHeight: undefined,\n maxWidth: undefined\n };\n\n _this.componentWillEnter = function (event) {\n var onEnter = _this.props.onEnter;\n\n _this.updateContainerDimensions(event.animatedElement, function () {\n if (onEnter) {\n onEnter.call(undefined, event);\n }\n });\n };\n\n _this.componentIsEntering = function (event) {\n var onEntering = _this.props.onEntering;\n\n _this.updateContainerDimensions(event.animatedElement, function () {\n if (onEntering) {\n onEntering.call(undefined, event);\n }\n });\n };\n\n _this.componentWillExit = function (event) {\n var onExit = _this.props.onExit;\n\n _this.updateContainerDimensions(event.animatedElement, function () {\n if (onExit) {\n onExit.call(undefined, event);\n }\n });\n };\n\n _this.updateContainerDimensions = function (node, done) {\n if (done === void 0) {\n done = noop;\n }\n\n var content = node.firstChild;\n\n if (content) {\n var newHeight = util.outerHeight(content);\n var newWidth = util.outerWidth(content);\n\n _this.setState({\n maxHeight: newHeight,\n maxWidth: newWidth\n }, done);\n }\n };\n\n return _this;\n }\n /**\n * @hidden\n */\n\n\n Reveal.prototype.render = function () {\n var _a = this.props,\n direction = _a.direction,\n children = _a.children,\n childFactory = _a.childFactory,\n other = __rest(_a, [\"direction\", \"children\", \"childFactory\"]);\n\n var _b = this.state,\n maxHeight = _b.maxHeight,\n maxWidth = _b.maxWidth;\n var maxOffset;\n\n if (direction === 'vertical') {\n maxOffset = {\n maxHeight: maxHeight ? maxHeight + \"px\" : null\n };\n } else {\n maxOffset = {\n maxWidth: maxWidth ? maxWidth + \"px\" : null\n };\n }\n\n var animationEnteringStyle = {\n maxHeight: maxOffset.maxHeight,\n maxWidth: maxOffset.maxWidth\n };\n\n var factory = function factory(child) {\n if (!child.props.in) {\n return React.cloneElement(child, __assign({}, child.props, {\n style: __assign({}, child.props.style, {\n maxHeight: maxOffset.maxHeight,\n maxWidth: maxOffset.maxWidth\n })\n }));\n }\n\n return child;\n };\n\n return React.createElement(Animation, __assign({}, other, {\n childFactory: childFactory ? childFactory : factory,\n onEnter: this.componentWillEnter,\n onEntering: this.componentIsEntering,\n onExit: this.componentWillExit,\n animationEnteringStyle: animationEnteringStyle,\n transitionName: \"reveal-\" + direction\n }), children);\n };\n /**\n * @hidden\n */\n\n\n Reveal.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n childFactory: PropTypes.any,\n className: PropTypes.string,\n direction: PropTypes.oneOf(['horizontal', 'vertical']),\n component: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.any\n };\n /**\n * @hidden\n */\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);\n\nexport { Reveal };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Fade } from '@progress/kendo-react-animation';\nimport { classNames, guid } from '@progress/kendo-react-common';\n\nvar TabStripContent =\n/** @class */\nfunction (_super) {\n __extends(TabStripContent, _super);\n\n function TabStripContent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.contentId = guid();\n\n _this.childFactory = function (child) {\n return React.cloneElement(child, __assign({}, child.props, {\n in: child.props.children.props.id === String(_this.contentId + _this.props.selected)\n }));\n };\n\n return _this;\n }\n /**\n * @hidden\n */\n\n\n TabStripContent.prototype.render = function () {\n var _a = this.props,\n children = _a.children,\n selected = _a.selected;\n var selectedTab = children && typeof selected === 'number' && React.Children.toArray(children)[selected];\n var contentClasses = classNames('k-content', 'k-state-active', selectedTab && selectedTab.props.contentClassName);\n return React.createElement(\"div\", {\n className: contentClasses,\n style: this.props.style\n }, this.renderContent(children));\n };\n\n TabStripContent.prototype.renderContent = function (children) {\n var _this = this;\n\n return !this.props.keepTabsMounted ? this.renderChild(React.Children.toArray(children)[this.props.selected], this.props.selected) : React.Children.map(this.props.children, function (tab, idx) {\n return _this.renderChild(tab, idx);\n });\n };\n\n TabStripContent.prototype.renderChild = function (tab, idx) {\n var visible = idx === this.props.selected;\n var contentProps = {\n 'role': 'tabpanel',\n 'aria-expanded': true,\n 'style': {\n 'display': visible ? undefined : 'none'\n }\n };\n var animationStyle = {\n position: 'initial',\n display: visible ? undefined : 'none'\n };\n\n if (tab.props.disabled) {\n return null;\n }\n\n return this.props.animation ? React.createElement(Fade, {\n appear: true,\n exit: this.props.keepTabsMounted,\n style: animationStyle,\n childFactory: this.props.keepTabsMounted ? this.childFactory : undefined\n }, React.createElement(\"div\", __assign({}, contentProps, {\n id: String(this.contentId + idx),\n key: idx\n }), tab.props.children)) : React.createElement(\"div\", __assign({}, contentProps, {\n key: idx\n }), tab.props.children);\n };\n /**\n * @hidden\n */\n\n\n TabStripContent.propTypes = {\n animation: PropTypes.bool,\n children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]),\n selected: PropTypes.number,\n style: PropTypes.object\n };\n return TabStripContent;\n}(React.Component);\n\nexport default TabStripContent;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport TabStripNavigation from './TabStripNavigation';\nimport TabStripContent from './TabStripContent';\nimport { Keys, classNames } from '@progress/kendo-react-common'; // tslint:enable:max-line-length\n\nvar TabStrip =\n/** @class */\nfunction (_super) {\n __extends(TabStrip, _super);\n\n function TabStrip() {\n var _a;\n\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this._element = null;\n _this.keyBinding = (_a = {}, _a[Keys.left] = function () {\n return _this.prevNavigatableTab();\n }, _a[Keys.right] = function () {\n return _this.nextNavigatableTab();\n }, _a[Keys.down] = function () {\n return _this.nextNavigatableTab();\n }, _a[Keys.up] = function () {\n return _this.prevNavigatableTab();\n }, _a[Keys.home] = function () {\n return 0;\n }, _a[Keys.end] = function () {\n return React.Children.count(_this.props.children) - 1;\n }, _a);\n /**\n * @hidden\n */\n\n _this.onSelect = function (index) {\n if (_this.props.selected !== index) {\n if (_this.props.onSelect) {\n _this.props.onSelect({\n selected: index\n });\n }\n }\n };\n /**\n * @hidden\n */\n\n\n _this.onKeyDown = function (event) {\n var handler;\n\n switch (event.keyCode) {\n case Keys.left:\n handler = _this.keyBinding[_this.invertKeys(Keys.left, Keys.right)];\n break;\n\n case Keys.right:\n handler = _this.keyBinding[_this.invertKeys(Keys.right, Keys.left)];\n break;\n\n case Keys.up:\n handler = _this.keyBinding[Keys.up];\n break;\n\n case Keys.down:\n handler = _this.keyBinding[Keys.down];\n break;\n\n default:\n break;\n }\n\n if (handler) {\n event.preventDefault();\n\n _this.onSelect(handler());\n }\n };\n\n _this.renderContent = function (tabProps) {\n var selected = tabProps.selected,\n children = tabProps.children,\n tabContentStyle = tabProps.tabContentStyle;\n var childrenCount = React.Children.count(children);\n\n if (selected < childrenCount && selected > -1) {\n return React.createElement(TabStripContent, __assign({\n index: selected\n }, tabProps, {\n style: tabContentStyle\n }));\n }\n\n return null;\n };\n\n _this.firstNavigatableTab = function () {\n var children = _this.children();\n\n var length = React.Children.count(children);\n\n if (children) {\n for (var i = 0; i < length; i++) {\n if (!children[i].props.disabled) {\n return i;\n }\n }\n }\n };\n\n _this.lastNavigatableTab = function () {\n var children = _this.children();\n\n var length = React.Children.count(children);\n\n if (children) {\n for (var i = length - 1; i > 0; i--) {\n if (!children[i].props.disabled) {\n return i;\n }\n }\n }\n };\n\n _this.prevNavigatableTab = function () {\n var children = _this.children();\n\n var selected = _this.props.selected;\n var index = selected ? selected - 1 : -1;\n\n if (index < 0) {\n return _this.lastNavigatableTab();\n }\n\n if (children) {\n for (var i = index; i > -1; i--) {\n if (!children[i].props.disabled) {\n return i;\n }\n\n if (i === 0) {\n return _this.lastNavigatableTab();\n }\n }\n }\n };\n\n _this.nextNavigatableTab = function () {\n var children = _this.children();\n\n var selected = _this.props.selected;\n var index = selected ? selected + 1 : 1;\n var childrenCount = React.Children.count(children);\n\n if (index >= childrenCount) {\n return _this.firstNavigatableTab();\n }\n\n if (children) {\n for (var i = index; i < childrenCount; i++) {\n if (!children[i].props.disabled) {\n return i;\n }\n\n if (i + 1 === childrenCount) {\n return _this.firstNavigatableTab();\n }\n }\n }\n };\n\n return _this;\n }\n /**\n * @hidden\n */\n\n\n TabStrip.prototype.render = function () {\n var _this = this;\n\n var _a;\n\n var tabProps = __assign({}, this.props, {\n children: this.children(),\n onKeyDown: this.onKeyDown,\n onSelect: this.onSelect\n });\n\n var tabPosition = tabProps.tabPosition,\n _b = tabProps.tabIndex,\n tabIndex = _b === void 0 ? 0 : _b;\n var bottom = tabPosition === 'bottom';\n var componentClasses = classNames('k-widget', 'k-header', 'k-floatwrap', 'k-tabstrip', (_a = {}, _a['k-tabstrip-left'] = tabPosition === 'left', _a['k-tabstrip-right'] = tabPosition === 'right', _a['k-tabstrip-bottom'] = tabPosition === 'bottom', _a['k-tabstrip-top'] = tabPosition === 'top', _a), this.props.className);\n return React.createElement(\"div\", {\n ref: function ref(div) {\n return _this._element = div;\n },\n dir: this.props.dir,\n className: componentClasses,\n style: this.props.style\n }, !bottom && React.createElement(TabStripNavigation, __assign({}, tabProps, {\n tabIndex: tabIndex\n })), this.renderContent(tabProps), bottom && React.createElement(TabStripNavigation, __assign({}, tabProps, {\n tabIndex: tabIndex\n })));\n };\n\n TabStrip.prototype.invertKeys = function (original, inverted) {\n var rtl = this._element && getComputedStyle(this._element).direction === 'rtl' || false;\n return rtl ? inverted : original;\n };\n\n TabStrip.prototype.children = function () {\n return React.Children.toArray(this.props.children).filter(function (c) {\n return c;\n });\n };\n /**\n * @hidden\n */\n\n\n TabStrip.propTypes = {\n animation: PropTypes.bool,\n children: PropTypes.node,\n onSelect: PropTypes.func,\n selected: PropTypes.number,\n style: PropTypes.object,\n tabContentStyle: PropTypes.object,\n tabPosition: PropTypes.string,\n tabIndex: PropTypes.number,\n className: PropTypes.string,\n dir: PropTypes.string\n };\n /**\n * @hidden\n */\n\n TabStrip.defaultProps = {\n animation: true,\n tabPosition: 'top',\n keepTabsMounted: false\n };\n return TabStrip;\n}(React.Component);\n\nexport default TabStrip;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\n\nvar TabStripTab =\n/** @class */\nfunction (_super) {\n __extends(TabStripTab, _super);\n\n function TabStripTab() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n\n\n TabStripTab.propTypes = {\n disabled: PropTypes.bool,\n contentClassName: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.element, PropTypes.node]),\n title: PropTypes.oneOfType([PropTypes.string, PropTypes.element, PropTypes.node])\n };\n return TabStripTab;\n}(React.Component);\n\nexport default TabStripTab;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { Reveal } from '@progress/kendo-react-animation';\n/**\n * @hidden\n */\n\nfunction iconElement(_a) {\n var imageUrl = _a.imageUrl,\n icon = _a.icon,\n iconClass = _a.iconClass;\n\n if (imageUrl) {\n return React.createElement(\"img\", {\n role: \"presentation\",\n className: 'k-image',\n src: imageUrl\n });\n } else if (icon) {\n var iconClasses = classNames('k-icon', 'k-i-' + icon);\n return React.createElement(\"span\", {\n role: \"presentation\",\n className: iconClasses\n });\n } else if (iconClass) {\n return React.createElement(\"span\", {\n role: \"presentation\",\n className: iconClass\n });\n }\n\n return null;\n} // tslint:enable:max-line-length\n\n\nvar PanelBarItem =\n/** @class */\nfunction (_super) {\n __extends(PanelBarItem, _super);\n\n function PanelBarItem() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.handleItemClick = function () {\n var _a = _this.props,\n onSelect = _a.onSelect,\n disabled = _a.disabled,\n id = _a.id;\n\n if (onSelect && !disabled) {\n onSelect.call(undefined, {\n uniquePrivateKey: _this.props.uniquePrivateKey,\n id: id,\n target: _this\n });\n }\n };\n\n return _this;\n }\n /**\n * @hidden\n */\n\n\n PanelBarItem.prototype.render = function () {\n var _a;\n\n var _b = this.props,\n id = _b.id,\n children = _b.children,\n title = _b.title,\n uniquePrivateKey = _b.uniquePrivateKey,\n disabled = _b.disabled,\n selected = _b.selected,\n focused = _b.focused,\n expanded = _b.expanded,\n className = _b.className,\n root = _b.root,\n headerClassName = _b.headerClassName,\n animation = _b.animation;\n var panelBarItemAriaAttributes = {\n 'role': 'treeitem',\n 'aria-disabled': disabled,\n 'aria-hidden': !disabled && !expanded,\n 'aria-selected': !disabled && selected,\n 'aria-expanded': !disabled && expanded && !!children\n };\n var panelBarItemClassName = classNames({\n 'k-item': true,\n 'k-state-default': !disabled,\n 'k-state-expanded': expanded && !!children,\n 'k-state-disabled': disabled\n }, className);\n var panelBarHeaderClassName = classNames({\n 'k-link': true,\n 'k-header': root,\n 'k-state-selected': !disabled && selected,\n 'k-state-focused': !disabled && focused\n }, headerClassName);\n var panelBarItemArrowClassName = classNames((_a = {}, _a['k-icon'] = true, _a['k-i-arrow-n'] = expanded && !!children, _a['k-panelbar-collapse'] = expanded && !!children, _a['k-i-arrow-s'] = !expanded && !!children, _a['k-panelbar-expand'] = !expanded && !!children, _a));\n var animationStyle = {\n display: 'block'\n };\n var icon = iconElement(this.props);\n var arrow = !disabled && children ? React.createElement(\"span\", {\n className: panelBarItemArrowClassName\n }) : null;\n var content = !disabled && expanded ? React.createElement(\"div\", {\n role: \"group\",\n className: \"k-panel k-group\"\n }, children) : null;\n var child = (animation !== undefined ? animation : true) && !disabled && children ? React.createElement(Reveal, {\n transitionEnterDuration: 200,\n transitionExitDuration: 200,\n key: uniquePrivateKey + '_animation',\n style: animationStyle,\n children: content\n }) : content;\n return React.createElement(\"div\", __assign({\n id: id,\n className: panelBarItemClassName\n }, panelBarItemAriaAttributes), React.createElement(\"span\", {\n className: panelBarHeaderClassName,\n onClick: this.handleItemClick\n }, icon, title, arrow), child);\n };\n /**\n * @hidden\n */\n\n\n PanelBarItem.propTypes = {\n animation: PropTypes.bool,\n children: PropTypes.any,\n className: PropTypes.string,\n expanded: PropTypes.bool,\n disabled: PropTypes.bool,\n onSelect: PropTypes.func,\n selected: PropTypes.bool,\n root: PropTypes.bool,\n title: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n focused: PropTypes.bool\n };\n /**\n * @hidden\n */\n\n PanelBarItem.defaultProps = {\n title: 'Untitled'\n };\n return PanelBarItem;\n}(React.PureComponent);\n\nexport default PanelBarItem;","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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport PanelBarItem from './PanelBarItem';\n/**\n * @hidden\n */\n\nexport var renderChildren = function renderChildren(animation, state, handleSelect, children, parentExpanded, root, parentPrivateKey) {\n if (animation === void 0) {\n animation = true;\n }\n\n if (parentExpanded === void 0) {\n parentExpanded = true;\n }\n\n if (root === void 0) {\n root = true;\n }\n\n if (parentPrivateKey === void 0) {\n parentPrivateKey = [];\n }\n\n return React.Children.map(children, function (child, idx) {\n if (child && child.type === PanelBarItem) {\n var nestedChildren = void 0;\n var privateKey = parentPrivateKey.length ? parentPrivateKey[parentPrivateKey.length - 1] + (\".\" + idx) : \".\" + idx;\n\n if (child.props.children) {\n nestedChildren = renderChildren(animation, state, handleSelect, child.props.children, (state.expanded || []).indexOf(privateKey) > -1 && parentExpanded, false, parentPrivateKey.concat([privateKey]));\n }\n\n return React.cloneElement(child, __assign({}, child.props, {\n animation: child.props.animation !== undefined ? child.props.animation : animation,\n id: child.props.id || \"k-panelbar-item-default-\" + privateKey,\n uniquePrivateKey: privateKey,\n parentUniquePrivateKey: parentPrivateKey,\n parentExpanded: parentExpanded,\n root: root,\n expanded: (state.expanded || []).indexOf(privateKey) > -1 && parentExpanded,\n focused: state.focused === privateKey && state.wrapperFocused,\n selected: state.selected === privateKey,\n children: nestedChildren,\n onSelect: handleSelect\n }));\n } else {\n return React.createElement(\"div\", {\n className: \"k-content\"\n }, child);\n }\n });\n};\n/**\n * @hidden\n */\n\nexport var getInitialState = function getInitialState(props, expandMode, result, _, parentExpanded, parentPrivateKey) {\n if (result === void 0) {\n result = {\n expanded: props.expanded || [],\n selected: props.selected || '',\n focused: props.focused || '.0',\n wrapperFocused: false\n };\n }\n\n if (_ === void 0) {\n _ = true;\n }\n\n if (parentExpanded === void 0) {\n parentExpanded = true;\n }\n\n if (parentPrivateKey === void 0) {\n parentPrivateKey = [];\n }\n\n React.Children.map(props.children, function (child, idx) {\n if (child && child.type === PanelBarItem) {\n var privateKey = parentPrivateKey.length ? parentPrivateKey[parentPrivateKey.length - 1] + (\".\" + idx) : \".\" + idx;\n\n if (!child.props.disabled && parentExpanded) {\n if (child.props.selected) {\n result.selected = privateKey;\n }\n\n if (child.props.focused) {\n result.focused = privateKey;\n }\n\n if (child.props.expanded) {\n if (expandMode === 'multiple') {\n result.expanded.push(privateKey);\n } else if (expandMode === 'single') {\n result.expanded = [privateKey];\n }\n }\n\n if (child.props.children) {\n result = getInitialState(child.props, expandMode, result, false, !!child.props.expanded, parentPrivateKey.concat([privateKey]));\n }\n }\n }\n });\n return result;\n};\n/**\n * @hidden\n */\n\nexport function flatVisibleItems(data, flattedItems, _) {\n if (flattedItems === void 0) {\n flattedItems = [];\n }\n\n if (_ === void 0) {\n _ = null;\n }\n\n (data || []).forEach(function (item) {\n if (!item.disabled) {\n flattedItems.push(item);\n\n if (item.expanded && item.children) {\n flatVisibleItems(item.children, flattedItems);\n }\n }\n });\n return flattedItems;\n}\n/**\n * @hidden\n */\n\nexport var isPresent = function isPresent(value) {\n return value !== null && value !== undefined;\n};\n/**\n * Represents the PanelBarUtils functions.\n */\n\nexport var PanelBarUtils;\n\n(function (PanelBarUtils) {\n /**\n * Maps a collection of PanelBarItemProps to PanelBarItem components\n * ([see example]({% slug customization_panelbar %})).\n * Contained in the `PanelBarUtils` object.\n *\n * @param items - A collection of PanelBarItemProps.\n * @return {PanelBarItem[]} Returns an array of PanelBarItem components.\n */\n function mapItemsToComponents(items) {\n return items.map(function (item, idx) {\n var children;\n\n if (item.content) {\n children = item.content;\n }\n\n if (item.children) {\n children = mapItemsToComponents(item.children);\n }\n\n return React.createElement(PanelBarItem, __assign({}, item, {\n children: children,\n key: item.id || idx\n }));\n });\n }\n\n PanelBarUtils.mapItemsToComponents = mapItemsToComponents;\n})(PanelBarUtils || (PanelBarUtils = {}));\n/**\n * @hidden\n */\n\n\nexport var isArrayEqual = function isArrayEqual(firstArray, secondArray) {\n if (firstArray.length !== secondArray.length) {\n return false;\n }\n\n return firstArray.every(function (ex, i) {\n return ex === secondArray[i];\n });\n};","import { Keys } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\n\nexport var NavigationAction;\n\n(function (NavigationAction) {\n NavigationAction[NavigationAction[\"Toggle\"] = 0] = \"Toggle\";\n NavigationAction[NavigationAction[\"Next\"] = 1] = \"Next\";\n NavigationAction[NavigationAction[\"Previous\"] = 2] = \"Previous\";\n})(NavigationAction || (NavigationAction = {}));\n/**\n * @hidden\n */\n\n\nvar NavigationService =\n/** @class */\nfunction () {\n function NavigationService(onNavigate) {\n this.onNavigate = onNavigate;\n }\n\n NavigationService.prototype.navigate = function (event, rtl) {\n var keyCode = event.keyCode;\n var action;\n\n switch (keyCode) {\n case Keys.left:\n action = !rtl ? NavigationAction.Previous : NavigationAction.Next;\n break;\n\n case Keys.up:\n action = NavigationAction.Previous;\n break;\n\n case Keys.right:\n action = !rtl ? NavigationAction.Next : NavigationAction.Previous;\n break;\n\n case Keys.down:\n action = NavigationAction.Next;\n break;\n\n case Keys.space:\n action = NavigationAction.Toggle;\n break;\n\n case Keys.enter:\n action = NavigationAction.Toggle;\n break;\n\n default:\n action = null;\n break;\n }\n\n if (action !== null) {\n event.preventDefault();\n this.onNavigate(action);\n }\n };\n\n return NavigationService;\n}();\n\nexport default NavigationService;","import * as React from 'react';\nimport { isArrayEqual } from '../util';\n/**\n * @hidden\n */\n\nvar SelectionService =\n/** @class */\nfunction () {\n function SelectionService(onSelectCallback, onFocusCallback, expandMode) {\n var _this = this;\n\n this.flatChildren = function (children, flattenChildren) {\n if (flattenChildren === void 0) {\n flattenChildren = [];\n }\n\n React.Children.forEach(children, function (child) {\n if (child && child.props && !child.props.disabled) {\n flattenChildren.push(child);\n\n if (child.props.children) {\n _this.flatChildren(child.props.children, flattenChildren);\n }\n }\n });\n return flattenChildren;\n };\n\n this.flatVisibleChildren = function (children, flattenVisibleChildren) {\n if (flattenVisibleChildren === void 0) {\n flattenVisibleChildren = [];\n }\n\n React.Children.forEach(children, function (child) {\n if (child && child.props && !child.props.disabled && (child.props.expanded || child.props.parentExpanded)) {\n flattenVisibleChildren.push(child);\n\n if (child.props.children) {\n _this.flatVisibleChildren(child.props.children, flattenVisibleChildren);\n }\n }\n });\n return flattenVisibleChildren;\n };\n\n this.onSelect = onSelectCallback;\n this.onFocus = onFocusCallback;\n this.expandMode = expandMode;\n }\n\n SelectionService.prototype.select = function (uniquePrivateKey, children, expanded) {\n var flattenChildren = this.flatChildren(React.Children.toArray(children));\n var selectedChild;\n var newExpanded;\n flattenChildren.forEach(function (child) {\n if (child.props.uniquePrivateKey === uniquePrivateKey) {\n selectedChild = child;\n }\n });\n\n switch (this.expandMode) {\n case 'single':\n newExpanded = selectedChild.props.parentUniquePrivateKey.concat([selectedChild.props.uniquePrivateKey]);\n\n if (isArrayEqual(expanded, newExpanded)) {\n if (selectedChild.props.parentUniquePrivateKey) {\n newExpanded = selectedChild.props.parentUniquePrivateKey.slice();\n } else {\n newExpanded = [];\n }\n }\n\n break;\n\n case 'multiple':\n newExpanded = expanded.slice();\n var index = newExpanded.indexOf(selectedChild.props.uniquePrivateKey);\n index === -1 ? newExpanded.push(selectedChild.props.uniquePrivateKey) : newExpanded.splice(index, 1);\n break;\n\n default:\n newExpanded = expanded.slice();\n break;\n }\n\n this.onSelect(selectedChild, newExpanded);\n };\n\n SelectionService.prototype.focus = function (currentFocus, step, children) {\n var flattenChildren = this.flatVisibleChildren(React.Children.toArray(children));\n var focusedChild;\n flattenChildren.forEach(function (child, ixd) {\n if (child.props.uniquePrivateKey === currentFocus) {\n var index = ixd + step < 0 ? 0 : ixd + step >= flattenChildren.length ? flattenChildren.length - 1 : ixd + step;\n focusedChild = flattenChildren[index];\n }\n });\n this.onFocus(focusedChild);\n };\n\n SelectionService.prototype.setExpandMode = function (expandMode) {\n this.expandMode = expandMode;\n };\n\n return SelectionService;\n}();\n\nexport default SelectionService;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport PanelBarItem from './PanelBarItem';\nimport { renderChildren, getInitialState } from './util';\nimport SelectionService from './services/selectionService';\nimport NavigationService, { NavigationAction } from './services/navigationService';\nimport { classNames } from '@progress/kendo-react-common';\n\nvar PanelBar =\n/** @class */\nfunction (_super) {\n __extends(PanelBar, _super);\n\n function PanelBar(props) {\n var _this = _super.call(this, props) || this;\n\n _this._element = null;\n /**\n * @hidden\n */\n\n _this.handleSelect = function (event) {\n var state = __assign({}, _this.state, {\n selected: _this.selected\n });\n\n _this._selectionService.select(event.uniquePrivateKey, renderChildren(_this.props.animation, state, _this.handleSelect, _this.props.children), state.expanded);\n\n _this._selectionService.focus(event.uniquePrivateKey, 0, renderChildren(_this.props.animation, state, _this.handleSelect, _this.props.children));\n };\n /**\n * @hidden\n */\n\n\n _this.onSelect = function (child, expanded) {\n _this.setState({\n selected: child.props.uniquePrivateKey,\n expanded: expanded\n }, function () {\n if (_this.props.onSelect) {\n _this.props.onSelect.call(undefined, {\n target: child,\n action: 'select'\n });\n }\n });\n };\n /**\n * @hidden\n */\n\n\n _this.onFocus = function (child) {\n _this.activeDescendant = child.props.id;\n\n _this.setState({\n focused: child.props.uniquePrivateKey\n });\n };\n /**\n * @hidden\n */\n\n\n _this.onNavigate = function (action) {\n var state = __assign({}, _this.state, {\n selected: _this.selected\n });\n\n switch (action) {\n case NavigationAction.Previous:\n _this._selectionService.focus(state.focused, -1, renderChildren(_this.props.animation, state, _this.handleSelect, _this.props.children));\n\n break;\n\n case NavigationAction.Next:\n _this._selectionService.focus(state.focused, 1, renderChildren(_this.props.animation, state, _this.handleSelect, _this.props.children));\n\n break;\n\n case NavigationAction.Toggle:\n _this._selectionService.select(state.focused, renderChildren(_this.props.animation, state, _this.handleSelect, _this.props.children), state.expanded);\n\n break;\n\n default:\n }\n };\n\n _this.handleWrapperFocus = function () {\n clearTimeout(_this.nextTickId);\n\n if (!_this.state.wrapperFocused) {\n _this.setState({\n wrapperFocused: true\n });\n }\n };\n\n _this.handleWrapperBlur = function () {\n _this.nextTick(function () {\n _this.setState({\n wrapperFocused: false\n });\n });\n };\n\n _this.handleKeyDown = function (event) {\n var rtl = _this._element && getComputedStyle(_this._element).direction === 'rtl' || false;\n var target = event.target,\n currentTarget = event.currentTarget;\n\n if (target === currentTarget) {\n _this._navigationService.navigate(event, rtl);\n }\n };\n\n _this.state = getInitialState(props, props.expandMode || 'multiple');\n _this._selectionService = new SelectionService(_this.onSelect, _this.onFocus, _this.props.expandMode || 'multiple');\n _this._navigationService = new NavigationService(_this.onNavigate);\n return _this;\n }\n\n Object.defineProperty(PanelBar.prototype, \"selected\", {\n get: function get() {\n var _a = this.props.selected,\n selected = _a === void 0 ? this.state.selected : _a;\n return selected;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n PanelBar.prototype.componentDidUpdate = function (prevProps) {\n var newProps = this.props;\n\n if (newProps.expandMode !== prevProps.expandMode) {\n this._selectionService.setExpandMode(newProps.expandMode);\n }\n };\n /**\n * @hidden\n */\n\n\n PanelBar.prototype.render = function () {\n var _this = this;\n\n var ariaProps = {\n 'aria-activedescendant': this.activeDescendant\n };\n\n var state = __assign({}, this.state, {\n selected: this.selected\n });\n\n var children = renderChildren(this.props.animation, state, this.handleSelect, this.props.children);\n var className = classNames('k-widget', 'k-panelbar', this.props.className);\n return React.createElement(\"div\", __assign({\n ref: function ref(div) {\n _this._element = div;\n },\n dir: this.props.dir,\n role: 'tree',\n tabIndex: 0,\n onKeyDown: this.handleKeyDown,\n onFocus: this.handleWrapperFocus,\n onBlur: this.handleWrapperBlur,\n className: className\n }, ariaProps), children);\n };\n\n PanelBar.prototype.nextTick = function (f) {\n // XXX: use 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 = setTimeout(function () {\n return f();\n });\n };\n /**\n * @hidden\n */\n\n\n PanelBar.propTypes = {\n animation: PropTypes.bool,\n children: function children(props, propName) {\n var prop = props[propName];\n\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\n if (!value.type || value.type !== PanelBarItem) {\n return new Error('PanelBar children should be either PanelBarItem or Array of PanelBarItem.');\n }\n }\n } else {\n if (prop.type !== PanelBarItem) {\n return new Error('PanelBar child should be either PanelBarItem or Array of PanelBarItem.');\n }\n }\n }\n },\n dir: PropTypes.string,\n selected: PropTypes.string,\n expanded: PropTypes.arrayOf(PropTypes.string),\n focused: PropTypes.string,\n expandMode: PropTypes.oneOf(['single', 'multiple']),\n className: PropTypes.string,\n onSelect: PropTypes.func\n };\n /**\n * @hidden\n */\n\n PanelBar.defaultProps = {\n expandMode: 'multiple',\n animation: true\n };\n return PanelBar;\n}(React.Component);\n\nexport default PanelBar;","/**\n * @hidden\n */\nexport var EMPTY_ID = '';\n/**\n * @hidden\n */\n\nexport var ZERO_LEVEL_ZERO_ITEM_ID = '0';\n/**\n * @hidden\n */\n\nexport var SEPARATOR = '_';\n/**\n * @hidden\n */\n\nexport function getItemById(itemId, items) {\n if (isIdZeroLevel(itemId)) {\n return items[Number(itemId)];\n } else {\n var rootParentItem = items[Number(getRootParentId(itemId))];\n return rootParentItem.items ? getItemById(getIdWithoutRootParentId(itemId), rootParentItem.items) : undefined;\n }\n}\n/**\n * @hidden\n */\n\nexport function getRootParentId(itemId) {\n return isIdEmptyOrZeroLevel(itemId) ? itemId : itemId.split(SEPARATOR)[0];\n}\n/**\n * @hidden\n */\n\nexport function getIdWithoutRootParentId(itemId) {\n if (isIdEmptyOrZeroLevel(itemId)) {\n return itemId;\n } else {\n var firstSeparatorIndex = itemId.indexOf(SEPARATOR);\n return itemId.substring(firstSeparatorIndex + 1);\n }\n}\n/**\n * @hidden\n */\n\nexport function getFirstChildId(itemId) {\n return createId('0', itemId);\n}\n/**\n * @hidden\n */\n\nexport function shouldOpenItem(itemId, lastItemIdToBeOpened) {\n if (lastItemIdToBeOpened.indexOf(itemId) === 0) {\n return lastItemIdToBeOpened.length === itemId.length || lastItemIdToBeOpened.charAt(itemId.length) === SEPARATOR;\n } else {\n return false;\n }\n}\n/**\n * @hidden\n */\n\nexport function createId(childId, parentId) {\n return parentId ? parentId + SEPARATOR + childId : childId;\n}\n/**\n * @hidden\n */\n\nexport function getDirectParentId(itemId) {\n var lastSeparatorIndex = itemId.lastIndexOf(SEPARATOR);\n return lastSeparatorIndex < 0 ? EMPTY_ID : itemId.substring(0, lastSeparatorIndex);\n}\n/**\n * @hidden\n */\n\nexport function isIdEmptyOrZeroLevel(itemId) {\n return itemId === EMPTY_ID || itemId.indexOf(SEPARATOR) < 0;\n}\n/**\n * @hidden\n */\n\nexport function isIdZeroLevel(itemId) {\n return itemId !== EMPTY_ID && itemId.indexOf(SEPARATOR) < 0;\n}\n/**\n * @hidden\n */\n\nexport function isIdFirstLevel(itemId) {\n return getSeparatorOccurances(itemId) === 1;\n}\n/**\n * @hidden\n */\n\nexport function isFirstItemFromSiblings(itemId) {\n return getShortId(itemId) === ZERO_LEVEL_ZERO_ITEM_ID;\n}\n/**\n * @hidden\n */\n\nexport function getShortId(itemId) {\n var lastSeparatorIndex = itemId.lastIndexOf(SEPARATOR);\n return lastSeparatorIndex < 0 ? itemId : itemId.substring(lastSeparatorIndex + 1);\n}\n/**\n * @hidden\n */\n\nexport function getDirectSiblingIdForLevelZero(next, shortItemId, siblingsCount) {\n if (!isIdZeroLevel(shortItemId)) {\n return shortItemId;\n }\n\n return next ? Number(shortItemId) < siblingsCount - 1 ? (Number(shortItemId) + 1).toString() : '0' : Number(shortItemId) > 0 ? (Number(shortItemId) - 1).toString() : (siblingsCount - 1).toString();\n}\n\nfunction getSeparatorOccurances(itemId) {\n return itemId.split(SEPARATOR).length - 1;\n}","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\n\nvar MenuItem =\n/** @class */\nfunction (_super) {\n __extends(MenuItem, _super);\n\n function MenuItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n\n\n MenuItem.prototype.render = function () {\n return null;\n };\n /**\n * @hidden\n */\n\n\n MenuItem.propTypes = {\n text: PropTypes.string,\n url: PropTypes.string,\n icon: PropTypes.string,\n disabled: PropTypes.bool,\n cssClass: PropTypes.string,\n cssStyle: PropTypes.object,\n render: PropTypes.any,\n linkRender: PropTypes.any,\n contentRender: PropTypes.any,\n data: PropTypes.any\n };\n return MenuItem;\n}(React.Component);\n\nexport default MenuItem;","import * as React from 'react';\nimport { createId, ZERO_LEVEL_ZERO_ITEM_ID } from './itemsIdsUtils';\nimport MenuItem from '../components/MenuItem';\n/**\n * @hidden\n */\n\nexport default function prepareInputItemsForInternalWork(models, menuChildren) {\n if (models && models.length > 0) {\n return {\n items: convertInputModelsToInternalOnesHelper(models),\n inputItems: models\n };\n } else if (getMenuItemChildComponents(menuChildren).length > 0) {\n var inputModels = convertInputComponentsToInputModelsHelper(getMenuItemChildComponents(menuChildren));\n return {\n items: convertInputModelsToInternalOnesHelper(inputModels),\n inputItems: inputModels\n };\n } else {\n return {\n items: [],\n inputItems: []\n };\n }\n}\n\nfunction copyInputItemWithoutChildren(inputModel, inputComponent) {\n var result = {};\n\n var _a = inputModel ? inputModel : inputComponent.props,\n text = _a.text,\n url = _a.url,\n icon = _a.icon,\n disabled = _a.disabled,\n cssClass = _a.cssClass,\n cssStyle = _a.cssStyle,\n render = _a.render,\n linkRender = _a.linkRender,\n contentRender = _a.contentRender,\n data = _a.data;\n\n if (text !== undefined) {\n result.text = text;\n }\n\n if (url !== undefined) {\n result.url = url;\n }\n\n if (icon !== undefined) {\n result.icon = icon;\n }\n\n if (disabled !== undefined) {\n result.disabled = disabled;\n }\n\n if (cssClass !== undefined) {\n result.cssClass = cssClass;\n }\n\n if (cssStyle !== undefined) {\n result.cssStyle = cssStyle;\n }\n\n if (render !== undefined) {\n result.render = render;\n }\n\n if (linkRender !== undefined) {\n result.linkRender = linkRender;\n }\n\n if (contentRender !== undefined) {\n result.contentRender = contentRender;\n }\n\n if (data !== undefined) {\n result.data = data;\n }\n\n return result;\n}\n\nfunction getMenuItemChildComponents(menuChildren) {\n return React.Children.toArray(menuChildren).filter(function (child) {\n return child && child.type === MenuItem;\n });\n}\n\nfunction convertInputComponentsToInputModelsHelper(components) {\n var result = [];\n\n for (var index = 0; index < components.length; index++) {\n var comp = components[index];\n var model = copyInputItemWithoutChildren(undefined, comp);\n var items = convertInputComponentsToInputModelsHelper(getMenuItemChildComponents(comp.props.children));\n\n if (items.length > 0) {\n model.items = items;\n }\n\n result.push(model);\n }\n\n return result;\n}\n\nfunction convertInputModelsToInternalOnesHelper(inputModels, parentId) {\n var result = [];\n\n for (var index = 0; index < inputModels.length; index++) {\n var inputModel = inputModels[index];\n var internalModel = copyInputItemWithoutChildren(inputModel);\n internalModel.id = createId(index.toString(), parentId);\n internalModel.isLastFromSiblings = index === inputModels.length - 1;\n internalModel.items = copyOrCreateModelChildren(inputModel, internalModel);\n result.push(internalModel);\n }\n\n return result;\n}\n\nfunction copyOrCreateModelChildren(inputModel, internalModel) {\n if (inputModel.contentRender) {\n return [{\n contentParentItemId: internalModel.id,\n id: createId(ZERO_LEVEL_ZERO_ITEM_ID, internalModel.id),\n isLastFromSiblings: true,\n contentRender: inputModel.contentRender,\n items: []\n }];\n } else if (inputModel.items) {\n return convertInputModelsToInternalOnesHelper(inputModel.items, internalModel.id);\n } else {\n return [];\n }\n}","import { Keys } from '@progress/kendo-react-common';\nimport { getFirstChildId, isIdZeroLevel, getRootParentId, isIdFirstLevel, getDirectParentId, getShortId, createId, getDirectSiblingIdForLevelZero, getItemById as getItemByIdUtil } from './itemsIdsUtils';\nvar NO_WHITESPACE_REGEX = /\\S/;\n/**\n * @hidden\n * Returns the `itemId` (string) for applicable key codes even when the id has not changed.\n * For key codes that are not applicable, returns `undefined`.\n */\n\nexport default function getNewItemIdUponKeyboardNavigation(sourceItems, sourceItemId, keyCode, key, isMenuVertical, isDirectionRightToLeft) {\n var sourceItem = getItemById();\n\n switch (keyCode) {\n case Keys.left:\n return getIdUponLeftKey();\n\n case Keys.right:\n return getIdUponRightKey();\n\n case Keys.up:\n return getIdUponUpKey();\n\n case Keys.down:\n return getIdUponDownKey();\n\n case Keys.enter:\n case Keys.space:\n return getIdUponEnterAndSpaceKeys();\n\n case Keys.home:\n return getIdUponHomeKey();\n\n case Keys.end:\n return getIdUponEndKey();\n\n case Keys.esc:\n return getIdUponEscKey();\n\n default:\n return isSearchableKey() ? getIdUponSearchByChar() : sourceItemId;\n }\n\n function getIdUponLeftKey() {\n if (isMenuVertical) {\n return isDirectionRightToLeft ? getIdUponRightKeyForVerticalMenu() : getIdUponLeftKeyForVerticalMenu();\n } else {\n return isDirectionRightToLeft ? getIdUponRightKeyForHorizontalMenu() : getIdUponLeftKeyForHorizontalMenu();\n }\n }\n\n function getIdUponRightKey() {\n if (isMenuVertical) {\n return isDirectionRightToLeft ? getIdUponLeftKeyForVerticalMenu() : getIdUponRightKeyForVerticalMenu();\n } else {\n return isDirectionRightToLeft ? getIdUponLeftKeyForHorizontalMenu() : getIdUponRightKeyForHorizontalMenu();\n }\n }\n\n function getIdUponDownKey() {\n if (isMenuVertical) {\n return getNextSiblingId();\n } else {\n if (isIdZeroLevel(sourceItemId)) {\n return getFirstChildIdForEnabledItemOrGetSameId();\n } else {\n return getNextSiblingId();\n }\n }\n }\n\n function getIdUponUpKey() {\n if (isMenuVertical) {\n return getPrevSiblingId();\n } else {\n if (isIdZeroLevel(sourceItemId)) {\n return getLastChildIdForEnabledItemOrGetSameId();\n } else {\n return getPrevSiblingId();\n }\n }\n }\n\n function getIdUponEnterAndSpaceKeys() {\n if (sourceItem.disabled) {\n return sourceItemId;\n } else {\n return hasChildren() ? getFirstChildId(sourceItemId) : getRootParentId(sourceItemId);\n }\n }\n\n function getIdUponHomeKey() {\n return getSiblings()[0].id;\n }\n\n function getIdUponEndKey() {\n var siblings = getSiblings();\n return siblings[siblings.length - 1].id;\n }\n\n function getIdUponEscKey() {\n return isIdZeroLevel(sourceItemId) ? sourceItemId : getDirectParentId(sourceItemId);\n }\n\n function getIdUponSearchByChar() {\n var searchChar = key.toLowerCase();\n var siblings = getSiblings();\n var currentItemIndex = Number(getShortId(sourceItemId));\n var itemsToSearch = siblings.slice(currentItemIndex + 1).concat(siblings.slice(0, currentItemIndex + 1));\n var matchedSibling = itemsToSearch.find(function (item) {\n return (item.text || '').toLowerCase().startsWith(searchChar);\n });\n return matchedSibling ? matchedSibling.id : sourceItemId;\n } //#region Left Key Internals\n\n\n function getIdUponLeftKeyForHorizontalMenu() {\n if (isIdZeroLevel(sourceItemId)) {\n return getPrevSiblingId();\n } else if (isIdFirstLevel(sourceItemId)) {\n return getFirstChildIdForEnabledItemOrGetSameId(getPrevSiblingId(getRootParentId(sourceItemId)));\n } else {\n return getDirectParentId(sourceItemId);\n }\n }\n\n function getIdUponLeftKeyForVerticalMenu() {\n if (isIdZeroLevel(sourceItemId)) {\n return getLastChildIdForEnabledItemOrGetSameId();\n } else {\n return getDirectParentId(sourceItemId);\n }\n } //#endregion\n //#region Right Key Internals\n\n\n function getIdUponRightKeyForHorizontalMenu() {\n if (isIdZeroLevel(sourceItemId)) {\n return getNextSiblingId();\n } else {\n return getFirstChildIdForEnabledItemOrGetSameId(hasChildren() ? sourceItemId : getNextSiblingId(getRootParentId(sourceItemId)));\n }\n }\n\n function getIdUponRightKeyForVerticalMenu() {\n return getFirstChildIdForEnabledItemOrGetSameId(isIdZeroLevel(sourceItemId) || hasChildren() ? sourceItemId : getNextSiblingId(getRootParentId(sourceItemId)));\n } //#endregion\n //#region Utils\n\n\n function getFirstChildIdForEnabledItemOrGetSameId(itemId) {\n return getFirstOrLastChildIdForEnabledItemOrGetSameId(true, itemId);\n }\n\n function getLastChildIdForEnabledItemOrGetSameId(itemId) {\n return getFirstOrLastChildIdForEnabledItemOrGetSameId(false, itemId);\n }\n\n function isSearchableKey() {\n return key.length === 1 && NO_WHITESPACE_REGEX.test(key);\n }\n\n function getItemById(itemId, items) {\n if (itemId === undefined) {\n itemId = sourceItemId;\n }\n\n if (items === undefined) {\n items = sourceItems;\n }\n\n return getItemByIdUtil(itemId, items);\n }\n\n function hasChildren(itemId) {\n return getItemById(itemId).items.length > 0;\n }\n\n function getPrevSiblingId(itemId) {\n return getSiblingId(false, itemId);\n }\n\n function getNextSiblingId(itemId) {\n return getSiblingId(true, itemId);\n }\n\n function getLastChildId(itemId) {\n var itemChildren = getItemById(itemId).items;\n return itemChildren[itemChildren.length - 1].id;\n }\n\n function getSiblings() {\n return isIdZeroLevel(sourceItemId) ? sourceItems : getItemById(getDirectParentId(sourceItemId), sourceItems).items;\n }\n\n function getFirstOrLastChildIdForEnabledItemOrGetSameId(getFirstChild, itemId) {\n if (itemId === undefined) {\n itemId = sourceItemId;\n }\n\n var item = getItemById(itemId);\n\n if (hasChildren(itemId) && !item.disabled) {\n return getFirstChild ? getFirstChildId(itemId) : getLastChildId(itemId);\n } else {\n return itemId;\n }\n }\n\n function getSiblingId(next, itemId) {\n if (itemId === undefined) {\n itemId = sourceItemId;\n }\n\n if (isIdZeroLevel(itemId)) {\n return getDirectSiblingIdForLevelZero(next, itemId, sourceItems.length);\n } else {\n var directParentId = getDirectParentId(itemId);\n var shortId = getShortId(itemId);\n var siblingsCount = getItemById(directParentId).items.length;\n return createId(getDirectSiblingIdForLevelZero(next, shortId, siblingsCount), directParentId);\n }\n } //#endregion\n\n}","import { parents, siblingContainer } from '@progress/kendo-popup-common';\nimport { canUseDOM } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\n\nexport var eitherRect = function eitherRect(rect, offset) {\n if (!rect) {\n return {\n height: 0,\n left: offset.left,\n top: offset.top,\n width: 0\n };\n }\n\n return rect;\n};\n/**\n * @hidden\n */\n\nexport var replaceOffset = function replaceOffset(rect, offset) {\n if (!offset) {\n return rect;\n }\n\n var result = {\n height: rect.height,\n left: offset.left,\n top: offset.top,\n width: rect.width\n };\n return result;\n};\n/**\n * @hidden\n */\n\nexport var removeStackingOffset = function removeStackingOffset(rect, stackingOffset) {\n if (!stackingOffset) {\n return rect;\n }\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 return result;\n};\n/**\n * @hidden\n */\n\nexport var isDifferentOffset = function isDifferentOffset(oldOffset, newOffset) {\n var oldLeft = oldOffset.left,\n oldTop = oldOffset.top;\n var newLeft = newOffset.left,\n newTop = newOffset.top;\n return Math.abs(oldLeft - newLeft) >= 1 || Math.abs(oldTop - newTop) >= 1;\n};\n/**\n * @hidden\n */\n\nexport var hasBoundingRect = function hasBoundingRect(elem) {\n return !!elem.getBoundingClientRect;\n};\n/**\n * @hidden\n */\n\nexport var OVERFLOW_REGEXP = /auto|scroll/;\n/**\n * @hidden\n */\n\nvar overflowStyle = function overflowStyle(element) {\n var styles = window.getComputedStyle(element);\n return \"\" + styles.overflow + styles.overflowX + styles.overflowY;\n};\n/**\n * @hidden\n */\n\n\nexport var scrollableParents = function scrollableParents(element) {\n var parentElements = [];\n\n if (!canUseDOM) {\n return parentElements;\n }\n\n var parent = element.parentElement;\n\n while (parent) {\n if (OVERFLOW_REGEXP.test(overflowStyle(parent))) {\n parentElements.push(parent);\n }\n\n parent = parent.parentElement;\n }\n\n parentElements.push(window);\n return parentElements;\n};\n/**\n * @hidden\n */\n\nexport var FRAME_DURATION = 1000 / 60; // 1000ms divided by 60fps\n\n/**\n * @hidden\n */\n\nexport var hasRelativeStackingContext = function hasRelativeStackingContext() {\n if (!canUseDOM) {\n return false;\n }\n\n var top = 10;\n var parent = document.createElement('div');\n parent.style.transform = 'matrix(10, 0, 0, 10, 0, 0)';\n parent.innerHTML = \"
    child
    \";\n document.body.appendChild(parent);\n var isDifferent = parent.children[0].getBoundingClientRect().top !== top;\n document.body.removeChild(parent);\n return isDifferent;\n};\n/**\n * @hidden\n */\n\nexport var HAS_RELATIVE_STACKING_CONTEXT = hasRelativeStackingContext();\n/**\n * @hidden\n */\n\nexport var zIndex = function zIndex(anchor, container) {\n if (!anchor || !canUseDOM) {\n return null;\n }\n\n var sibling = siblingContainer(anchor, container);\n\n if (!sibling) {\n return null;\n }\n\n var result = [anchor].concat(parents(anchor, sibling)).reduce(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 }, 0);\n return result ? result + 1 : null;\n};\n/**\n * @hidden\n */\n\nexport var CollisionType = {\n fit: 'fit',\n flip: 'flip'\n};\n/**\n * @hidden\n */\n\nexport var AlignPoint = {\n left: 'left',\n center: 'center',\n right: 'right',\n bottom: 'bottom',\n top: 'top'\n};\n/**\n * @hidden\n */\n\nexport var throttle = function throttle(func, wait, options) {\n if (options === void 0) {\n options = {};\n }\n\n var timeout, context, args, result;\n var previous = 0;\n options = options || {};\n\n var later = function later() {\n previous = options.leading === false ? 0 : new Date().getTime();\n timeout = null;\n result = func.apply(context, args);\n\n if (!timeout) {\n context = args = null;\n }\n };\n\n var throttled = function throttled() {\n var now = new Date().getTime();\n\n if (!previous && options.leading === false) {\n previous = now;\n }\n\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n\n previous = now;\n result = func.apply(context, args);\n\n if (!timeout) {\n context = args = null;\n }\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n\n return result;\n };\n\n return throttled;\n};","import { eitherRect, removeStackingOffset } from '../util';\n/**\n * @hidden\n */\n\nvar AlignService =\n/** @class */\nfunction () {\n function AlignService(_dom) {\n this._dom = _dom;\n }\n\n AlignService.prototype.alignElement = function (settings) {\n var anchor = settings.anchor,\n element = settings.element,\n anchorAlign = settings.anchorAlign,\n elementAlign = settings.elementAlign,\n offset = settings.offset;\n var fixedMode = !this._dom.hasOffsetParent(element);\n var anchorRect = fixedMode ? this.absoluteRect(anchor, element, offset) : this.relativeRect(anchor, element, offset);\n return this._dom.align({\n anchorAlign: anchorAlign,\n anchorRect: anchorRect,\n elementAlign: elementAlign,\n elementRect: this._dom.offset(element)\n });\n };\n\n AlignService.prototype.absoluteRect = function (anchor, element, offset) {\n var dom = this._dom;\n var rect = eitherRect(dom.offset(anchor), offset);\n var stackingOffset = dom.stackingElementOffset(element);\n var removedOffset = removeStackingOffset(rect, stackingOffset);\n var stackingScroll = dom.stackingElementScroll(element);\n var withScroll = dom.addScroll(removedOffset, stackingScroll);\n var scrollPosition = this.elementScrollPosition(anchor, element);\n var result = dom.removeScroll(withScroll, scrollPosition);\n result.left += window.scrollX || window.pageXOffset;\n result.top += window.scrollY || window.pageYOffset;\n return result;\n };\n\n AlignService.prototype.elementScrollPosition = function (anchor, element) {\n return anchor ? {\n x: 0,\n y: 0\n } : this._dom.scrollPosition(element);\n };\n\n AlignService.prototype.relativeRect = function (anchor, element, offset) {\n return eitherRect(this._dom.position(anchor, element), offset);\n };\n\n return AlignService;\n}();\n\nexport { AlignService };","import { align, applyLocationOffset, boundingOffset, getWindowViewPort, isBodyOffset, offset, positionWithScroll, restrictToView, addScroll, removeScroll, scrollPosition, siblingContainer } from '@progress/kendo-popup-common';\nimport { HAS_RELATIVE_STACKING_CONTEXT, scrollableParents, zIndex } from '../util';\nimport { canUseDOM } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\n\nvar DOMService =\n/** @class */\nfunction () {\n function DOMService() {}\n\n DOMService.prototype.addOffset = function (current, addition) {\n return {\n left: current.left + addition.left,\n top: current.top + addition.top\n };\n };\n\n DOMService.prototype.align = function (settings) {\n return align(settings);\n };\n\n DOMService.prototype.boundingOffset = function (el) {\n return boundingOffset(el);\n };\n\n DOMService.prototype.getWindow = function () {\n return canUseDOM ? window : null;\n };\n\n DOMService.prototype.isBodyOffset = function (el) {\n return isBodyOffset(el);\n };\n\n DOMService.prototype.hasOffsetParent = function (el) {\n if (!el) {\n return false;\n }\n\n var offsetParentEl = el.offsetParent;\n return offsetParentEl && !(offsetParentEl.nodeName === 'BODY' && window.getComputedStyle(offsetParentEl).position === 'static');\n };\n\n DOMService.prototype.offset = function (el) {\n if (!el) {\n return null;\n }\n\n return offset(el);\n };\n\n DOMService.prototype.staticOffset = function (element) {\n if (!element) {\n return null;\n }\n\n var _a = element.style,\n left = _a.left,\n top = _a.top;\n element.style.left = '0px';\n element.style.top = '0px';\n var currentOffset = offset(element);\n element.style.left = left;\n element.style.top = top;\n return currentOffset;\n };\n\n DOMService.prototype.position = function (element, popup) {\n if (!element || !popup) {\n return null;\n }\n\n var parentSibling = siblingContainer(element, popup);\n return positionWithScroll(element, parentSibling);\n };\n\n DOMService.prototype.relativeOffset = function (el, currentLocation) {\n return applyLocationOffset(this.offset(el), currentLocation, this.isBodyOffset(el));\n };\n\n DOMService.prototype.addScroll = function (rect, scroll) {\n return addScroll(rect, scroll);\n };\n\n DOMService.prototype.removeScroll = function (rect, scroll) {\n return removeScroll(rect, scroll);\n };\n\n DOMService.prototype.restrictToView = function (settings) {\n return restrictToView(settings);\n };\n\n DOMService.prototype.scrollPosition = function (el) {\n return scrollPosition(el);\n };\n\n DOMService.prototype.scrollableParents = function (el) {\n return scrollableParents(el);\n };\n\n DOMService.prototype.stackingElementOffset = function (el) {\n var relativeContextElement = this.getRelativeContextElement(el);\n\n if (!relativeContextElement) {\n return null;\n }\n\n return offset(relativeContextElement);\n };\n\n DOMService.prototype.stackingElementScroll = function (el) {\n var relativeContextElement = this.getRelativeContextElement(el);\n\n if (!relativeContextElement) {\n return {\n x: 0,\n y: 0\n };\n }\n\n return {\n x: relativeContextElement.scrollLeft,\n y: relativeContextElement.scrollTop\n };\n };\n\n DOMService.prototype.stackingElementViewPort = function (el) {\n var relativeContextElement = this.getRelativeContextElement(el);\n\n if (!relativeContextElement) {\n return null;\n }\n\n return {\n height: relativeContextElement.scrollHeight,\n width: relativeContextElement.scrollWidth\n };\n };\n\n DOMService.prototype.getRelativeContextElement = function (el) {\n if (!el || !HAS_RELATIVE_STACKING_CONTEXT) {\n return null;\n }\n\n var parent = el.parentElement;\n\n while (parent) {\n if (window.getComputedStyle(parent).transform !== 'none') {\n return parent;\n }\n\n parent = parent.parentElement;\n }\n\n return null;\n };\n\n DOMService.prototype.useRelativePosition = function (el) {\n return !!this.getRelativeContextElement(el);\n };\n\n DOMService.prototype.windowViewPort = function (el) {\n return getWindowViewPort(el);\n };\n\n DOMService.prototype.zIndex = function (anchor, container) {\n return zIndex(anchor, container);\n };\n\n DOMService.prototype.zoomLevel = function () {\n if (!canUseDOM) {\n return 1;\n }\n\n return parseFloat((document.documentElement.clientWidth / window.innerWidth).toFixed(2));\n };\n\n DOMService.prototype.isZoomed = function () {\n return this.zoomLevel() > 1;\n };\n\n return DOMService;\n}();\n\nexport { DOMService };","import { eitherRect, replaceOffset } from '../util';\n/**\n * @hidden\n */\n\nvar PositionService =\n/** @class */\nfunction () {\n function PositionService(_dom) {\n this._dom = _dom;\n }\n\n PositionService.prototype.positionElement = function (settings) {\n var anchor = settings.anchor,\n currentLocation = settings.currentLocation,\n element = settings.element,\n anchorAlign = settings.anchorAlign,\n elementAlign = settings.elementAlign,\n collisions = settings.collisions;\n var dom = this._dom;\n var viewPort = settings.viewPort || dom.stackingElementViewPort(element) || dom.windowViewPort(element);\n var anchorRect = eitherRect(dom.offset(anchor), currentLocation);\n var initialElementRect = replaceOffset(dom.staticOffset(element), currentLocation);\n var elementRect = this.elementRect(element, initialElementRect);\n var result = dom.restrictToView({\n anchorAlign: anchorAlign,\n anchorRect: anchorRect,\n collisions: collisions,\n elementAlign: elementAlign,\n elementRect: elementRect,\n viewPort: viewPort\n });\n return {\n flipped: result.flipped,\n offset: dom.addOffset(initialElementRect, result.offset)\n };\n };\n\n PositionService.prototype.elementRect = function (element, rect) {\n return this._dom.removeScroll(rect, this._dom.scrollPosition(element));\n };\n\n return PositionService;\n}();\n\nexport { PositionService };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as PropTypes from 'prop-types';\nimport * as ReactDOMServer from 'react-dom/server';\nimport { Slide } from '@progress/kendo-react-animation';\nimport { classNames, canUseDOM } from '@progress/kendo-react-common';\nimport { CollisionType, AlignPoint, throttle, FRAME_DURATION } from './util';\nimport { AlignService } from './services/alignService';\nimport { DOMService } from './services/domService';\nimport { PositionService } from './services/positionService';\nvar DEFAULT_OFFSET = {\n left: -1000,\n top: 0\n};\nvar ANIMATION_CONTAINER = 'k-animation-container';\nvar ANIMATION_CONTAINER_SHOWN = 'k-animation-container-shown';\nvar K_POPUP = 'k-popup';\n\nvar getHtmlElement = function getHtmlElement(source) {\n return ReactDOM.findDOMNode(source);\n};\n\nvar Popup =\n/** @class */\nfunction (_super) {\n __extends(Popup, _super);\n\n function Popup(props) {\n var _this = _super.call(this, props) || this;\n\n _this._exitingAnimation = false;\n _this._prevShow = false;\n\n _this.onOpened = function () {\n var element = getHtmlElement(_this);\n\n if (_this.props.show) {\n element.classList.add(ANIMATION_CONTAINER_SHOWN);\n }\n\n _this.attachRepositionHandlers(element);\n\n if (_this.props.open) {\n _this.props.open.call(undefined, {\n target: _this\n });\n }\n\n if (_this.props.onOpen) {\n _this.props.onOpen.call(undefined, {\n target: _this\n });\n }\n };\n\n _this.onClosing = function () {\n if (!_this.props.show) {\n var element = getHtmlElement(_this);\n element.classList.remove(ANIMATION_CONTAINER_SHOWN);\n }\n\n _this.detachRepositionHandlers();\n };\n\n _this.onClosed = function () {\n if (_this._exitingAnimation) {\n _this._exitingAnimation = false;\n\n _this.forceUpdate();\n }\n\n if (_this.props.close) {\n _this.props.close.call(undefined, {\n target: _this\n });\n }\n\n if (_this.props.onClose) {\n _this.props.onClose.call(undefined, {\n target: _this\n });\n }\n };\n\n _this.position = function (settings, element, anchorElement) {\n var anchorAlign = settings.anchorAlign,\n popupAlign = settings.popupAlign,\n collision = settings.collision,\n offset = settings.offset;\n\n var alignedOffset = _this._alignService.alignElement({\n anchor: anchorElement,\n element: element,\n elementAlign: popupAlign,\n anchorAlign: anchorAlign,\n offset: offset\n });\n\n var result = _this._positionService.positionElement({\n anchor: anchorElement,\n anchorAlign: anchorAlign,\n collisions: collision,\n element: element,\n currentLocation: alignedOffset,\n elementAlign: popupAlign\n });\n\n return result;\n };\n\n _this._flipped = false;\n _this._offset = _this.props.offset;\n _this._prevShow = props.show;\n _this._domService = new DOMService();\n _this._alignService = new AlignService(_this._domService);\n _this._positionService = new PositionService(_this._domService);\n _this.onOpened = _this.onOpened.bind(_this);\n _this.onClosing = _this.onClosing.bind(_this);\n _this.reposition = throttle(_this.reposition.bind(_this), FRAME_DURATION);\n return _this;\n }\n /**\n * @hidden\n */\n\n\n Popup.prototype.componentDidUpdate = function () {\n this._prevShow = this.props.show;\n };\n /**\n * @hidden\n */\n\n\n Popup.prototype.componentWillUnmount = function () {\n this.detachRepositionHandlers();\n };\n /**\n * @hidden\n */\n\n\n Popup.prototype.render = function () {\n var _a = this.props,\n children = _a.children,\n className = _a.className,\n popupClass = _a.popupClass,\n show = _a.show,\n id = _a.id,\n _b = _a.appendTo,\n appendTo = _b === void 0 ? canUseDOM ? document.body : undefined : _b;\n\n if (show) {\n var newPosition = this.calculatePosition(this.props, appendTo);\n this._offset = newPosition.offset;\n this._flipped = !!newPosition.flipped;\n }\n\n var direction = this._flipped && show ? 'up' : 'down';\n var _c = this.transitionDuration,\n transitionEnterDuration = _c.transitionEnterDuration,\n transitionExitDuration = _c.transitionExitDuration;\n var style = Object.assign({}, {\n position: 'absolute'\n }, this.props.style || {}, __assign({}, this._offset));\n this._exitingAnimation = this._exitingAnimation || this._prevShow && !show;\n\n if ((show || this._exitingAnimation) && appendTo) {\n var popup = React.createElement(Slide, {\n componentChildClassName: classNames(popupClass, K_POPUP),\n className: classNames(className),\n id: id,\n onEntered: this.onOpened,\n onExiting: this.onClosing,\n onExited: this.onClosed,\n direction: direction,\n style: style,\n transitionEnterDuration: transitionEnterDuration,\n transitionExitDuration: transitionExitDuration,\n appear: true\n }, show ? children : null);\n return ReactDOM.createPortal(popup, appendTo);\n }\n\n return null;\n };\n\n Object.defineProperty(Popup.prototype, \"transitionDuration\", {\n get: function get() {\n var animate = this.props.animate;\n var transitionEnterDuration = 0;\n var transitionExitDuration = 0;\n\n if (animate) {\n if (animate === true) {\n // Inherit the default duration of the Animation component.\n transitionEnterDuration = transitionExitDuration = undefined;\n } else {\n transitionEnterDuration = animate.openDuration;\n transitionExitDuration = animate.closeDuration;\n }\n }\n\n return {\n transitionEnterDuration: transitionEnterDuration,\n transitionExitDuration: transitionExitDuration\n };\n },\n enumerable: true,\n configurable: true\n });\n\n Popup.prototype.calculatePosition = function (props, appendTo) {\n if (!appendTo || !canUseDOM) {\n return {\n flipped: false,\n offset: props.offset\n };\n }\n\n var root = document.createElement('div');\n appendTo.appendChild(root);\n var style = Object.assign({}, props.style || {}, __assign({\n visibility: 'hidden'\n }, DEFAULT_OFFSET));\n var innerClasses = {\n className: classNames(props.popupClass, K_POPUP, 'k-child-animation-container')\n };\n var popup = React.createElement(\"div\", {\n className: classNames(ANIMATION_CONTAINER, ANIMATION_CONTAINER_SHOWN, props.className),\n style: style\n }, React.Children.map(props.children, function (child, index) {\n return React.createElement(\"div\", __assign({\n key: index\n }, innerClasses), child);\n }));\n root.innerHTML = ReactDOMServer.renderToStaticMarkup(popup);\n var newPosition = this.position(props, root.firstChild, props.anchor);\n root.parentNode.removeChild(root);\n return newPosition;\n };\n\n Popup.prototype.attachRepositionHandlers = function (element) {\n var _this = this;\n\n this.detachRepositionHandlers();\n this._scrollableParents = this._domService.scrollableParents(this.props.anchor || element);\n\n this._scrollableParents.map(function (p) {\n return p.addEventListener('scroll', _this.reposition);\n });\n\n window.addEventListener('resize', this.reposition);\n };\n\n Popup.prototype.detachRepositionHandlers = function () {\n var _this = this;\n\n if (this._scrollableParents) {\n this._scrollableParents.map(function (p) {\n return p.removeEventListener('scroll', _this.reposition);\n });\n\n this._scrollableParents = undefined;\n }\n\n window.removeEventListener('resize', this.reposition);\n };\n\n Popup.prototype.reposition = function () {\n this.forceUpdate();\n };\n /**\n * @hidden\n */\n\n\n Popup.propTypes = {\n anchor: function anchor(props) {\n var anchor = props.anchor;\n\n if (anchor && typeof anchor.nodeType !== 'number') {\n return new Error('Invalid prop `anchor` supplied to `Kendo React Popup`. Validation failed.');\n }\n },\n appendTo: function appendTo(props) {\n var element = props.appendTo;\n\n if (element && typeof element.nodeType !== 'number') {\n return new Error('Invalid prop `appendTo` supplied to `Kendo React Popup`. Validation failed.');\n }\n },\n className: PropTypes.string,\n id: PropTypes.string,\n popupClass: PropTypes.string,\n collision: PropTypes.shape({\n horizontal: PropTypes.oneOf([CollisionType.fit, CollisionType.flip]),\n vertical: PropTypes.oneOf([CollisionType.fit, CollisionType.flip])\n }),\n anchorAlign: PropTypes.shape({\n horizontal: PropTypes.oneOf([AlignPoint.left, AlignPoint.center, AlignPoint.right]),\n vertical: PropTypes.oneOf([AlignPoint.top, AlignPoint.center, AlignPoint.bottom])\n }),\n popupAlign: PropTypes.shape({\n horizontal: PropTypes.oneOf([AlignPoint.left, AlignPoint.center, AlignPoint.right]),\n vertical: PropTypes.oneOf([AlignPoint.top, AlignPoint.center, AlignPoint.bottom])\n }),\n offset: PropTypes.shape({\n left: PropTypes.number,\n top: PropTypes.number\n }),\n children: PropTypes.oneOfType([PropTypes.element, PropTypes.node]),\n show: PropTypes.bool,\n animate: PropTypes.oneOfType([PropTypes.bool, PropTypes.shape({\n openDuration: PropTypes.number,\n closeDuration: PropTypes.number\n })])\n };\n /**\n * @hidden\n */\n\n Popup.defaultProps = {\n collision: {\n horizontal: CollisionType.fit,\n vertical: CollisionType.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 };\n return Popup;\n}(React.Component);\n\nexport default Popup;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\n\nvar MenuItemLink =\n/** @class */\nfunction (_super) {\n __extends(MenuItemLink, _super);\n\n function MenuItemLink() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n\n\n MenuItemLink.prototype.render = function () {\n if (this.props.url) {\n return React.createElement(\"a\", {\n className: this.getMenuItemClassName(),\n role: \"presentation\",\n href: this.props.url,\n tabIndex: -1\n }, this.props.children);\n } else {\n return React.createElement(\"span\", {\n className: this.getMenuItemClassName(),\n role: \"presentation\"\n }, this.props.children);\n }\n };\n\n MenuItemLink.prototype.getMenuItemClassName = function () {\n return classNames('k-link', 'k-menu-link', {\n 'k-state-active': this.props.opened\n });\n };\n /**\n * @hidden\n */\n\n\n MenuItemLink.propTypes = {\n opened: PropTypes.bool,\n url: PropTypes.string\n };\n return MenuItemLink;\n}(React.Component);\n\nexport default MenuItemLink;","/**\n * @hidden\n */\nvar POPUP_ALIGN = {\n vertical: 'top',\n horizontal: 'left'\n};\n/**\n * @hidden\n */\n\nvar POPUP_ALIGN_RTL = {\n vertical: 'top',\n horizontal: 'right'\n};\n/**\n * @hidden\n */\n\nvar VERTICAL_COLLISION = {\n vertical: 'flip',\n horizontal: 'fit'\n};\n/**\n * @hidden\n */\n\nvar HORIZONTAL_COLLISION = {\n vertical: 'fit',\n horizontal: 'flip'\n};\n/**\n * @hidden\n */\n\nexport var POPUP_SETTINGS_RTL = {\n downward: {\n anchorAlign: {\n vertical: 'bottom',\n horizontal: 'right'\n },\n popupAlign: POPUP_ALIGN_RTL,\n collision: VERTICAL_COLLISION\n },\n leftward: {\n anchorAlign: {\n vertical: 'top',\n horizontal: 'left'\n },\n popupAlign: POPUP_ALIGN_RTL,\n collision: HORIZONTAL_COLLISION\n }\n};\n/**\n * @hidden\n */\n\nexport var POPUP_SETTINGS = {\n downward: {\n anchorAlign: {\n vertical: 'bottom',\n horizontal: 'left'\n },\n popupAlign: POPUP_ALIGN,\n collision: VERTICAL_COLLISION\n },\n rightward: {\n anchorAlign: {\n vertical: 'top',\n horizontal: 'right'\n },\n popupAlign: POPUP_ALIGN,\n collision: HORIZONTAL_COLLISION\n }\n};","import { POPUP_SETTINGS, POPUP_SETTINGS_RTL } from '../consts';\nimport { isIdZeroLevel } from './itemsIdsUtils';\n/**\n * @hidden\n */\n\nexport function getPopupSettings(itemId, isMenuVertical, isDirectionRightToLeft) {\n var childrenPosition = getChildrenPosition(itemId, isMenuVertical, isDirectionRightToLeft);\n\n if (isDirectionRightToLeft) {\n return childrenPosition === 'downward' ? POPUP_SETTINGS_RTL.downward : POPUP_SETTINGS_RTL.leftward;\n } else {\n return childrenPosition === 'downward' ? POPUP_SETTINGS.downward : POPUP_SETTINGS.rightward;\n }\n}\n/**\n * @hidden\n */\n\nexport function getChildrenPosition(itemId, isMenuVertical, isDirectionRightToLeft) {\n if (isIdZeroLevel(itemId)) {\n if (isMenuVertical) {\n return isDirectionRightToLeft ? 'leftward' : 'rightward';\n } else {\n return 'downward';\n }\n } else {\n return isDirectionRightToLeft ? 'leftward' : 'rightward';\n }\n}\n/**\n * @hidden\n */\n\nexport function convertBoolDirectionToString(isDirectionRightToLeft) {\n return isDirectionRightToLeft ? 'rtl' : 'ltr';\n}\n/**\n * @hidden\n */\n\nexport function getDOMElementId(menuGuid, itemId) {\n return menuGuid + \"_\" + itemId;\n}","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { getChildrenPosition } from '../utils/misc';\n/**\n * @hidden\n */\n\nexport var downArrowClass = 'k-i-arrow-60-down';\n/**\n * @hidden\n */\n\nexport var rightArrowClass = 'k-i-arrow-60-right';\n/**\n * @hidden\n */\n\nexport var leftArrowClass = 'k-i-arrow-60-left';\n\nvar MenuItemArrow =\n/** @class */\nfunction (_super) {\n __extends(MenuItemArrow, _super);\n\n function MenuItemArrow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n\n\n MenuItemArrow.prototype.render = function () {\n return React.createElement(\"span\", {\n className: this.getArrowClassName(),\n role: \"presentation\"\n });\n };\n\n MenuItemArrow.prototype.getArrowClassName = function () {\n var _a;\n\n var childrenPosition = getChildrenPosition(this.props.itemId, this.props.verticalMenu === true, this.props.dir === 'rtl');\n return classNames('k-icon', 'k-menu-expand-arrow', (_a = {}, _a[downArrowClass] = childrenPosition === 'downward', _a[rightArrowClass] = childrenPosition === 'rightward', _a[leftArrowClass] = childrenPosition === 'leftward', _a));\n };\n /**\n * @hidden\n */\n\n\n MenuItemArrow.propTypes = {\n itemId: PropTypes.string,\n dir: PropTypes.string,\n verticalMenu: PropTypes.bool\n };\n return MenuItemArrow;\n}(React.Component);\n\nexport default MenuItemArrow;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { shouldOpenItem, isFirstItemFromSiblings } from '../utils/itemsIdsUtils';\nimport MenuItemLink from './MenuItemLink';\nimport MenuItemArrow from './MenuItemArrow';\nimport MenuItemInternalsList from './MenuItemInternalsList';\nimport { getPopupSettings, convertBoolDirectionToString, getDOMElementId } from '../utils/misc';\n/**\n * @hidden\n */\n\nvar MenuItemInternal =\n/** @class */\nfunction (_super) {\n __extends(MenuItemInternal, _super);\n\n function MenuItemInternal(props) {\n var _this = _super.call(this, props) || this;\n\n _this.isFirstRender = true;\n\n _this.onMouseOver = function (event) {\n _this.props.onMouseOver(_this.props.item.id);\n\n event.stopPropagation();\n };\n\n _this.onMouseLeave = function (event) {\n _this.props.onMouseLeave(_this.props.item.id);\n\n event.stopPropagation();\n };\n\n _this.state = {\n opened: false\n };\n return _this;\n }\n\n MenuItemInternal.prototype.componentDidMount = function () {\n var focusedItemId = this.props.focusedItemId;\n var currentItemId = this.props.item.id; // If the menu item component has been just mounted due to\n // keyboard navigation and it is the selected one.\n\n if (focusedItemId && focusedItemId === currentItemId) {\n this.itemElement.focus();\n }\n\n this.isFirstRender = false;\n };\n\n MenuItemInternal.prototype.componentDidUpdate = function (prevProps) {\n var focusedItemId = this.props.focusedItemId;\n var currentItemId = this.props.item.id;\n\n if (focusedItemId) {\n // If the item has been navigated to via the keyboard navigation\n // (Clicking and focusing an item also come here).\n if (prevProps.focusedItemId !== focusedItemId && focusedItemId === currentItemId // https://github.com/telerik/kendo-react/issues/216 :\n // No need to focus the wrapping menu item DOM element\n // when a child DOM element was clicked.\n && !this.itemElement.contains(document.activeElement)) {\n this.itemElement.focus();\n }\n } else if (document.activeElement === this.itemElement) {\n this.itemElement.blur();\n }\n };\n\n MenuItemInternal.prototype.render = function () {\n var _this = this;\n\n var item = this.props.item;\n var itemId = item.id;\n return [React.createElement(\"li\", {\n className: this.getMenuItemClassName(item),\n style: item.cssStyle,\n tabIndex: itemId === this.props.tabbableItemId ? 0 : -1,\n onMouseOver: this.onMouseOver,\n onMouseLeave: this.onMouseLeave,\n onMouseDown: function onMouseDown(event) {\n return _this.props.onMouseDown(event);\n },\n onBlur: function onBlur() {\n return _this.props.onBlur(itemId);\n },\n onFocus: function onFocus() {\n return _this.props.onFocus(itemId);\n },\n onClick: function onClick(event) {\n return _this.props.onClick(event, itemId);\n },\n role: \"menuitem\",\n \"aria-disabled\": item.disabled ? true : undefined,\n \"aria-haspopup\": item.items.length > 0 ? true : undefined,\n \"aria-expanded\": item.items.length > 0 ? this.Opened : undefined,\n \"aria-label\": item.text,\n \"aria-owns\": this.Opened ? getDOMElementId(this.props.menuGuid, itemId) : undefined,\n ref: function ref(el) {\n return _this.itemElement = el;\n },\n key: \"0\"\n }, this.contentRender ? this.renderContent() : this.renderMenuItemLink()), this.renderPopupIfOpened()];\n };\n\n MenuItemInternal.prototype.renderContent = function () {\n var itemId = this.props.item.contentParentItemId;\n return React.createElement(\"div\", {\n className: \"k-content\",\n role: \"presentation\"\n }, React.createElement(this.contentRender, {\n item: this.props.onOriginalItemNeeded(itemId),\n itemId: itemId\n }));\n };\n\n MenuItemInternal.prototype.renderMenuItemLink = function () {\n var item = this.props.item;\n\n if (this.linkRender) {\n return React.createElement(this.linkRender, {\n item: this.props.onOriginalItemNeeded(item.id),\n itemId: item.id,\n opened: this.Opened,\n dir: convertBoolDirectionToString(this.props.isDirectionRightToLeft)\n });\n } else {\n var textOrItemRender = this.itemRender ? React.createElement(this.itemRender, {\n item: this.props.onOriginalItemNeeded(item.id),\n itemId: item.id,\n key: \"1\"\n }) : item.text;\n return React.createElement(MenuItemLink, {\n url: item.url,\n opened: this.Opened\n }, [this.renderMenuIconIfApplicable(), textOrItemRender, this.renderArrowIfApplicable()]);\n }\n };\n\n MenuItemInternal.prototype.renderPopupIfOpened = function () {\n if (this.Opened) {\n var itemId = this.props.item.id;\n\n var _a = getPopupSettings(itemId, this.props.isMenuVertical, this.props.isDirectionRightToLeft),\n anchorAlign = _a.anchorAlign,\n popupAlign = _a.popupAlign,\n collision = _a.collision;\n\n return React.createElement(Popup, {\n anchor: this.itemElement,\n show: true,\n popupClass: this.getPopupClassName(),\n anchorAlign: anchorAlign,\n popupAlign: popupAlign,\n collision: collision,\n animate: false,\n key: \"1\"\n }, React.createElement(MenuItemInternalsList, {\n parentItemId: itemId,\n items: this.props.item.items,\n menuGuid: this.props.menuGuid,\n focusedItemId: this.props.focusedItemId,\n lastItemIdToBeOpened: this.props.lastItemIdToBeOpened,\n tabbableItemId: this.props.tabbableItemId,\n itemRender: this.props.itemRender,\n linkRender: this.props.linkRender,\n isMenuVertical: this.props.isMenuVertical,\n isDirectionRightToLeft: this.props.isDirectionRightToLeft,\n className: \"k-group k-menu-group k-reset\",\n onMouseOver: this.props.onMouseOver,\n onMouseLeave: this.props.onMouseLeave,\n onMouseDown: this.props.onMouseDown,\n onBlur: this.props.onBlur,\n onFocus: this.props.onFocus,\n onClick: this.props.onClick,\n onOriginalItemNeeded: this.props.onOriginalItemNeeded\n }));\n } else {\n return null;\n }\n };\n\n MenuItemInternal.prototype.renderMenuIconIfApplicable = function () {\n return this.props.item.icon ? React.createElement(\"span\", {\n className: \"k-icon k-i-\" + this.props.item.icon,\n role: \"presentation\",\n key: \"0\"\n }) : null;\n };\n\n MenuItemInternal.prototype.renderArrowIfApplicable = function () {\n return this.props.item.items.length > 0 ? React.createElement(MenuItemArrow, {\n itemId: this.props.item.id,\n verticalMenu: this.props.isMenuVertical,\n dir: convertBoolDirectionToString(this.props.isDirectionRightToLeft),\n key: \"2\"\n }) : null;\n };\n\n Object.defineProperty(MenuItemInternal.prototype, \"itemRender\", {\n get: function get() {\n return this.props.item.render || this.props.itemRender;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MenuItemInternal.prototype, \"linkRender\", {\n get: function get() {\n return this.props.item.linkRender || this.props.linkRender;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MenuItemInternal.prototype, \"contentRender\", {\n get: function get() {\n return this.props.item.contentParentItemId ? this.props.item.contentRender : null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MenuItemInternal.prototype, \"Opened\", {\n get: function get() {\n var props = this.props;\n return props.item.items.length > 0 && shouldOpenItem(props.item.id, props.lastItemIdToBeOpened) && // HACK: Wait for the second render because otherwise the scenario of\n // popup inside popup throws an error (for example, hover of item with id '0_0').\n !this.isFirstRender;\n },\n enumerable: true,\n configurable: true\n });\n\n MenuItemInternal.prototype.getPopupClassName = function () {\n return classNames('k-menu-popup', {\n 'k-rtl': this.props.isDirectionRightToLeft\n });\n };\n\n MenuItemInternal.prototype.getMenuItemClassName = function (item) {\n return classNames('k-item', 'k-menu-item', {\n 'k-first': isFirstItemFromSiblings(item.id),\n 'k-last': item.isLastFromSiblings,\n 'k-state-disabled': item.disabled\n }, item.cssClass);\n };\n\n return MenuItemInternal;\n}(React.Component);\n\nexport default MenuItemInternal;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport MenuItemInternal from './MenuItemInternal';\nimport { getDOMElementId } from './../utils/misc';\n/**\n * @hidden\n */\n\nvar MenuItemInternalsList =\n/** @class */\nfunction (_super) {\n __extends(MenuItemInternalsList, _super);\n\n function MenuItemInternalsList() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.onMouseOver = function (event) {\n _this.props.onMouseOver(_this.props.parentItemId);\n\n event.stopPropagation();\n };\n\n _this.onMouseLeave = function (event) {\n _this.props.onMouseLeave(_this.props.parentItemId);\n\n event.stopPropagation();\n };\n\n return _this;\n }\n\n MenuItemInternalsList.prototype.render = function () {\n var parentItemId = this.props.parentItemId;\n return React.createElement(\"ul\", {\n className: this.props.className,\n role: parentItemId !== undefined ? 'menu' : 'menubar',\n id: parentItemId !== undefined ? getDOMElementId(this.props.menuGuid, parentItemId) : undefined,\n onMouseOver: parentItemId !== undefined ? this.onMouseOver : undefined,\n onMouseLeave: parentItemId !== undefined ? this.onMouseLeave : undefined,\n \"aria-orientation\": this.props['aria-orientation']\n }, this.renderChildItems());\n };\n\n MenuItemInternalsList.prototype.renderChildItems = function () {\n var _this = this;\n\n return this.props.items.length > 0 ? this.props.items.map(function (item, index) {\n return React.createElement(MenuItemInternal, {\n item: item,\n isMenuVertical: _this.props.isMenuVertical,\n isDirectionRightToLeft: _this.props.isDirectionRightToLeft,\n focusedItemId: _this.props.focusedItemId,\n lastItemIdToBeOpened: _this.props.lastItemIdToBeOpened,\n tabbableItemId: _this.props.tabbableItemId,\n itemRender: _this.props.itemRender,\n linkRender: _this.props.linkRender,\n menuGuid: _this.props.menuGuid,\n onMouseOver: _this.props.onMouseOver,\n onMouseLeave: _this.props.onMouseLeave,\n onMouseDown: _this.props.onMouseDown,\n onBlur: _this.props.onBlur,\n onFocus: _this.props.onFocus,\n onClick: _this.props.onClick,\n onOriginalItemNeeded: _this.props.onOriginalItemNeeded,\n key: index\n });\n }) : null;\n };\n\n return MenuItemInternalsList;\n}(React.Component);\n\nexport default MenuItemInternalsList;","/**\n * @hidden\n */\nvar DirectionHolder =\n/** @class */\nfunction () {\n function DirectionHolder() {\n // The phase changes in the following sequence:\n // NotInitialized -> Initialized -> NewValueReceived.\n this.phase = 'Initialized';\n }\n\n DirectionHolder.prototype.getIsDirectionRightToLeft = function () {\n return this.isDirectionRightToLeft;\n };\n\n DirectionHolder.prototype.setIsDirectionRightToLeft = function (value) {\n this.phase = this.phase === 'NotInitialized' ? 'Initialized' : 'NewValueReceived';\n this.previousIsDirectionRightToLeft = this.isDirectionRightToLeft;\n this.isDirectionRightToLeft = value;\n };\n\n DirectionHolder.prototype.hasDirectionChanged = function () {\n return this.phase === 'NewValueReceived' ? this.previousIsDirectionRightToLeft !== this.isDirectionRightToLeft : false;\n };\n\n return DirectionHolder;\n}();\n\nexport default DirectionHolder;","/**\n * @hidden\n */\nvar MouseOverHandler =\n/** @class */\nfunction () {\n function MouseOverHandler(openOnClick, resetMenu, openItem) {\n this.openOnClick = openOnClick;\n this.resetMenu = resetMenu;\n this.openItem = openItem;\n this.openOnClick = openOnClick;\n this.isMouseOverEnabled = openOnClick ? false : true;\n }\n\n Object.defineProperty(MouseOverHandler.prototype, \"OpenOnClick\", {\n set: function set(value) {\n if (Boolean(value) !== Boolean(this.openOnClick)) {\n this.mouseDown = false;\n this.isMouseOverEnabled = value ? false : true;\n }\n\n this.openOnClick = value;\n },\n enumerable: true,\n configurable: true\n });\n\n MouseOverHandler.prototype.handleItemSelectedViaKeyboard = function () {\n if (this.openOnClick) {\n this.isMouseOverEnabled = false;\n this.resetMenu();\n }\n };\n\n Object.defineProperty(MouseOverHandler.prototype, \"IsMouseOverEnabled\", {\n get: function get() {\n return this.isMouseOverEnabled;\n },\n enumerable: true,\n configurable: true\n });\n\n MouseOverHandler.prototype.handleItemMouseDown = function () {\n this.mouseDown = true;\n };\n\n MouseOverHandler.prototype.handleItemFocus = function () {\n // Keep opening on mouse over upon tabbing\n // and keyboard navigation. However, discard the event\n // upon click because a cycle occurs and the item does not open.\n if (this.openOnClick && !this.mouseDown) {\n this.isMouseOverEnabled = true;\n }\n\n this.mouseDown = false;\n };\n\n MouseOverHandler.prototype.handleItemClick = function (itemId, clickedItemIsWithDefaultClose) {\n if (this.openOnClick) {\n if (this.isMouseOverEnabled) {\n if (clickedItemIsWithDefaultClose) {\n this.isMouseOverEnabled = false;\n this.resetMenu();\n }\n } else {\n this.isMouseOverEnabled = true;\n this.openItem(itemId);\n }\n }\n };\n\n return MouseOverHandler;\n}();\n\nexport default MouseOverHandler;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, Keys, guid, dispatchEvent } from '@progress/kendo-react-common';\nimport { getDirectParentId, isIdEmptyOrZeroLevel, EMPTY_ID, ZERO_LEVEL_ZERO_ITEM_ID, getRootParentId, getItemById } from '../utils/itemsIdsUtils';\nimport prepareInputItemsForInternalWork from '../utils/prepareInputItemsForInternalWork';\nimport getNewItemIdUponKeyboardNavigation from '../utils/getNewItemIdUponKeyboardNavigation';\nimport { getHoverOpenDelay, getHoverCloseDelay } from '../utils/hoverDelay';\nimport MenuItemInternalsList from './MenuItemInternalsList';\nimport DirectionHolder from '../utils/DirectionHolder';\nimport MouseOverHandler from '../utils/MouseOverHandler';\nvar initialItemsIds = {\n focusedItemId: EMPTY_ID,\n hoveredItemId: EMPTY_ID,\n tabbableItemId: ZERO_LEVEL_ZERO_ITEM_ID\n};\n/**\n * Represents the [KendoReact Menu component]({% slug overview_menu %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return (\n * \n * \n * \n * \n * \n * \n * \n * \n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\n\nvar Menu =\n/** @class */\nfunction (_super) {\n __extends(Menu, _super);\n\n function Menu(props) {\n var _this = _super.call(this, props) || this;\n\n _this.guid = guid();\n _this.directionHolder = new DirectionHolder();\n /**\n * Resets the selection and opening of Menu items.\n */\n\n _this.reset = function () {\n _this.clearItemHoverAndLeaveRequestsIfApplicable();\n\n _this.setState(initialItemsIds);\n };\n\n _this.onKeyDown = function (event) {\n // The focusedItemId may be empty when contentRender is used.\n // For example, content with input.\n if (_this.state.focusedItemId !== EMPTY_ID) {\n var currentItem = getItemById(_this.state.focusedItemId, _this.items);\n var newItemId = getNewItemIdUponKeyboardNavigation(_this.items, currentItem.id, event.keyCode, event.key, _this.props.vertical, _this.directionHolder.getIsDirectionRightToLeft());\n\n if (currentItem.id !== newItemId) {\n event.preventDefault();\n\n _this.setFocusedItemId(newItemId);\n }\n\n if ((event.keyCode === Keys.enter || event.keyCode === Keys.space) && !currentItem.disabled) {\n _this.mouseOverHandler.handleItemSelectedViaKeyboard();\n\n _this.dispatchSelectEventIfWired(event, currentItem.id);\n\n if (!event.isDefaultPrevented() && currentItem.items.length === 0 && currentItem.url) {\n window.location.assign(currentItem.url);\n }\n }\n }\n };\n\n _this.onItemMouseOver = function (itemId) {\n if (_this.mouseOverHandler.IsMouseOverEnabled) {\n // The `over` event can get fired even without actually leaving the item.\n // For example, move the mouse little by little over the item content.\n _this.clearItemHoverAndLeaveRequestsIfApplicable();\n\n _this.itemHoverRequest = setTimeout(function () {\n _this.setHoveredItemId(itemId);\n\n _this.itemHoverRequest = null;\n }, getHoverOpenDelay(_this.props));\n }\n };\n\n _this.onItemMouseLeave = function (itemId) {\n if (_this.mouseOverHandler.IsMouseOverEnabled && _this.isItemWithDefaultClose(itemId)) {\n // Both the `leave` and `hover` requests are cleared\n // to be defensive and consistent with the `over` handler.\n _this.clearItemHoverAndLeaveRequestsIfApplicable();\n\n _this.itemLeaveRequest = setTimeout(function () {\n _this.setHoveredItemId(EMPTY_ID);\n\n _this.itemLeaveRequest = null;\n }, getHoverCloseDelay(_this.props));\n }\n };\n\n _this.onItemMouseDown = function () {\n _this.mouseOverHandler.handleItemMouseDown();\n };\n\n _this.onItemFocus = function (itemId) {\n _this.setFocusedItemId(itemId);\n\n _this.mouseOverHandler.handleItemFocus();\n };\n\n _this.onItemClick = function (event, itemId) {\n var item = getItemById(itemId, _this.items);\n\n if (!item.disabled) {\n _this.setFocusedItemId(itemId);\n\n _this.mouseOverHandler.handleItemClick(itemId, _this.isItemWithDefaultClose(itemId));\n\n _this.dispatchSelectEventIfWired(event, itemId);\n\n if (!event.isDefaultPrevented() && item.url) {\n window.location.assign(item.url);\n }\n }\n };\n\n _this.onItemBlur = function (itemId) {\n if (_this.isItemWithDefaultClose(itemId)) {\n _this.setFocusedItemId(EMPTY_ID);\n }\n };\n\n _this.getInputItem = function (itemId) {\n return getItemById(itemId, _this.inputItems);\n };\n\n _this.mouseOverHandler = new MouseOverHandler(_this.props.openOnClick, _this.reset, _this.onItemMouseOver);\n _this.state = Object.assign({}, initialItemsIds, {\n isFirstRender: true\n });\n return _this;\n }\n /**\n * @hidden\n */\n\n\n Menu.prototype.render = function () {\n var _this = this;\n\n this.prepareItems();\n\n if (!this.state.isFirstRender) {\n this.directionHolder.setIsDirectionRightToLeft(this.checkIsDirectionRightToLeft());\n }\n\n var lastItemIdToBeOpened = this.state.hoveredItemId ? this.state.hoveredItemId : this.state.focusedItemId ? getDirectParentId(this.state.focusedItemId) : EMPTY_ID;\n return React.createElement(\"div\", {\n onKeyDown: this.onKeyDown,\n style: this.props.style,\n className: this.getMenuWrapperClassName(),\n ref: function ref(el) {\n return _this.menuWrapperEl = el;\n }\n }, React.createElement(MenuItemInternalsList, {\n className: this.getMenuClassName(),\n \"aria-orientation\": this.props.vertical ? 'vertical' : undefined,\n items: this.items,\n isMenuVertical: this.props.vertical,\n isDirectionRightToLeft: this.directionHolder.getIsDirectionRightToLeft(),\n focusedItemId: this.state.focusedItemId,\n lastItemIdToBeOpened: lastItemIdToBeOpened,\n tabbableItemId: this.state.tabbableItemId,\n itemRender: this.props.itemRender,\n linkRender: this.props.linkRender,\n menuGuid: this.guid,\n onMouseLeave: this.onItemMouseLeave,\n onMouseOver: this.onItemMouseOver,\n onMouseDown: this.onItemMouseDown,\n onFocus: this.onItemFocus,\n onClick: this.onItemClick,\n onBlur: this.onItemBlur,\n onOriginalItemNeeded: this.getInputItem\n }));\n };\n /**\n * @hidden\n */\n\n\n Menu.prototype.componentDidMount = function () {\n this.setState({\n isFirstRender: false\n });\n };\n /**\n * @hidden\n */\n\n\n Menu.prototype.componentDidUpdate = function (prevProps) {\n // Reset the Menu upon big UI changes\n // to avoid misleading the user and to\n // keep the component consistent.\n if (Boolean(prevProps.vertical) !== Boolean(this.props.vertical) || this.directionHolder.hasDirectionChanged()) {\n this.reset();\n }\n\n this.mouseOverHandler.OpenOnClick = this.props.openOnClick;\n };\n /**\n * @hidden\n */\n\n\n Menu.prototype.componentWillUnmount = function () {\n this.clearItemHoverAndLeaveRequestsIfApplicable();\n };\n\n Menu.prototype.setFocusedItemId = function (focusedItemId) {\n this.setState(function (prevState) {\n var tabbableItemId = focusedItemId === EMPTY_ID ? prevState.tabbableItemId : getRootParentId(focusedItemId);\n var hoveredItemId = focusedItemId === EMPTY_ID || isIdEmptyOrZeroLevel(prevState.hoveredItemId) && isIdEmptyOrZeroLevel(focusedItemId) ? prevState.hoveredItemId : EMPTY_ID;\n return {\n hoveredItemId: hoveredItemId,\n focusedItemId: focusedItemId,\n tabbableItemId: tabbableItemId\n };\n });\n };\n\n Menu.prototype.setHoveredItemId = function (hoveredItemId) {\n this.setState(function (prevState) {\n if (isIdEmptyOrZeroLevel(hoveredItemId) && isIdEmptyOrZeroLevel(prevState.focusedItemId)) {\n return {\n hoveredItemId: hoveredItemId,\n focusedItemId: prevState.focusedItemId,\n tabbableItemId: prevState.tabbableItemId\n };\n } else {\n return {\n hoveredItemId: hoveredItemId,\n focusedItemId: EMPTY_ID,\n tabbableItemId: ZERO_LEVEL_ZERO_ITEM_ID\n };\n }\n });\n };\n\n Menu.prototype.getMenuWrapperClassName = function () {\n return classNames({\n 'k-rtl': this.directionHolder.getIsDirectionRightToLeft()\n });\n };\n\n Menu.prototype.getMenuClassName = function () {\n return classNames('k-widget', 'k-reset', 'k-header', 'k-menu', {\n 'k-menu-horizontal': !this.props.vertical\n }, {\n 'k-menu-vertical': this.props.vertical\n });\n };\n\n Menu.prototype.clearItemHoverAndLeaveRequestsIfApplicable = function () {\n if (this.itemHoverRequest) {\n clearTimeout(this.itemHoverRequest);\n this.itemHoverRequest = null;\n }\n\n if (this.itemLeaveRequest) {\n clearTimeout(this.itemLeaveRequest);\n this.itemLeaveRequest = null;\n }\n };\n\n Menu.prototype.isItemWithDefaultClose = function (itemId) {\n return !this.props.customCloseItemIds || this.props.customCloseItemIds.indexOf(itemId) === -1;\n };\n\n Menu.prototype.checkIsDirectionRightToLeft = function () {\n return this.props.dir !== undefined ? this.props.dir === 'rtl' : this.menuWrapperEl && getComputedStyle(this.menuWrapperEl).direction === 'rtl';\n };\n\n Menu.prototype.prepareItems = function () {\n var _a = prepareInputItemsForInternalWork(this.props.items, this.props.children),\n items = _a.items,\n inputItems = _a.inputItems;\n\n this.items = items;\n this.inputItems = inputItems;\n };\n\n Menu.prototype.dispatchSelectEventIfWired = function (event, itemId) {\n dispatchEvent(this.props.onSelect, event, this, {\n item: this.getInputItem(itemId),\n itemId: itemId\n });\n };\n /**\n * @hidden\n */\n\n\n Menu.propTypes = {\n vertical: PropTypes.bool,\n items: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.object,\n dir: PropTypes.string,\n hoverOpenDelay: PropTypes.number,\n hoverCloseDelay: PropTypes.number,\n openOnClick: PropTypes.bool,\n itemRender: PropTypes.any,\n linkRender: PropTypes.any,\n customCloseItemIds: PropTypes.arrayOf(PropTypes.string),\n onSelect: PropTypes.func\n };\n /**\n * @hidden\n */\n\n Menu.defaultProps = {\n vertical: false\n };\n return Menu;\n}(React.Component);\n\nexport default Menu;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\n\nvar SplitterPane =\n/** @class */\nfunction (_super) {\n __extends(SplitterPane, _super);\n\n function SplitterPane() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n SplitterPane.prototype.render = function () {\n var _a;\n\n var _b = this.props,\n size = _b.size,\n collapsed = _b.collapsed,\n overlay = _b.overlay,\n containsSplitter = _b.containsSplitter,\n collapsible = _b.collapsible,\n resizable = _b.resizable,\n scrollable = _b.scrollable,\n keepMounted = _b.keepMounted;\n var fixedSize = size && size.length > 0;\n var style = {\n flexBasis: size\n };\n var paneClasses = classNames('k-pane', (_a = {}, _a['k-state-hidden'] = collapsed, _a['hidden'] = collapsed, _a['k-pane-flex'] = containsSplitter, _a['k-pane-static'] = !resizable && !collapsible || fixedSize, _a['k-scrollable'] = scrollable, _a));\n return React.createElement(\"div\", {\n style: style,\n className: paneClasses\n }, !collapsed || keepMounted ? this.props.children : undefined, overlay ? React.createElement(\"div\", {\n className: 'k-splitter-overlay k-overlay'\n }) : undefined);\n };\n\n return SplitterPane;\n}(React.Component);\n\nexport { SplitterPane };","/**\n * @hidden\n */\nexport function getHoverOpenDelay(props) {\n if (props.hoverOpenDelay !== undefined) {\n return props.hoverOpenDelay;\n } else {\n return props.openOnClick ? 0 : 100;\n }\n}\n/**\n * @hidden\n */\n\nexport function getHoverCloseDelay(props) {\n return props.hoverCloseDelay !== undefined ? props.hoverCloseDelay : 100;\n}","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport { classNames, Draggable, Keys } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\n\nvar SplitterBar =\n/** @class */\nfunction (_super) {\n __extends(SplitterBar, _super);\n\n function SplitterBar(props) {\n var _this = _super.call(this, props) || this;\n\n _this.onDrag = function (data, isFirst, isLast) {\n var event = data.event;\n var _a = _this.props,\n onDrag = _a.onDrag,\n index = _a.index;\n var element = _this.draggable && _this.draggable.element;\n\n if (!isLast && event) {\n event.originalEvent.preventDefault();\n }\n\n if (element && !_this.isStatic && _this.isDraggable) {\n onDrag(event, element, index, isFirst, isLast);\n }\n };\n\n _this.onFocus = function () {\n _this.setState({\n focused: true\n });\n };\n\n _this.onBlur = function () {\n _this.setState({\n focused: false\n });\n };\n\n _this.onToggle = function () {\n var _a = _this.props,\n onToggle = _a.onToggle,\n index = _a.index,\n prev = _a.prev,\n next = _a.next;\n\n if (prev.collapsible || next.collapsible) {\n onToggle(prev.collapsible ? index : index + 1);\n }\n };\n\n _this.onPrevToggle = function () {\n var _a = _this.props,\n onToggle = _a.onToggle,\n index = _a.index,\n prev = _a.prev;\n\n if (prev.collapsible) {\n onToggle(index);\n }\n };\n\n _this.onNextToggle = function () {\n var _a = _this.props,\n onToggle = _a.onToggle,\n index = _a.index,\n next = _a.next;\n\n if (next.collapsible) {\n onToggle(index + 1);\n }\n };\n\n _this.onKeyDown = function (event) {\n var keyCode = event && event.keyCode;\n var isHorizontal = _this.isHorizontal;\n var index = _this.props.index;\n var element = _this.draggable && _this.draggable.element;\n\n var onKeyboardResize = function onKeyboardResize(el, idx, offset) {\n event.preventDefault();\n\n _this.props.onKeyboardResize(el, idx, offset);\n };\n\n if (!element) {\n return;\n }\n\n if (keyCode === Keys.enter) {\n event.preventDefault();\n\n _this.onToggle();\n } else if (_this.isDraggable) {\n if (isHorizontal && keyCode === Keys.left) {\n onKeyboardResize(element, index, -10);\n } else if (isHorizontal && keyCode === Keys.right) {\n onKeyboardResize(element, index, 10);\n } else if (!isHorizontal && keyCode === Keys.up) {\n onKeyboardResize(element, index, -10);\n } else if (!isHorizontal && keyCode === Keys.down) {\n onKeyboardResize(element, index, 10);\n }\n }\n };\n\n _this.previousArrowClass = function (isHorizontal) {\n var _a;\n\n var prev = _this.props.prev;\n var isCollapsible = prev.collapsible;\n var isCollapsed = prev.collapsed;\n return classNames('k-icon', (_a = {}, _a['k-hidden'] = !isCollapsible, _a['k-collapse-prev'] = isCollapsible, _a['k-i-arrow-60-left'] = isCollapsible && isHorizontal && !isCollapsed, _a['k-i-arrow-60-right'] = isCollapsible && isHorizontal && isCollapsed, _a['k-i-arrow-60-up'] = isCollapsible && !isHorizontal && !isCollapsed, _a['k-i-arrow-60-down'] = isCollapsible && !isHorizontal && isCollapsed, _a));\n };\n\n _this.nextArrowClass = function (isHorizontal) {\n var _a;\n\n var next = _this.props.next;\n var isCollapsible = next.collapsible;\n var isCollapsed = next.collapsed;\n return classNames('k-icon', (_a = {}, _a['k-hidden'] = !isCollapsible, _a['k-collapse-next'] = isCollapsible, _a['k-i-arrow-60-right'] = isCollapsible && isHorizontal && !isCollapsed, _a['k-i-arrow-60-left'] = isCollapsible && isHorizontal && isCollapsed, _a['k-i-arrow-60-down'] = isCollapsible && !isHorizontal && !isCollapsed, _a['k-i-arrow-60-up'] = isCollapsible && !isHorizontal && isCollapsed, _a));\n };\n\n _this.state = {\n focused: false\n };\n return _this;\n }\n\n Object.defineProperty(SplitterBar.prototype, \"isStatic\", {\n get: function get() {\n var _a = this.props,\n prev = _a.prev,\n next = _a.next;\n var betweenResizablePanes = prev.resizable && next.resizable;\n var nearCollapsiblePane = prev.collapsible || next.collapsible;\n return !betweenResizablePanes && !nearCollapsiblePane;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SplitterBar.prototype, \"isDraggable\", {\n get: function get() {\n var _a = this.props,\n prev = _a.prev,\n next = _a.next;\n var betweenResizablePanes = prev.resizable && next.resizable;\n var nearCollapsedPane = prev.collapsed || next.collapsed;\n return !!betweenResizablePanes && !nearCollapsedPane;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SplitterBar.prototype, \"isHorizontal\", {\n get: function get() {\n return this.props.orientation === 'horizontal';\n },\n enumerable: true,\n configurable: true\n });\n\n SplitterBar.prototype.render = function () {\n var _this = this;\n\n var _a;\n\n var isDraggable = this.isDraggable;\n var isStatic = this.isStatic;\n var isHorizontal = this.isHorizontal;\n var barClasses = classNames('k-splitbar', (_a = {}, _a['k-state-focused'] = this.state.focused, _a['k-splitbar-horizontal'] = isHorizontal, _a['k-splitbar-vertical'] = !isHorizontal, _a['k-splitbar-draggable-horizontal'] = isHorizontal && isDraggable, _a['k-splitbar-draggable-vertical'] = !isHorizontal && isDraggable, _a['k-splitbar-static-horizontal'] = isHorizontal && isStatic, _a['k-splitbar-static-vertical'] = !isHorizontal && isStatic, _a));\n var previousArrowClass = this.previousArrowClass(isHorizontal);\n var nextArrowClass = this.nextArrowClass(isHorizontal);\n return React.createElement(Draggable, {\n onPress: function onPress(event) {\n return _this.onDrag(event, true, false);\n },\n onDrag: function onDrag(event) {\n return _this.onDrag(event, false, false);\n },\n onRelease: function onRelease(event) {\n return _this.onDrag(event, false, true);\n },\n ref: function ref(component) {\n _this.draggable = component;\n }\n }, React.createElement(\"div\", {\n tabIndex: isStatic ? -1 : 0,\n role: 'separator',\n className: barClasses,\n style: {\n touchAction: 'none'\n },\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n onDoubleClick: this.onToggle,\n onKeyDown: this.onKeyDown\n }, React.createElement(\"div\", {\n className: previousArrowClass,\n onClick: this.onPrevToggle\n }), React.createElement(\"div\", {\n className: 'k-resize-handle'\n }), React.createElement(\"div\", {\n className: nextArrowClass,\n onClick: this.onNextToggle\n })));\n };\n\n return SplitterBar;\n}(React.Component);\n\nexport { SplitterBar };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport { SplitterPane } from './SplitterPane';\nimport { SplitterBar } from './SplitterBar';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\n\nvar PANE_DEFAULTS = {\n collapsible: false,\n collapsed: false,\n resizable: true,\n scrollable: true\n};\n/**\n * @hidden\n */\n\nvar DOUBLE_CLICK_WAIT_TIME = 150;\n/**\n * Represents the [KendoReact Splitter component]({% slug overview_splitter %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return (\n *
    \n * \n *
    Pane 1
    \n *
    Pane 2
    \n *
    Pane 3
    \n * \n *
    \n * );\n * }\n * }\n *\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\n\nvar Splitter =\n/** @class */\nfunction (_super) {\n __extends(Splitter, _super);\n /**\n * @hidden\n */\n\n\n function Splitter(props) {\n var _this = _super.call(this, props) || this;\n\n _this.validatePanes = function (panesOptions) {\n var withoutSize = panesOptions.filter(function (pane) {\n return pane.size === undefined;\n });\n\n if (!withoutSize.length) {\n throw new Error('The Splitter should have at least one pane without a set size.');\n }\n };\n\n _this.mapPaneOptions = function (panes, panesContent) {\n var orientation = _this.orientation;\n var _a = _this.state,\n dragIndex = _a.dragIndex,\n isDragging = _a.isDragging;\n var paneOptions = [];\n\n for (var index = 0; index < panesContent.length; index++) {\n var containsSplitter = false;\n var paneContent = panesContent[index];\n\n if (React.isValidElement(paneContent)) {\n containsSplitter = paneContent.type.displayName === 'Splitter';\n }\n\n var overlay = false;\n\n if (isDragging && dragIndex !== undefined) {\n overlay = dragIndex === index || dragIndex + 1 === index;\n }\n\n paneOptions.push(__assign({}, PANE_DEFAULTS, {\n orientation: orientation,\n containsSplitter: containsSplitter,\n overlay: overlay\n }, (panes || [])[index]));\n }\n\n return paneOptions;\n };\n\n _this.mapSplitterPanes = function (panes, panesContent) {\n return panes.map(function (pane, index) {\n var splitterBar;\n var paneKey = index * 2;\n var barKey = paneKey + 1;\n\n if (index + 1 < panes.length) {\n var next = panes[index + 1];\n splitterBar = React.createElement(SplitterBar, {\n key: barKey,\n index: index,\n orientation: pane.orientation,\n prev: pane,\n next: next,\n onDrag: _this.onBarDragResize,\n onToggle: _this.onBarToggle,\n onKeyboardResize: _this.onBarKeyboardResize\n });\n }\n\n var splitterPane = React.createElement(SplitterPane, __assign({\n key: paneKey\n }, pane), panesContent[index]);\n return [splitterPane, splitterBar];\n });\n };\n\n _this.onBarToggle = function (index) {\n var panesOptions = _this.panesOptions(_this.panesContent);\n\n var updatedState = panesOptions.map(function (pane, idx) {\n var paneProps = _this.getPaneProps(pane);\n\n if (idx === index) {\n return __assign({}, paneProps, {\n collapsed: !pane.collapsed\n });\n } else {\n return __assign({}, paneProps);\n }\n });\n\n if (_this.props.onLayoutChange) {\n _this.props.onLayoutChange(updatedState, true);\n }\n };\n\n _this.onBarDragResize = function (event, barElement, index, isFirst, isLast) {\n var time = new Date().getTime();\n var pageX = event.pageX,\n pageY = event.pageY;\n\n var _a = _this.surroudingPanes(barElement),\n prevElement = _a.prevElement,\n nextElement = _a.nextElement;\n\n if (!prevElement || !nextElement) {\n return;\n }\n\n if (isFirst) {\n _this.setState({\n isDragging: true,\n dragIndex: index,\n startTime: time,\n originalX: pageX,\n originalY: pageY,\n originalPrevSize: _this.elementSize(prevElement),\n originalNextSize: _this.elementSize(nextElement)\n });\n\n return;\n }\n\n var _b = _this.state,\n originalPrevSize = _b.originalPrevSize,\n originalNextSize = _b.originalNextSize,\n startTime = _b.startTime,\n originalX = _b.originalX,\n originalY = _b.originalY;\n\n if (!isFirst && time - startTime < DOUBLE_CLICK_WAIT_TIME) {\n if (isLast) {\n _this.resetDragState();\n }\n\n return;\n }\n\n var delta;\n\n if (_this.orientation === 'vertical') {\n delta = pageY - originalY;\n } else if (_this.isRtl) {\n delta = originalX - pageX;\n } else {\n delta = pageX - originalX;\n }\n\n _this.resize(index, index + 1, originalPrevSize, originalNextSize, delta, isLast);\n\n if (isLast) {\n _this.resetDragState();\n }\n };\n\n _this.onBarKeyboardResize = function (barElement, index, delta) {\n var _a = _this.surroudingPanes(barElement),\n prevElement = _a.prevElement,\n nextElement = _a.nextElement;\n\n var originalPrevSize = _this.elementSize(prevElement);\n\n var originalNextSize = _this.elementSize(nextElement);\n\n _this.resize(index, index + 1, originalPrevSize, originalNextSize, delta, true);\n };\n\n _this.containerSize = function () {\n if (!_this._container) {\n return 0;\n }\n\n return _this.elementSize(_this._container, true);\n };\n\n _this.panesOptions = function (panesContent) {\n return _this.mapPaneOptions(_this.panes, panesContent);\n };\n\n _this.elementSize = function (el, isContainer) {\n var sizeType = isContainer ? 'client' : 'offset';\n\n if (_this.orientation === 'vertical') {\n return el[sizeType + \"Height\"];\n } else {\n return el[sizeType + \"Width\"];\n }\n };\n\n _this.clamp = function (min, max, v) {\n return Math.min(max, Math.max(min, v));\n };\n\n _this.fixedSize = function (size) {\n return size && size.length > 0;\n };\n\n _this.state = {\n isDragging: false,\n dragIndex: undefined,\n startTime: 0,\n originalX: 0,\n originalY: 0,\n originalPrevSize: 0,\n originalNextSize: 0,\n panes: props.defaultPanes || []\n };\n return _this;\n }\n\n Object.defineProperty(Splitter.prototype, \"isControlledState\", {\n get: function get() {\n return this.props.panes !== undefined;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Splitter.prototype, \"panes\", {\n get: function get() {\n return this.panesDuringOnChange !== undefined ? this.panesDuringOnChange : this.isControlledState ? this.props.panes : this.state.panes;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Splitter.prototype, \"orientation\", {\n get: function get() {\n return this.props.orientation || 'horizontal';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Splitter.prototype, \"isRtl\", {\n get: function get() {\n return this._container && getComputedStyle(this._container).direction === 'rtl' || false;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Splitter.prototype, \"panesContent\", {\n get: function get() {\n return React.Children.toArray(this.props.children).filter(function (c) {\n return c;\n });\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n Splitter.prototype.render = function () {\n var _this = this;\n\n var panesContent = this.panesContent;\n var panesOptions = this.panesOptions(panesContent);\n var className = classNames('k-widget', 'k-splitter', 'k-splitter-flex', \"k-splitter-\" + this.orientation, this.props.className);\n this.validatePanes(panesOptions);\n return React.createElement(\"div\", {\n style: this.props.style,\n ref: function ref(_ref) {\n return _this._container = _ref;\n },\n className: className\n }, this.mapSplitterPanes(panesOptions, panesContent));\n };\n\n Splitter.prototype.surroudingPanes = function (barElement) {\n return {\n prevElement: barElement.previousElementSibling,\n nextElement: barElement.nextElementSibling\n };\n };\n\n Splitter.prototype.isPercent = function (size) {\n return /%$/.test(size);\n };\n\n Splitter.prototype.toPixels = function (size, splitterSize) {\n var result = parseInt(size, 10);\n\n if (this.isPercent(size)) {\n result = splitterSize * result / 100;\n }\n\n return result;\n };\n\n Splitter.prototype.resetDragState = function () {\n this.setState({\n isDragging: false,\n dragIndex: undefined,\n startTime: 0,\n originalX: 0,\n originalY: 0,\n originalPrevSize: 0,\n originalNextSize: 0\n });\n };\n\n Splitter.prototype.resize = function (prevIndex, nextIndex, originalPrevSize, originalNextSize, delta, isLast) {\n var _this = this;\n\n var panesOptions = this.panesOptions(this.panesContent);\n var prevOptions = panesOptions[prevIndex];\n var nextOptions = panesOptions[nextIndex];\n var total = originalPrevSize + originalNextSize;\n var splitterSize = this.containerSize();\n\n var px = function px(s) {\n return _this.toPixels(s, splitterSize);\n };\n\n var prevDragState = {\n index: prevIndex,\n initialSize: originalPrevSize,\n min: px(prevOptions.min) || total - px(nextOptions.max) || 0,\n max: px(prevOptions.max) || total - px(nextOptions.min) || total\n };\n var nextDragState = {\n index: nextIndex,\n initialSize: originalNextSize,\n min: px(nextOptions.min) || total - px(prevOptions.max) || 0,\n max: px(nextOptions.max) || total - px(prevOptions.min) || total\n };\n\n var resize = function resize(paneState, change) {\n var pane = panesOptions[paneState.index];\n\n var newSize = _this.clamp(paneState.min, paneState.max, paneState.initialSize + change);\n\n if (_this.isPercent(pane.size || '')) {\n return 100 * newSize / splitterSize + '%';\n } else {\n return newSize + 'px';\n }\n };\n\n var prevSize;\n var nextSize;\n\n if (this.fixedSize(prevOptions.size) && this.fixedSize(nextOptions.size)) {\n prevSize = resize(prevDragState, delta);\n nextSize = resize(nextDragState, -delta);\n } else if (nextOptions.collapsible || this.fixedSize(nextOptions.size)) {\n nextSize = resize(nextDragState, -delta);\n } else {\n prevSize = resize(prevDragState, delta);\n }\n\n var updatedState = panesOptions.map(function (pane, idx) {\n var paneProps = _this.getPaneProps(pane);\n\n if (idx === prevIndex) {\n return __assign({}, paneProps, {\n size: prevSize\n });\n } else if (idx === nextIndex) {\n return __assign({}, paneProps, {\n size: nextSize\n });\n } else {\n return __assign({}, paneProps);\n }\n });\n this.panesDuringOnChange = updatedState;\n\n if (!this.isControlledState) {\n this.setState({\n panes: updatedState\n });\n }\n\n if (this.props.onLayoutChange) {\n this.props.onLayoutChange(updatedState, isLast);\n }\n\n this.panesDuringOnChange = undefined;\n };\n\n Splitter.prototype.getPaneProps = function (pane) {\n var orientation = pane.orientation,\n overlay = pane.overlay,\n containsSplitter = pane.containsSplitter,\n others = __rest(pane, [\"orientation\", \"overlay\", \"containsSplitter\"]);\n\n return others;\n };\n /**\n * @hidden\n */\n\n\n Splitter.displayName = 'Splitter';\n return Splitter;\n}(React.Component);\n\nexport { Splitter };","import TabStrip from './tabstrip/TabStrip';\nimport TabStripContent from './tabstrip/TabStripContent';\nimport TabStripNavigation from './tabstrip/TabStripNavigation';\nimport TabStripNavigationItem from './tabstrip/TabStripNavigationItem';\nimport TabStripTab from './tabstrip/TabStripTab';\nimport PanelBar from './panelbar/PanelBar';\nimport PanelBarItem from './panelbar/PanelBarItem';\nimport { PanelBarUtils } from './panelbar/util';\nimport Menu from './menu/components/Menu';\nimport MenuItemLink from './menu/components/MenuItemLink';\nimport MenuItem from './menu/components/MenuItem';\nimport MenuItemArrow from './menu/components/MenuItemArrow';\nimport { Splitter } from './splitter/Splitter';\nexport { TabStrip, TabStripTab, TabStripContent, TabStripNavigation, TabStripNavigationItem, PanelBar, PanelBarItem, PanelBarUtils, Menu, MenuItemLink, MenuItem, MenuItemArrow, Splitter };","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","var g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if (typeof window === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n return fn.apply(thisArg, args);\n };\n};","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nmodule.exports = function isBuffer(obj) {\n return obj != null && obj.constructor != null && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj);\n};","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).replace(/%40/gi, '@').replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']');\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 */\n\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\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\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\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};","'use strict';\n\nvar utils = require('./utils');\n\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\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; // Only Node.JS has a process variable that is of [[Class]] process\n\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n } else if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n }\n\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) || utils.isArrayBuffer(data) || utils.isBuffer(data) || utils.isStream(data) || utils.isFile(data) || utils.isBlob(data)) {\n return data;\n }\n\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n\n return data;\n }],\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) {\n /* Ignore */\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 xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n maxContentLength: -1,\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\nmodule.exports = defaults;","// shim for using process in browser\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n } // if setTimeout wasn't available but was latter defined\n\n\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\n\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n } // if clearTimeout wasn't available but was latter defined\n\n\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n\n draining = false;\n\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n\n while (len) {\n currentQueue = queue;\n queue = [];\n\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n\n queueIndex = -1;\n len = queue.length;\n }\n\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n\n queue.push(new Item(fun, args));\n\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\n\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n return [];\n};\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n return '/';\n};\n\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n return 0;\n};","'use strict';\n\nvar utils = require('./../utils');\n\nvar settle = require('./../core/settle');\n\nvar buildURL = require('./../helpers/buildURL');\n\nvar parseHeaders = require('./../helpers/parseHeaders');\n\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\n\nvar createError = require('../core/createError');\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\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest(); // HTTP basic authentication\n\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true); // Set the request timeout in MS\n\n request.timeout = config.timeout; // Listen for ready state\n\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\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\n\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n } // Prepare the response\n\n\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? 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 settle(resolve, reject, response); // Clean up request\n\n request = null;\n }; // Handle browser request cancellation (as opposed to a manual cancellation)\n\n\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request)); // Clean up request\n\n request = null;\n }; // Handle low level network errors\n\n\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(createError('Network Error', config, null, request)); // Clean up request\n\n request = null;\n }; // Handle timeout\n\n\n request.ontimeout = function handleTimeout() {\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED', request)); // Clean up request\n\n request = null;\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\n\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies'); // Add xsrf header\n\n\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ? cookies.read(config.xsrfCookieName) : undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n } // Add headers to the request\n\n\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 } // Add withCredentials to request if needed\n\n\n if (config.withCredentials) {\n request.withCredentials = true;\n } // Add responseType to request if needed\n\n\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n } // Handle progress if needed\n\n\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n } // Not all browsers support upload events\n\n\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel); // Clean up request\n\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n } // Send the request\n\n\n request.send(requestData);\n });\n};","'use strict';\n\nvar enhanceError = require('./enhanceError');\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 {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\n\n\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};","'use strict';\n\nvar utils = require('../utils');\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 */\n\n\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n utils.forEach(['url', 'method', 'params', 'data'], function valueFromConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n }\n });\n utils.forEach(['headers', 'auth', 'proxy'], function mergeDeepProperties(prop) {\n if (utils.isObject(config2[prop])) {\n config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n } else if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (utils.isObject(config1[prop])) {\n config[prop] = utils.deepMerge(config1[prop]);\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n utils.forEach(['baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer', 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName', 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'maxContentLength', 'validateStatus', 'maxRedirects', 'httpAgent', 'httpsAgent', 'cancelToken', 'socketPath'], function defaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n return config;\n};","'use strict';\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\n\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\nmodule.exports = Cancel;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.defaultArea = void 0;\nvar defaultArea = 'default-area';\nexports.defaultArea = defaultArea;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setupConfig = exports.defaultConfig = void 0;\n\nvar _constants = require(\"./constants\");\n\nvar defaultConfig = {\n area: _constants.defaultArea,\n delay: 0\n}; // Defensive config setup, fulfill default values\n\nexports.defaultConfig = defaultConfig;\n\nvar setupConfig = function setupConfig(outerConfig) {\n return {\n area: !outerConfig || !outerConfig.area ? _constants.defaultArea : outerConfig.area,\n delay: !outerConfig || !outerConfig.delay ? 0 : outerConfig.delay\n };\n};\n\nexports.setupConfig = setupConfig;","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n return fn.apply(thisArg, args);\n };\n};","'use strict';\n\nvar utils = require('./../utils');\n\nvar settle = require('./../core/settle');\n\nvar buildURL = require('./../helpers/buildURL');\n\nvar parseHeaders = require('./../helpers/parseHeaders');\n\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\n\nvar createError = require('../core/createError');\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\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest(); // HTTP basic authentication\n\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true); // Set the request timeout in MS\n\n request.timeout = config.timeout; // Listen for ready state\n\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\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\n\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n } // Prepare the response\n\n\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? 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 settle(resolve, reject, response); // Clean up request\n\n request = null;\n }; // Handle low level network errors\n\n\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(createError('Network Error', config, null, request)); // Clean up request\n\n request = null;\n }; // Handle timeout\n\n\n request.ontimeout = function handleTimeout() {\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED', request)); // Clean up request\n\n request = null;\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\n\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies'); // Add xsrf header\n\n\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ? cookies.read(config.xsrfCookieName) : undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n } // Add headers to the request\n\n\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 } // Add withCredentials to request if needed\n\n\n if (config.withCredentials) {\n request.withCredentials = true;\n } // Add responseType to request if needed\n\n\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n } // Handle progress if needed\n\n\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n } // Not all browsers support upload events\n\n\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel); // Clean up request\n\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n } // Send the request\n\n\n request.send(requestData);\n });\n};","'use strict';\n\nvar enhanceError = require('./enhanceError');\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 {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\n\n\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};","'use strict';\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\n\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\nmodule.exports = Cancel;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n\n if (desc.get || desc.set) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar 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: 0 },\n * entered: { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
    \n * I'm a fade Transition!\n *
    \n * )}\n *
    \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 *
    \n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
    \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\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_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.transitionGroup; // 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 var _proto = Transition.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: null // allows for nested Transitions\n\n };\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 _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 var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\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(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\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) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\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(node, timeout, handler) {\n this.setNextCallback(handler);\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 this.props.addEndListener(node, this.nextCallback);\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 childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n return children(status, childProps);\n }\n\n var child = _react.default.Children.only(children);\n\n return _react.default.cloneElement(child, childProps);\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\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'`, `'unmounted'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \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 * Normally a component is not transitioned if it is shown when the `` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\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 = _PropTypes.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. **Note:** Timeouts are still used as a fallback if provided.\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 * @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 * @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 * @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 * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\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 * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\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 = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;","/**\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 */\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n\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 } // Binding \"this\" is important for shallow renderer support.\n\n\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(prevProps, prevState);\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n} // React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\n\n\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 (typeof Component.getDerivedStateFromProps !== 'function' && typeof prototype.getSnapshotBeforeUpdate !== 'function') {\n return Component;\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\n\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n\n if (foundWillMountName !== null || foundWillReceivePropsName !== null || foundWillUpdateName !== null) {\n var componentName = Component.displayName || Component.name;\n var newApiName = typeof Component.getDerivedStateFromProps === 'function' ? 'getDerivedStateFromProps()' : 'getSnapshotBeforeUpdate()';\n throw Error('Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' + componentName + ' uses ' + newApiName + ' but also contains the following legacy lifecycles:' + (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') + (foundWillReceivePropsName !== null ? '\\n ' + foundWillReceivePropsName : '') + (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') + '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' + 'https://fb.me/react-async-component-lifecycle-hooks');\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\n\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\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\n\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error('Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype');\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(prevProps, prevState, maybeSnapshot) {\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 ? this.__reactInternalSnapshot : maybeSnapshot;\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };","\"use strict\";\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nvar timeoutsShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n enter: _propTypes.default.number,\n exit: _propTypes.default.number,\n appear: _propTypes.default.number\n}).isRequired]) : null;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n enter: _propTypes.default.string,\n exit: _propTypes.default.string,\n active: _propTypes.default.string\n}), _propTypes.default.shape({\n enter: _propTypes.default.string,\n enterDone: _propTypes.default.string,\n enterActive: _propTypes.default.string,\n exit: _propTypes.default.string,\n exitDone: _propTypes.default.string,\n exitActive: _propTypes.default.string\n})]) : null;\nexports.classNamesShape = classNamesShape;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _ChildMapping = require(\"./utils/ChildMapping\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\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 * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` 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 ``.\n *\n * Note that `` 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\n};\n\nvar TransitionGroup =\n/*#__PURE__*/\nfunction (_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(_assertThisInitialized(_this))); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: {\n isMounting: !this.appeared\n }\n };\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.appeared = true;\n this.mounted = true;\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 ? (0, _ChildMapping.getInitialChildMapping)(nextProps, handleExited) : (0, _ChildMapping.getNextChildMapping)(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n };\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = (0, _ChildMapping.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 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 children;\n }\n\n return _react.default.createElement(Component, props, children);\n };\n\n return TransitionGroup;\n}(_react.default.Component);\n\nTransitionGroup.childContextTypes = {\n transitionGroup: _propTypes.default.object.isRequired\n};\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
    ` 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 `
    ` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: _propTypes.default.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` 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.default.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.default.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.default.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.default.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.default.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(TransitionGroup);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","export default function symbolObservablePonyfill(root) {\n var result;\n var Symbol = root.Symbol;\n\n if (typeof Symbol === 'function') {\n if (Symbol.observable) {\n result = Symbol.observable;\n } else {\n result = Symbol('observable');\n Symbol.observable = result;\n }\n } else {\n result = '@@observable';\n }\n\n return result;\n}\n;","module.exports = require('./lib/axios');","/* pako 1.0.11 nodeca/pako */\n(function (f) {\n if (typeof exports === \"object\" && typeof module !== \"undefined\") {\n module.exports = f();\n } else if (typeof define === \"function\" && define.amd) {\n define([], f);\n } else {\n var g;\n\n if (typeof window !== \"undefined\") {\n g = window;\n } else if (typeof global !== \"undefined\") {\n g = global;\n } else if (typeof self !== \"undefined\") {\n g = self;\n } else {\n g = this;\n }\n\n g.pako = f();\n }\n})(function () {\n var define, module, exports;\n return function () {\n function r(e, n, t) {\n function o(i, f) {\n if (!n[i]) {\n if (!e[i]) {\n var c = \"function\" == typeof require && require;\n if (!f && c) return c(i, !0);\n if (u) return u(i, !0);\n var a = new Error(\"Cannot find module '\" + i + \"'\");\n throw a.code = \"MODULE_NOT_FOUND\", a;\n }\n\n var p = n[i] = {\n exports: {}\n };\n e[i][0].call(p.exports, function (r) {\n var n = e[i][1][r];\n return o(n || r);\n }, p, p.exports, r, e, n, t);\n }\n\n return n[i].exports;\n }\n\n for (var u = \"function\" == typeof require && require, i = 0; i < t.length; i++) {\n o(t[i]);\n }\n\n return o;\n }\n\n return r;\n }()({\n 1: [function (require, module, exports) {\n 'use strict';\n\n var TYPED_OK = typeof Uint8Array !== 'undefined' && typeof Uint16Array !== 'undefined' && typeof Int32Array !== 'undefined';\n\n function _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n }\n\n exports.assign = function (obj\n /*from1, from2, from3, ...*/\n ) {\n var sources = Array.prototype.slice.call(arguments, 1);\n\n while (sources.length) {\n var source = sources.shift();\n\n if (!source) {\n continue;\n }\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 }; // reduce buffer size, avoiding mem copy\n\n\n exports.shrinkBuf = function (buf, size) {\n if (buf.length === size) {\n return buf;\n }\n\n if (buf.subarray) {\n return buf.subarray(0, size);\n }\n\n buf.length = size;\n return buf;\n };\n\n var fnTyped = {\n arraySet: function arraySet(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 } // Fallback to ordinary array\n\n\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 flattenChunks(chunks) {\n var i, l, len, pos, chunk, result; // calculate data length\n\n len = 0;\n\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n } // join chunks\n\n\n result = new Uint8Array(len);\n pos = 0;\n\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 };\n var fnUntyped = {\n arraySet: function arraySet(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 flattenChunks(chunks) {\n return [].concat.apply([], chunks);\n }\n }; // Enable/Disable typed arrays use, for testing\n //\n\n exports.setTyped = function (on) {\n if (on) {\n exports.Buf8 = Uint8Array;\n exports.Buf16 = Uint16Array;\n exports.Buf32 = Int32Array;\n exports.assign(exports, fnTyped);\n } else {\n exports.Buf8 = Array;\n exports.Buf16 = Array;\n exports.Buf32 = Array;\n exports.assign(exports, fnUntyped);\n }\n };\n\n exports.setTyped(TYPED_OK);\n }, {}],\n 2: [function (require, module, exports) {\n // String encode/decode helpers\n 'use strict';\n\n var utils = require('./common'); // 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\n //\n\n\n var STR_APPLY_OK = true;\n var STR_APPLY_UIA_OK = true;\n\n try {\n String.fromCharCode.apply(null, [0]);\n } catch (__) {\n STR_APPLY_OK = false;\n }\n\n try {\n String.fromCharCode.apply(null, new Uint8Array(1));\n } catch (__) {\n STR_APPLY_UIA_OK = false;\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\n\n var _utf8len = new utils.Buf8(256);\n\n for (var q = 0; q < 256; q++) {\n _utf8len[q] = q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1;\n }\n\n _utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n // convert string to array (typed, when possible)\n\n exports.string2buf = function (str) {\n var buf,\n c,\n c2,\n m_pos,\n i,\n str_len = str.length,\n buf_len = 0; // count binary size\n\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n\n if ((c & 0xfc00) === 0xd800 && m_pos + 1 < str_len) {\n c2 = str.charCodeAt(m_pos + 1);\n\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + (c - 0xd800 << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n } // allocate buffer\n\n\n buf = new utils.Buf8(buf_len); // convert\n\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n\n if ((c & 0xfc00) === 0xd800 && m_pos + 1 < str_len) {\n c2 = str.charCodeAt(m_pos + 1);\n\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + (c - 0xd800 << 10) + (c2 - 0xdc00);\n m_pos++;\n }\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 }; // Helper (used in 2 places)\n\n\n function 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 && STR_APPLY_UIA_OK || !buf.subarray && STR_APPLY_OK) {\n return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));\n }\n }\n\n var result = '';\n\n for (var i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n\n return result;\n } // Convert byte array to binary string\n\n\n exports.buf2binstring = function (buf) {\n return buf2binstring(buf, buf.length);\n }; // Convert binary string (typed, when possible)\n\n\n exports.binstring2buf = function (str) {\n var buf = new utils.Buf8(str.length);\n\n for (var i = 0, len = buf.length; i < len; i++) {\n buf[i] = str.charCodeAt(i);\n }\n\n return buf;\n }; // convert array to string\n\n\n exports.buf2string = function (buf, max) {\n var i, out, c, c_len;\n var len = max || buf.length; // 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\n var utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n c = buf[i++]; // quick process ascii\n\n if (c < 0x80) {\n utf16buf[out++] = c;\n continue;\n }\n\n c_len = _utf8len[c]; // skip 5 & 6 byte codes\n\n if (c_len > 4) {\n utf16buf[out++] = 0xfffd;\n i += c_len - 1;\n continue;\n } // apply mask on first byte\n\n\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07; // join the rest\n\n while (c_len > 1 && i < len) {\n c = c << 6 | buf[i++] & 0x3f;\n c_len--;\n } // terminated by end of string?\n\n\n if (c_len > 1) {\n utf16buf[out++] = 0xfffd;\n continue;\n }\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 }; // 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);\n\n\n exports.utf8border = function (buf, max) {\n var pos;\n max = max || buf.length;\n\n if (max > buf.length) {\n max = buf.length;\n } // go back from last position, until start of sequence found\n\n\n pos = max - 1;\n\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) {\n pos--;\n } // Very small and broken sequence,\n // return max, because we should return something anyway.\n\n\n if (pos < 0) {\n return max;\n } // If we came to start of buffer - that means buffer is too small,\n // return max too.\n\n\n if (pos === 0) {\n return max;\n }\n\n return pos + _utf8len[buf[pos]] > max ? pos : max;\n };\n }, {\n \"./common\": 1\n }],\n 3: [function (require, module, exports) {\n 'use strict'; // 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 // (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 function 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 module.exports = adler32;\n }, {}],\n 4: [function (require, module, exports) {\n 'use strict'; // 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 // (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 // Use ordinary array, since untyped makes no boost here\n\n function makeTable() {\n var c,\n table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n\n for (var k = 0; k < 8; k++) {\n c = c & 1 ? 0xEDB88320 ^ c >>> 1 : c >>> 1;\n }\n\n table[n] = c;\n }\n\n return table;\n } // Create table on load. Just 255 signed longs. Not a problem.\n\n\n var crcTable = makeTable();\n\n function crc32(crc, buf, len, pos) {\n var t = crcTable,\n end = pos + len;\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 module.exports = crc32;\n }, {}],\n 5: [function (require, module, exports) {\n 'use strict'; // (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 var utils = require('../utils/common');\n\n var trees = require('./trees');\n\n var adler32 = require('./adler32');\n\n var crc32 = require('./crc32');\n\n var msg = require('./messages');\n /* Public constants ==========================================================*/\n\n /* ===========================================================================*/\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n\n\n var Z_NO_FLUSH = 0;\n var Z_PARTIAL_FLUSH = 1; //var Z_SYNC_FLUSH = 2;\n\n var Z_FULL_FLUSH = 3;\n var Z_FINISH = 4;\n var Z_BLOCK = 5; //var 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 */\n\n var Z_OK = 0;\n var Z_STREAM_END = 1; //var Z_NEED_DICT = 2;\n //var Z_ERRNO = -1;\n\n var Z_STREAM_ERROR = -2;\n var Z_DATA_ERROR = -3; //var Z_MEM_ERROR = -4;\n\n var Z_BUF_ERROR = -5; //var Z_VERSION_ERROR = -6;\n\n /* compression levels */\n //var Z_NO_COMPRESSION = 0;\n //var Z_BEST_SPEED = 1;\n //var Z_BEST_COMPRESSION = 9;\n\n var Z_DEFAULT_COMPRESSION = -1;\n var Z_FILTERED = 1;\n var Z_HUFFMAN_ONLY = 2;\n var Z_RLE = 3;\n var Z_FIXED = 4;\n var Z_DEFAULT_STRATEGY = 0;\n /* Possible values of the data_type field (though see inflate()) */\n //var Z_BINARY = 0;\n //var Z_TEXT = 1;\n //var Z_ASCII = 1; // = Z_TEXT\n\n var Z_UNKNOWN = 2;\n /* The deflate compression method */\n\n var Z_DEFLATED = 8;\n /*============================================================================*/\n\n var MAX_MEM_LEVEL = 9;\n /* Maximum value for memLevel in deflateInit2 */\n\n var MAX_WBITS = 15;\n /* 32K LZ77 window */\n\n var DEF_MEM_LEVEL = 8;\n var LENGTH_CODES = 29;\n /* number of length codes, not counting the special END_BLOCK code */\n\n var LITERALS = 256;\n /* number of literal bytes 0..255 */\n\n var L_CODES = LITERALS + 1 + LENGTH_CODES;\n /* number of Literal or Length codes, including the END_BLOCK code */\n\n var D_CODES = 30;\n /* number of distance codes */\n\n var BL_CODES = 19;\n /* number of codes used to transfer the bit lengths */\n\n var HEAP_SIZE = 2 * L_CODES + 1;\n /* maximum heap size */\n\n var MAX_BITS = 15;\n /* All codes must not exceed MAX_BITS bits */\n\n var MIN_MATCH = 3;\n var MAX_MATCH = 258;\n var MIN_LOOKAHEAD = MAX_MATCH + MIN_MATCH + 1;\n var PRESET_DICT = 0x20;\n var INIT_STATE = 42;\n var EXTRA_STATE = 69;\n var NAME_STATE = 73;\n var COMMENT_STATE = 91;\n var HCRC_STATE = 103;\n var BUSY_STATE = 113;\n var FINISH_STATE = 666;\n var BS_NEED_MORE = 1;\n /* block not completed, need more input or more output */\n\n var BS_BLOCK_DONE = 2;\n /* block flush performed */\n\n var BS_FINISH_STARTED = 3;\n /* finish started, need only more output at next deflate */\n\n var BS_FINISH_DONE = 4;\n /* finish done, accept no more input or output */\n\n var OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\n function err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n }\n\n function rank(f) {\n return (f << 1) - (f > 4 ? 9 : 0);\n }\n\n function zero(buf) {\n var len = buf.length;\n\n while (--len >= 0) {\n 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 */\n\n\n function flush_pending(strm) {\n var s = strm.state; //_tr_flush_bits(s);\n\n var len = s.pending;\n\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n\n if (len === 0) {\n return;\n }\n\n utils.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\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n }\n\n function flush_block_only(s, last) {\n trees._tr_flush_block(s, s.block_start >= 0 ? s.block_start : -1, s.strstart - s.block_start, last);\n\n s.block_start = s.strstart;\n flush_pending(s.strm);\n }\n\n function put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\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 */\n\n\n function 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 * 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 */\n\n\n function read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) {\n len = size;\n }\n\n if (len === 0) {\n return 0;\n }\n\n strm.avail_in -= len; // zmemcpy(buf, strm->next_in, len);\n\n utils.arraySet(buf, strm.input, strm.next_in, len, start);\n\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\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 return len;\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 */\n\n\n function longest_match(s, cur_match) {\n var chain_length = s.max_chain_length;\n /* max hash chain length */\n\n var scan = s.strstart;\n /* current string */\n\n var match;\n /* matched string */\n\n var len;\n /* length of current match */\n\n var best_len = s.prev_length;\n /* best match length so far */\n\n var nice_match = s.nice_match;\n /* stop if match long enough */\n\n var limit = s.strstart > s.w_size - MIN_LOOKAHEAD ? s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0\n /*NIL*/\n ;\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\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;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\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\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\n\n if (nice_match > s.lookahead) {\n nice_match = s.lookahead;\n } // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\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 || _win[match + best_len - 1] !== scan_end1 || _win[match] !== _win[scan] || _win[++match] !== _win[scan + 1]) {\n continue;\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\n\n scan += 2;\n match++; // 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\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && scan < strend); // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n\n if (len >= nice_match) {\n break;\n }\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\n return s.lookahead;\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 */\n\n\n function fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str; //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart; // JS ints have 32 bit, block below not needed\n\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 /* 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\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n utils.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\n s.block_start -= _w_size;\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\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\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\n if (s.strm.avail_in === 0) {\n break;\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\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n /* Initialize the hash value now that we have some input: */\n\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n\n s.ins_h = (s.ins_h << s.hash_shift ^ s.window[str + 1]) & s.hash_mask; //#if MIN_MATCH != 3\n // Call update_hash() MIN_MATCH-3 more times\n //#endif\n\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]) & s.hash_mask;\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\n if (s.lookahead + s.insert < MIN_MATCH) {\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 /* 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 */\n\n\n function 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 /* Copy as much as possible from input to output: */\n\n\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\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 fill_window(s);\n\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\n s.strstart += s.lookahead;\n s.lookahead = 0;\n /* Emit a stored block if pending_buf will be full: */\n\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\n flush_block_only(s, false);\n\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\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\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\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\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\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\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\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n }\n\n return BS_NEED_MORE;\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 */\n\n\n function deflate_fast(s, flush) {\n var hash_head;\n /* head of the hash chain */\n\n var bflush;\n /* 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\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n /* 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\n\n hash_head = 0\n /*NIL*/\n ;\n\n if (s.lookahead >= MIN_MATCH) {\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]) & 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 /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n\n\n if (hash_head !== 0\n /*NIL*/\n && 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\n if (s.match_length >= MIN_MATCH) {\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 = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n s.lookahead -= s.match_length;\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\n if (s.match_length <= s.max_lazy_match\n /*max_insert_length*/\n && s.lookahead >= MIN_MATCH) {\n s.match_length--;\n /* string at strstart already in table */\n\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n\n s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + MIN_MATCH - 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 /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n\n s.strstart++;\n } else {\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\n s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + 1]) & s.hash_mask; //#if MIN_MATCH != 3\n // Call UPDATE_HASH() MIN_MATCH-3 more times\n //#endif\n\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\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n }\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n }\n }\n\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n\n\n return BS_FINISH_DONE;\n }\n\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n }\n\n return BS_BLOCK_DONE;\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 */\n\n\n function deflate_slow(s, flush) {\n var hash_head;\n /* head of hash chain */\n\n var bflush;\n /* set if current block must be flushed */\n\n var max_insert;\n /* Process the input block. */\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\n if (s.lookahead < MIN_LOOKAHEAD && 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 }\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\n\n hash_head = 0\n /*NIL*/\n ;\n\n if (s.lookahead >= MIN_MATCH) {\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]) & 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 /* Find the longest match, discarding those <= prev_length.\n */\n\n\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0\n /*NIL*/\n && s.prev_length < s.max_lazy_match && s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD\n /*MAX_DIST(s)*/\n ) {\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 && (s.strategy === Z_FILTERED || s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096\n /*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;\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\n\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\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\n bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\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\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n\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]) & 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\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n\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\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._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\n s.strstart++;\n s.lookahead--;\n\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 } //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n\n\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n s.match_available = 0;\n }\n\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n\n\n return BS_FINISH_DONE;\n }\n\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n }\n\n return BS_BLOCK_DONE;\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 */\n\n\n function deflate_rle(s, flush) {\n var bflush;\n /* set if current block must be flushed */\n\n var prev;\n /* byte at distance one to match */\n\n var scan, strend;\n /* 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) {\n fill_window(s);\n\n if (s.lookahead <= MAX_MATCH && 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 }\n /* See how many times the previous byte repeats */\n\n\n s.match_length = 0;\n\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && scan < strend);\n\n s.match_length = MAX_MATCH - (strend - scan);\n\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\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\n\n if (s.match_length >= MIN_MATCH) {\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 = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\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\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n }\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\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\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n\n\n return BS_FINISH_DONE;\n }\n\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n }\n\n return BS_BLOCK_DONE;\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 */\n\n\n function deflate_huff(s, flush) {\n var bflush;\n /* 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\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n break;\n /* flush the current block */\n }\n }\n /* Output a literal byte */\n\n\n s.match_length = 0; //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\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\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n\n\n return BS_FINISH_DONE;\n }\n\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n }\n\n return BS_BLOCK_DONE;\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 */\n\n\n function 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\n var configuration_table;\n configuration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored),\n /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast),\n /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast),\n /* 2 */\n new Config(4, 6, 32, 32, deflate_fast),\n /* 3 */\n new Config(4, 4, 16, 16, deflate_slow),\n /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow),\n /* 5 */\n new Config(8, 16, 128, 128, deflate_slow),\n /* 6 */\n new Config(8, 32, 128, 256, deflate_slow),\n /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow),\n /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow)\n /* 9 max compression */\n ];\n /* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\n\n function lm_init(s) {\n s.window_size = 2 * s.w_size;\n /*** CLEAR_HASH(s); ***/\n\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\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;\n s.match_available = 0;\n s.ins_h = 0;\n }\n\n function DeflateState() {\n this.strm = null;\n /* pointer back to this zlib stream */\n\n this.status = 0;\n /* as the name implies */\n\n this.pending_buf = null;\n /* output still pending */\n\n this.pending_buf_size = 0;\n /* size of pending_buf */\n\n this.pending_out = 0;\n /* next pending byte to output to the stream */\n\n this.pending = 0;\n /* nb of bytes in the pending buffer */\n\n this.wrap = 0;\n /* bit 0 true for zlib, bit 1 true for gzip */\n\n this.gzhead = null;\n /* gzip header information to write */\n\n this.gzindex = 0;\n /* where in extra, name, or comment */\n\n this.method = Z_DEFLATED;\n /* can only be DEFLATED */\n\n this.last_flush = -1;\n /* value of flush param for previous deflate call */\n\n this.w_size = 0;\n /* LZ77 window size (32K by default) */\n\n this.w_bits = 0;\n /* log2(w_size) (8..16) */\n\n this.w_mask = 0;\n /* 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;\n /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0;\n /* hash index of string to be inserted */\n\n this.hash_size = 0;\n /* number of elements in hash table */\n\n this.hash_bits = 0;\n /* log2(hash_size) */\n\n this.hash_mask = 0;\n /* 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;\n /* length of best match */\n\n this.prev_match = 0;\n /* previous match */\n\n this.match_available = 0;\n /* set if previous match exists */\n\n this.strstart = 0;\n /* start of string to insert */\n\n this.match_start = 0;\n /* start of matching string */\n\n this.lookahead = 0;\n /* 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\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;\n /* compression level (1..9) */\n\n this.strategy = 0;\n /* 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;\n /* 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 // 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 // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n\n this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2);\n this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2);\n this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n this.l_desc = null;\n /* desc. for literal tree */\n\n this.d_desc = null;\n /* desc. for distance tree */\n\n this.bl_desc = null;\n /* desc. for bit length tree */\n //ush bl_count[MAX_BITS+1];\n\n this.bl_count = new utils.Buf16(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n\n this.heap = new utils.Buf16(2 * L_CODES + 1);\n /* heap used to build the Huffman trees */\n\n zero(this.heap);\n this.heap_len = 0;\n /* number of elements in the heap */\n\n this.heap_max = 0;\n /* element of largest frequency */\n\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 = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0;\n /* 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;\n /* 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;\n /* bit length of current block with optimal trees */\n\n this.static_len = 0;\n /* bit length of current block with static trees */\n\n this.matches = 0;\n /* number of string matches in current block */\n\n this.insert = 0;\n /* bytes at end of window left to insert */\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\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 // 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\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 function 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 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\n s.status = s.wrap ? INIT_STATE : BUSY_STATE;\n strm.adler = s.wrap === 2 ? 0 // crc32(0, Z_NULL, 0)\n : 1; // adler32(0, Z_NULL, 0)\n\n s.last_flush = Z_NO_FLUSH;\n\n trees._tr_init(s);\n\n return Z_OK;\n }\n\n function deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n\n return ret;\n }\n\n function deflateSetHeader(strm, head) {\n if (!strm || !strm.state) {\n return Z_STREAM_ERROR;\n }\n\n if (strm.state.wrap !== 2) {\n return Z_STREAM_ERROR;\n }\n\n strm.state.gzhead = head;\n return Z_OK;\n }\n\n function deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) {\n // === Z_NULL\n return Z_STREAM_ERROR;\n }\n\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) {\n /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n } else if (windowBits > 15) {\n wrap = 2;\n /* write gzip wrapper instead */\n\n windowBits -= 16;\n }\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED || windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n\n var s = new DeflateState();\n strm.state = s;\n s.strm = strm;\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 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) / MIN_MATCH);\n s.window = new utils.Buf8(s.w_size * 2);\n s.head = new utils.Buf16(s.hash_size);\n s.prev = new utils.Buf16(s.w_size); // 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;\n /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4; //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n\n s.pending_buf = new utils.Buf8(s.pending_buf_size); // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n\n s.d_buf = 1 * s.lit_bufsize; //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n\n s.l_buf = (1 + 2) * s.lit_bufsize;\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n return deflateReset(strm);\n }\n\n function deflateInit(strm, level) {\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n }\n\n function deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state || 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 || !strm.input && strm.avail_in !== 0 || 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;\n /* just in case */\n\n old_flush = s.last_flush;\n s.last_flush = flush;\n /* Write the header */\n\n if (s.status === INIT_STATE) {\n if (s.wrap === 2) {\n // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n\n if (!s.gzhead) {\n // 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 : s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? 4 : 0);\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n } else {\n put_byte(s, (s.gzhead.text ? 1 : 0) + (s.gzhead.hcrc ? 2 : 0) + (!s.gzhead.extra ? 0 : 4) + (!s.gzhead.name ? 0 : 8) + (!s.gzhead.comment ? 0 : 16));\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 : s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? 4 : 0);\n put_byte(s, s.gzhead.os & 0xff);\n\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\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n\n s.gzindex = 0;\n s.status = EXTRA_STATE;\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\n header |= level_flags << 6;\n\n if (s.strstart !== 0) {\n header |= PRESET_DICT;\n }\n\n header += 31 - header % 31;\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n /* Save the adler32 of the preset dictionary: */\n\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n } //#ifdef GZIP\n\n\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra\n /* != Z_NULL*/\n ) {\n beg = s.pending;\n /* 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\n flush_pending(strm);\n beg = s.pending;\n\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n } else {\n s.status = NAME_STATE;\n }\n }\n\n if (s.status === NAME_STATE) {\n if (s.gzhead.name\n /* != Z_NULL*/\n ) {\n beg = s.pending;\n /* 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\n flush_pending(strm);\n beg = s.pending;\n\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n } // JS specific: little magic to add zero terminator to end of string\n\n\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\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\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n } else {\n s.status = COMMENT_STATE;\n }\n }\n\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment\n /* != Z_NULL*/\n ) {\n beg = s.pending;\n /* 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\n flush_pending(strm);\n beg = s.pending;\n\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n } // JS specific: little magic to add zero terminator to end of string\n\n\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\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\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n } else {\n s.status = HCRC_STATE;\n }\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\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\n s.status = BUSY_STATE;\n }\n } else {\n s.status = BUSY_STATE;\n }\n } //#endif\n\n /* Flush as much pending output as possible */\n\n\n if (s.pending !== 0) {\n flush_pending(strm);\n\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 /* 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\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) && flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n /* User must not provide more input after the first FINISH: */\n\n\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n /* Start a new block or continue the current one.\n */\n\n\n if (strm.avail_in !== 0 || s.lookahead !== 0 || flush !== Z_NO_FLUSH && s.status !== FINISH_STATE) {\n var bstate = s.strategy === Z_HUFFMAN_ONLY ? deflate_huff(s, flush) : s.strategy === Z_RLE ? deflate_rle(s, flush) : configuration_table[s.level].func(s, flush);\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\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\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\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n trees._tr_align(s);\n } else if (flush !== Z_BLOCK) {\n /* FULL_FLUSH or SYNC_FLUSH */\n trees._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\n\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/\n\n /* forget history */\n zero(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\n flush_pending(strm);\n\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR at next call, see above */\n\n return Z_OK;\n }\n }\n } //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n\n if (flush !== Z_FINISH) {\n return Z_OK;\n }\n\n if (s.wrap <= 0) {\n return Z_STREAM_END;\n }\n /* Write the trailer */\n\n\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 } else {\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\n if (s.wrap > 0) {\n s.wrap = -s.wrap;\n }\n /* write the trailer only once! */\n\n\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n }\n\n function deflateEnd(strm) {\n var status;\n\n if (!strm\n /*== Z_NULL*/\n || !strm.state\n /*== Z_NULL*/\n ) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n\n if (status !== INIT_STATE && status !== EXTRA_STATE && status !== NAME_STATE && status !== COMMENT_STATE && status !== HCRC_STATE && status !== BUSY_STATE && status !== FINISH_STATE) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n }\n /* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\n\n\n function deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\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\n /*== Z_NULL*/\n || !strm.state\n /*== Z_NULL*/\n ) {\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 /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n\n\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;\n /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n\n if (dictLength >= s.w_size) {\n if (wrap === 0) {\n /* already empty otherwise */\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\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\n\n tmpDict = new utils.Buf8(s.w_size);\n utils.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\n\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\n while (s.lookahead >= MIN_MATCH) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH - 1);\n\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]) & s.hash_mask;\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\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;\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 exports.deflateInit = deflateInit;\n exports.deflateInit2 = deflateInit2;\n exports.deflateReset = deflateReset;\n exports.deflateResetKeep = deflateResetKeep;\n exports.deflateSetHeader = deflateSetHeader;\n exports.deflate = deflate;\n exports.deflateEnd = deflateEnd;\n exports.deflateSetDictionary = deflateSetDictionary;\n exports.deflateInfo = 'pako deflate (from Nodeca project)';\n /* Not implemented\n exports.deflateBound = deflateBound;\n exports.deflateCopy = deflateCopy;\n exports.deflateParams = deflateParams;\n exports.deflatePending = deflatePending;\n exports.deflatePrime = deflatePrime;\n exports.deflateTune = deflateTune;\n */\n }, {\n \"../utils/common\": 1,\n \"./adler32\": 3,\n \"./crc32\": 4,\n \"./messages\": 6,\n \"./trees\": 7\n }],\n 6: [function (require, module, exports) {\n 'use strict'; // (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 module.exports = {\n 2: 'need dictionary',\n\n /* Z_NEED_DICT 2 */\n 1: 'stream end',\n\n /* Z_STREAM_END 1 */\n 0: '',\n\n /* Z_OK 0 */\n '-1': 'file error',\n\n /* Z_ERRNO (-1) */\n '-2': 'stream error',\n\n /* Z_STREAM_ERROR (-2) */\n '-3': 'data error',\n\n /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory',\n\n /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error',\n\n /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version'\n /* Z_VERSION_ERROR (-6) */\n\n };\n }, {}],\n 7: [function (require, module, exports) {\n 'use strict'; // (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 /* eslint-disable space-unary-ops */\n\n var utils = require('../utils/common');\n /* Public constants ==========================================================*/\n\n /* ===========================================================================*/\n //var Z_FILTERED = 1;\n //var Z_HUFFMAN_ONLY = 2;\n //var Z_RLE = 3;\n\n\n var Z_FIXED = 4; //var Z_DEFAULT_STRATEGY = 0;\n\n /* Possible values of the data_type field (though see inflate()) */\n\n var Z_BINARY = 0;\n var Z_TEXT = 1; //var Z_ASCII = 1; // = Z_TEXT\n\n var Z_UNKNOWN = 2;\n /*============================================================================*/\n\n function zero(buf) {\n var len = buf.length;\n\n while (--len >= 0) {\n buf[len] = 0;\n }\n } // From zutil.h\n\n\n var STORED_BLOCK = 0;\n var STATIC_TREES = 1;\n var DYN_TREES = 2;\n /* The three kinds of block type */\n\n var MIN_MATCH = 3;\n var MAX_MATCH = 258;\n /* The minimum and maximum match lengths */\n // From deflate.h\n\n /* ===========================================================================\n * Internal compression state.\n */\n\n var LENGTH_CODES = 29;\n /* number of length codes, not counting the special END_BLOCK code */\n\n var LITERALS = 256;\n /* number of literal bytes 0..255 */\n\n var L_CODES = LITERALS + 1 + LENGTH_CODES;\n /* number of Literal or Length codes, including the END_BLOCK code */\n\n var D_CODES = 30;\n /* number of distance codes */\n\n var BL_CODES = 19;\n /* number of codes used to transfer the bit lengths */\n\n var HEAP_SIZE = 2 * L_CODES + 1;\n /* maximum heap size */\n\n var MAX_BITS = 15;\n /* All codes must not exceed MAX_BITS bits */\n\n var Buf_size = 16;\n /* size of bit buffer in bi_buf */\n\n /* ===========================================================================\n * Constants\n */\n\n var MAX_BL_BITS = 7;\n /* Bit length codes must not exceed MAX_BL_BITS bits */\n\n var END_BLOCK = 256;\n /* end of block literal code */\n\n var REP_3_6 = 16;\n /* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\n var REPZ_3_10 = 17;\n /* repeat a zero length 3-10 times (3 bits of repeat count) */\n\n var 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 */\n\n var extra_lbits =\n /* 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 var extra_dbits =\n /* 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 var extra_blbits =\n /* 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 var bl_order = [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 // We pre-fill arrays with 0 to avoid uninitialized gaps\n\n var DIST_CODE_LEN = 512;\n /* see definition of array dist_code below */\n // !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\n\n var static_ltree = new Array((L_CODES + 2) * 2);\n zero(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\n var static_dtree = new Array(D_CODES * 2);\n zero(static_dtree);\n /* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\n var _dist_code = new Array(DIST_CODE_LEN);\n\n zero(_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\n var _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\n\n zero(_length_code);\n /* length code for each normalized match length (0 == MIN_MATCH) */\n\n var base_length = new Array(LENGTH_CODES);\n zero(base_length);\n /* First normalized length for each code (0 = MIN_MATCH) */\n\n var base_dist = new Array(D_CODES);\n zero(base_dist);\n /* First normalized distance for each code (0 = distance of 1) */\n\n function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n this.static_tree = static_tree;\n /* static tree or NULL */\n\n this.extra_bits = extra_bits;\n /* extra bits for each code or NULL */\n\n this.extra_base = extra_base;\n /* base index for extra_bits */\n\n this.elems = elems;\n /* max number of elements in the tree */\n\n this.max_length = max_length;\n /* max bit length for the codes */\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n\n this.has_stree = static_tree && static_tree.length;\n }\n\n var static_l_desc;\n var static_d_desc;\n var static_bl_desc;\n\n function TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree;\n /* the dynamic tree */\n\n this.max_code = 0;\n /* largest code with non zero frequency */\n\n this.stat_desc = stat_desc;\n /* the corresponding static tree */\n }\n\n function d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n }\n /* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\n\n\n function 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 * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\n\n\n function 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 function send_code(s, c, tree) {\n send_bits(s, tree[c * 2]\n /*.Code*/\n , tree[c * 2 + 1]\n /*.Len*/\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 */\n\n\n function bi_reverse(code, len) {\n var res = 0;\n\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n\n return res >>> 1;\n }\n /* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\n\n\n function 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 } 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 * 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 */\n\n\n function gen_bitlen(s, desc) // 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;\n /* heap index */\n\n var n, m;\n /* iterate over the tree elements */\n\n var bits;\n /* bit length */\n\n var xbits;\n /* extra bits */\n\n var f;\n /* frequency */\n\n var overflow = 0;\n /* 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 /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n\n\n tree[s.heap[s.heap_max] * 2 + 1]\n /*.Len*/\n = 0;\n /* 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]\n /*.Dad*/\n * 2 + 1]\n /*.Len*/\n + 1;\n\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n\n tree[n * 2 + 1]\n /*.Len*/\n = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) {\n continue;\n }\n /* not a leaf node */\n\n\n s.bl_count[bits]++;\n xbits = 0;\n\n if (n >= base) {\n xbits = extra[n - base];\n }\n\n f = tree[n * 2]\n /*.Freq*/\n ;\n s.opt_len += f * (bits + xbits);\n\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]\n /*.Len*/\n + xbits);\n }\n }\n\n if (overflow === 0) {\n return;\n } // Trace((stderr,\"\\nbit length overflow\\n\"));\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\n\n do {\n bits = max_length - 1;\n\n while (s.bl_count[bits] === 0) {\n bits--;\n }\n\n s.bl_count[bits]--;\n /* move one leaf down the tree */\n\n s.bl_count[bits + 1] += 2;\n /* move one overflow item as its brother */\n\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\n overflow -= 2;\n } while (overflow > 0);\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\n\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n\n while (n !== 0) {\n m = s.heap[--h];\n\n if (m > max_code) {\n continue;\n }\n\n if (tree[m * 2 + 1]\n /*.Len*/\n !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]\n /*.Len*/\n ) * tree[m * 2]\n /*.Freq*/\n ;\n tree[m * 2 + 1]\n /*.Len*/\n = bits;\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 */\n\n\n function gen_codes(tree, max_code, bl_count) // 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);\n /* next code value for each bit length */\n\n var code = 0;\n /* running code value */\n\n var bits;\n /* bit index */\n\n var n;\n /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\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< length code (0..28) */\n\n length = 0;\n\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n\n for (n = 0; n < 1 << extra_lbits[code]; n++) {\n _length_code[length++] = code;\n }\n } //Assert (length == 256, \"tr_static_init: length != 256\");\n\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\n\n _length_code[length - 1] = code;\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n\n dist = 0;\n\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n\n for (n = 0; n < 1 << extra_dbits[code]; n++) {\n _dist_code[dist++] = code;\n }\n } //Assert (dist == 256, \"tr_static_init: dist != 256\");\n\n\n dist >>= 7;\n /* from now on, all distances are divided by 128 */\n\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n\n for (n = 0; n < 1 << extra_dbits[code] - 7; n++) {\n _dist_code[256 + dist++] = code;\n }\n } //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n\n while (n <= 143) {\n static_ltree[n * 2 + 1]\n /*.Len*/\n = 8;\n n++;\n bl_count[8]++;\n }\n\n while (n <= 255) {\n static_ltree[n * 2 + 1]\n /*.Len*/\n = 9;\n n++;\n bl_count[9]++;\n }\n\n while (n <= 279) {\n static_ltree[n * 2 + 1]\n /*.Len*/\n = 7;\n n++;\n bl_count[7]++;\n }\n\n while (n <= 287) {\n static_ltree[n * 2 + 1]\n /*.Len*/\n = 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\n\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n /* The static distance tree is trivial: */\n\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]\n /*.Len*/\n = 5;\n static_dtree[n * 2]\n /*.Code*/\n = bi_reverse(n, 5);\n } // Now data ready and we can init static trees\n\n\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); //static_init_done = true;\n }\n /* ===========================================================================\n * Initialize a new block.\n */\n\n\n function init_block(s) {\n var n;\n /* iterates over tree elements */\n\n /* Initialize the trees. */\n\n for (n = 0; n < L_CODES; n++) {\n s.dyn_ltree[n * 2]\n /*.Freq*/\n = 0;\n }\n\n for (n = 0; n < D_CODES; n++) {\n s.dyn_dtree[n * 2]\n /*.Freq*/\n = 0;\n }\n\n for (n = 0; n < BL_CODES; n++) {\n s.bl_tree[n * 2]\n /*.Freq*/\n = 0;\n }\n\n s.dyn_ltree[END_BLOCK * 2]\n /*.Freq*/\n = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n }\n /* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\n\n\n function bi_windup(s) {\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\n s.bi_buf = 0;\n s.bi_valid = 0;\n }\n /* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\n\n\n function copy_block(s, buf, len, header) //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);\n /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n } // while (len--) {\n // put_byte(s, *buf++);\n // }\n\n\n utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\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 */\n\n\n function smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n\n var _m2 = m * 2;\n\n return tree[_n2]\n /*.Freq*/\n < tree[_m2]\n /*.Freq*/\n || tree[_n2]\n /*.Freq*/\n === tree[_m2]\n /*.Freq*/\n && depth[n] <= depth[m];\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 */\n\n\n function pqdownheap(s, tree, k) // 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;\n /* left son of k */\n\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len && smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n\n\n if (smaller(tree, v, s.heap[j], s.depth)) {\n break;\n }\n /* Exchange v with the smallest son */\n\n\n s.heap[k] = s.heap[j];\n k = j;\n /* And continue down the tree, setting j to the left son of k */\n\n j <<= 1;\n }\n\n s.heap[k] = v;\n } // inlined manually\n // var SMALLEST = 1;\n\n /* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\n\n\n function compress_block(s, ltree, dtree) // deflate_state *s;\n // const ct_data *ltree; /* literal tree */\n // const ct_data *dtree; /* distance tree */\n {\n var dist;\n /* distance of matched string */\n\n var lc;\n /* match length or unmatched char (if dist == 0) */\n\n var lx = 0;\n /* running index in l_buf */\n\n var code;\n /* the code to send */\n\n var extra;\n /* 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);\n /* 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);\n /* send the length code */\n\n extra = extra_lbits[code];\n\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra);\n /* send the extra length bits */\n }\n\n dist--;\n /* dist is now the match distance - 1 */\n\n code = d_code(dist); //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree);\n /* send the distance code */\n\n extra = extra_dbits[code];\n\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra);\n /* send the extra distance bits */\n }\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 * 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 */\n\n\n function build_tree(s, desc) // 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;\n /* iterate over heap elements */\n\n var max_code = -1;\n /* largest code with non zero frequency */\n\n var node;\n /* 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\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]\n /*.Freq*/\n !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n } else {\n tree[n * 2 + 1]\n /*.Len*/\n = 0;\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\n\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = max_code < 2 ? ++max_code : 0;\n tree[node * 2]\n /*.Freq*/\n = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]\n /*.Len*/\n ;\n }\n /* node is 0 or 1 so it does not have extra bits */\n\n }\n\n desc.max_code = max_code;\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n\n for (n = s.heap_len >> 1\n /*int /2*/\n ; n >= 1; n--) {\n pqdownheap(s, tree, n);\n }\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n\n\n node = elems;\n /* next internal node of the tree */\n\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n\n /*** pqremove ***/\n n = s.heap[1\n /*SMALLEST*/\n ];\n s.heap[1\n /*SMALLEST*/\n ] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1\n /*SMALLEST*/\n );\n /***/\n\n m = s.heap[1\n /*SMALLEST*/\n ];\n /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n;\n /* keep the nodes sorted by frequency */\n\n s.heap[--s.heap_max] = m;\n /* Create a new node father of n and m */\n\n tree[node * 2]\n /*.Freq*/\n = tree[n * 2]\n /*.Freq*/\n + tree[m * 2]\n /*.Freq*/\n ;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]\n /*.Dad*/\n = tree[m * 2 + 1]\n /*.Dad*/\n = node;\n /* and insert the new node in the heap */\n\n s.heap[1\n /*SMALLEST*/\n ] = node++;\n pqdownheap(s, tree, 1\n /*SMALLEST*/\n );\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1\n /*SMALLEST*/\n ];\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n\n gen_bitlen(s, desc);\n /* The field len is now set, we can generate the bit codes */\n\n gen_codes(tree, max_code, s.bl_count);\n }\n /* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\n\n\n function scan_tree(s, tree, max_code) // 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;\n /* iterates over all tree elements */\n\n var prevlen = -1;\n /* last emitted length */\n\n var curlen;\n /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]\n /*.Len*/\n ;\n /* length of next code */\n\n var count = 0;\n /* repeat count of the current code */\n\n var max_count = 7;\n /* max repeat count */\n\n var min_count = 4;\n /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n tree[(max_code + 1) * 2 + 1]\n /*.Len*/\n = 0xffff;\n /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]\n /*.Len*/\n ;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]\n /*.Freq*/\n += count;\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n s.bl_tree[curlen * 2] /*.Freq*/++;\n }\n\n s.bl_tree[REP_3_6 * 2] /*.Freq*/++;\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2] /*.Freq*/++;\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 } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n }\n /* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\n\n\n function send_tree(s, tree, max_code) // 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;\n /* iterates over all tree elements */\n\n var prevlen = -1;\n /* last emitted length */\n\n var curlen;\n /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]\n /*.Len*/\n ;\n /* length of next code */\n\n var count = 0;\n /* repeat count of the current code */\n\n var max_count = 7;\n /* max repeat count */\n\n var min_count = 4;\n /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */\n\n /* guard already set */\n\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]\n /*.Len*/\n ;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n } else if (count < min_count) {\n do {\n send_code(s, curlen, s.bl_tree);\n } while (--count !== 0);\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n } //Assert(count >= 3 && count <= 6, \" 3_6?\");\n\n\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\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\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n } else {\n max_count = 7;\n min_count = 4;\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 */\n\n\n function build_bl_tree(s) {\n var max_blindex;\n /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n\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 /* Build the bit length tree: */\n\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\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]\n /*.Len*/\n !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n\n\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4; //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\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 */\n\n\n function send_all_trees(s, lcodes, dcodes, blcodes) // deflate_state *s;\n // int lcodes, dcodes, blcodes; /* number of codes for each tree */\n {\n var rank;\n /* index in bl_order */\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\n send_bits(s, lcodes - 257, 5);\n /* not +255 as stated in appnote.txt */\n\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4);\n /* not -3 as stated in appnote.txt */\n\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]\n /*.Len*/\n , 3);\n } //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n\n send_tree(s, s.dyn_ltree, lcodes - 1);\n /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1);\n /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\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 */\n\n\n function 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 /* Check for non-textual (\"black-listed\") bytes. */\n\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if (black_mask & 1 && s.dyn_ltree[n * 2]\n /*.Freq*/\n !== 0) {\n return Z_BINARY;\n }\n }\n /* Check for textual (\"white-listed\") bytes. */\n\n\n if (s.dyn_ltree[9 * 2]\n /*.Freq*/\n !== 0 || s.dyn_ltree[10 * 2]\n /*.Freq*/\n !== 0 || s.dyn_ltree[13 * 2]\n /*.Freq*/\n !== 0) {\n return Z_TEXT;\n }\n\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]\n /*.Freq*/\n !== 0) {\n return Z_TEXT;\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\n\n return Z_BINARY;\n }\n\n var static_init_done = false;\n /* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\n\n function _tr_init(s) {\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 s.bi_buf = 0;\n s.bi_valid = 0;\n /* Initialize the first block of the first file: */\n\n init_block(s);\n }\n /* ===========================================================================\n * Send a stored block\n */\n\n\n function _tr_stored_block(s, buf, stored_len, last) //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 {\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);\n /* send block type */\n\n copy_block(s, buf, stored_len, true);\n /* with header */\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 */\n\n\n function _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 * 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 */\n\n\n function _tr_flush_block(s, buf, stored_len, last) //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 {\n var opt_lenb, static_lenb;\n /* opt_len and static_len in bytes */\n\n var max_blindex = 0;\n /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n\n if (s.level > 0) {\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 /* Construct the literal and distance trees */\n\n\n build_tree(s, s.l_desc); // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc); // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\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\n max_blindex = build_bl_tree(s);\n /* Determine the best encoding. Compute the block lengths in bytes. */\n\n opt_lenb = s.opt_len + 3 + 7 >>> 3;\n static_lenb = s.static_len + 3 + 7 >>> 3; // 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) {\n opt_lenb = static_lenb;\n }\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5;\n /* 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 } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\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 } // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n\n\n init_block(s);\n\n if (last) {\n bi_windup(s);\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 */\n\n\n function _tr_tally(s, dist, lc) // deflate_state *s;\n // unsigned dist; /* distance of matched string */\n // unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n {\n //var out_length, in_length, dcode;\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 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\n dist--;\n /* 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 } // (!) This block is disabled in zlib defaults,\n // don't enable it for binary compatibility\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\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 exports._tr_init = _tr_init;\n exports._tr_stored_block = _tr_stored_block;\n exports._tr_flush_block = _tr_flush_block;\n exports._tr_tally = _tr_tally;\n exports._tr_align = _tr_align;\n }, {\n \"../utils/common\": 1\n }],\n 8: [function (require, module, exports) {\n 'use strict'; // (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 function ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n\n this.next_in = 0;\n /* number of bytes available at input */\n\n this.avail_in = 0;\n /* total number of input bytes read so far */\n\n this.total_in = 0;\n /* next output byte should be put there */\n\n this.output = null; // JS specific, because we have no pointers\n\n this.next_out = 0;\n /* remaining free space at output */\n\n this.avail_out = 0;\n /* total number of bytes output so far */\n\n this.total_out = 0;\n /* last error message, NULL if no error */\n\n this.msg = ''\n /*Z_NULL*/\n ;\n /* not visible by applications */\n\n this.state = null;\n /* best guess about the data type: binary or text */\n\n this.data_type = 2\n /*Z_UNKNOWN*/\n ;\n /* adler32 value of the uncompressed data */\n\n this.adler = 0;\n }\n\n module.exports = ZStream;\n }, {}],\n \"/lib/deflate.js\": [function (require, module, exports) {\n 'use strict';\n\n var zlib_deflate = require('./zlib/deflate');\n\n var utils = require('./utils/common');\n\n var strings = require('./utils/strings');\n\n var msg = require('./zlib/messages');\n\n var ZStream = require('./zlib/zstream');\n\n var toString = Object.prototype.toString;\n /* Public constants ==========================================================*/\n\n /* ===========================================================================*/\n\n var Z_NO_FLUSH = 0;\n var Z_FINISH = 4;\n var Z_OK = 0;\n var Z_STREAM_END = 1;\n var Z_SYNC_FLUSH = 2;\n var Z_DEFAULT_COMPRESSION = -1;\n var Z_DEFAULT_STRATEGY = 0;\n var Z_DEFLATED = 8;\n /* ===========================================================================*/\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 **/\n\n function Deflate(options) {\n if (!(this instanceof Deflate)) return new Deflate(options);\n this.options = utils.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 var opt = this.options;\n\n if (opt.raw && opt.windowBits > 0) {\n opt.windowBits = -opt.windowBits;\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\n this.msg = ''; // error message\n\n this.ended = false; // used to avoid multiple onEnd() calls\n\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n var status = zlib_deflate.deflateInit2(this.strm, opt.level, opt.method, opt.windowBits, opt.memLevel, opt.strategy);\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n zlib_deflate.deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n var dict; // Convert data if needed\n\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = zlib_deflate.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 * 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 **/\n\n\n Deflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n\n var status, _mode;\n\n if (this.ended) {\n return false;\n }\n\n _mode = mode === ~~mode ? mode : mode === true ? Z_FINISH : Z_NO_FLUSH; // Convert data if needed\n\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(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 = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = zlib_deflate.deflate(strm, _mode);\n /* 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\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(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END); // Finalize on the last chunk.\n\n\n if (_mode === Z_FINISH) {\n status = zlib_deflate.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n } // callback interim results if Z_SYNC_FLUSH.\n\n\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 * 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 **/\n\n\n Deflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\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 **/\n\n\n Deflate.prototype.onEnd = function (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 = utils.flattenChunks(this.chunks);\n }\n }\n\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\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 **/\n\n\n function deflate(input, options) {\n var deflator = new Deflate(options);\n deflator.push(input, true); // That will never happens, if you don't cheat with options :)\n\n if (deflator.err) {\n throw deflator.msg || msg[deflator.err];\n }\n\n return deflator.result;\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 **/\n\n\n function deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate(input, options);\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 **/\n\n\n function gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate(input, options);\n }\n\n exports.Deflate = Deflate;\n exports.deflate = deflate;\n exports.deflateRaw = deflateRaw;\n exports.gzip = gzip;\n }, {\n \"./utils/common\": 1,\n \"./utils/strings\": 2,\n \"./zlib/deflate\": 5,\n \"./zlib/messages\": 6,\n \"./zlib/zstream\": 8\n }]\n }, {}, [])(\"/lib/deflate.js\");\n});","function createThunkMiddleware(extraArgument) {\n return function (_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n if (typeof action === 'function') {\n return action(dispatch, getState, extraArgument);\n }\n\n return next(action);\n };\n };\n };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","/**\n * @hidden\n */\nexport var classNames = function classNames() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return args.filter(function (arg) {\n return arg !== true && !!arg;\n }).map(function (arg) {\n return Array.isArray(arg) ? classNames.apply(void 0, arg) : typeof arg === 'object' ? Object.keys(arg).map(function (key, idx) {\n return arg[idx] || arg[key] && key || null;\n }).filter(function (el) {\n return el !== null;\n }).join(' ') : arg;\n }).filter(function (arg) {\n return !!arg;\n }).join(' ');\n};","/* tslint:disable:no-bitwise */\n\n/**\n * @hidden\n */\nvar guid = function guid() {\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);\n }\n\n return id;\n};\n\nexport { guid };","/**\n * @hidden\n */\nvar 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};\nexport { Keys };","/**\n * @hidden\n */\nvar noop = function noop() {};\n\nexport { noop };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from './classNames';\n/**\n * @hidden\n */\n\nvar FloatingLabel =\n/** @class */\nfunction (_super) {\n __extends(FloatingLabel, _super);\n\n function FloatingLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.state = {\n focused: false\n };\n\n _this.handleFocus = function (_) {\n _this.setState({\n focused: true\n });\n };\n\n _this.handleBlur = function (_) {\n _this.setState({\n focused: false\n });\n };\n\n return _this;\n }\n\n FloatingLabel.prototype.render = function () {\n var _a = this.props,\n label = _a.label,\n id = _a.id,\n className = _a.className,\n value = _a.value,\n placeholder = _a.placeholder,\n valid = _a.valid,\n style = _a.style;\n var childClassNames = classNames({\n 'k-textbox-container': true,\n 'k-state-focused': this.state.focused,\n 'k-state-empty': !(value || placeholder),\n 'k-state-invalid': !valid && valid !== undefined,\n 'k-rtl': this.props.dir === 'rtl'\n }, className);\n return React.createElement(\"span\", {\n className: childClassNames,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n style: style,\n dir: this.props.dir\n }, this.props.children, label ? id ? React.createElement(\"label\", {\n htmlFor: id,\n className: \"k-label\"\n }, label) : React.createElement(\"span\", {\n className: \"k-label\"\n }, label) : null);\n };\n\n FloatingLabel.propTypes = {\n label: PropTypes.string,\n id: PropTypes.string,\n value: PropTypes.string,\n placeholder: PropTypes.string,\n valid: PropTypes.bool\n };\n return FloatingLabel;\n}(React.Component);\n\nexport default FloatingLabel;","/**\n * @hidden\n */\nvar isServerRendering = function isServerRendering() {\n return typeof window === 'undefined';\n};\n\nexport { isServerRendering };","var proxy = function proxy(a, b) {\n return function (e) {\n return b(a(e));\n };\n};\n\nvar bind = function bind(el, event, callback) {\n return el.addEventListener && el.addEventListener(event, callback);\n};\n\nvar unbind = function unbind(el, event, callback) {\n return el && el.removeEventListener && el.removeEventListener(event, callback);\n};\n\nvar noop = function noop() {\n /* empty */\n};\n\nvar preventDefault = function preventDefault(e) {\n return e.preventDefault();\n};\n\nvar touchRegExp = /touch/; // 300ms is the usual mouse interval;\n// // However, an underpowered mobile device under a heavy load may queue mouse events for a longer period.\n\nvar IGNORE_MOUSE_TIMEOUT = 2000;\n\nfunction normalizeEvent(e) {\n if (e.type.match(touchRegExp)) {\n return {\n pageX: e.changedTouches[0].pageX,\n pageY: e.changedTouches[0].pageY,\n clientX: e.changedTouches[0].clientX,\n clientY: e.changedTouches[0].clientY,\n type: e.type,\n originalEvent: e,\n isTouch: true\n };\n }\n\n return {\n pageX: e.pageX,\n pageY: e.pageY,\n clientX: e.clientX,\n clientY: e.clientY,\n offsetX: e.offsetX,\n offsetY: e.offsetY,\n type: e.type,\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey,\n altKey: e.altKey,\n originalEvent: e\n };\n}\n\nexport var Draggable = function Draggable(ref) {\n var this$1 = this;\n var press = ref.press;\n if (press === void 0) press = noop;\n var drag = ref.drag;\n if (drag === void 0) drag = noop;\n var release = ref.release;\n if (release === void 0) release = noop;\n var mouseOnly = ref.mouseOnly;\n if (mouseOnly === void 0) mouseOnly = false;\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._ignoreMouse = false;\n this._mouseOnly = mouseOnly;\n this._touchAction;\n\n this._touchstart = function (e) {\n if (e.touches.length === 1) {\n this$1._pressHandler(e);\n }\n };\n\n this._touchmove = function (e) {\n if (e.touches.length === 1) {\n this$1._dragHandler(e);\n }\n };\n\n this._touchend = function (e) {\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 if (e.touches.length === 0 && e.changedTouches.length === 1) {\n this$1._releaseHandler(e);\n\n this$1._ignoreMouse = true;\n setTimeout(this$1._restoreMouse, IGNORE_MOUSE_TIMEOUT);\n }\n };\n\n this._restoreMouse = function () {\n this$1._ignoreMouse = false;\n };\n\n this._mousedown = function (e) {\n var which = e.which;\n\n if (which && which > 1 || this$1._ignoreMouse) {\n return;\n }\n\n bind(document, \"mousemove\", this$1._mousemove);\n bind(document, \"mouseup\", this$1._mouseup);\n\n this$1._pressHandler(e);\n };\n\n this._mousemove = function (e) {\n this$1._dragHandler(e);\n };\n\n this._mouseup = function (e) {\n unbind(document, \"mousemove\", this$1._mousemove);\n unbind(document, \"mouseup\", this$1._mouseup);\n\n this$1._releaseHandler(e);\n };\n\n this._pointerdown = function (e) {\n if (e.isPrimary && e.button === 0) {\n bind(document, \"pointermove\", this$1._pointermove);\n bind(document, \"pointerup\", this$1._pointerup);\n bind(document, \"pointercancel\", this$1._pointerup);\n bind(document, \"contextmenu\", preventDefault);\n this$1._touchAction = e.target.style.touchAction;\n e.target.style.touchAction = \"none\";\n\n this$1._pressHandler(e);\n }\n };\n\n this._pointermove = function (e) {\n if (e.isPrimary) {\n this$1._dragHandler(e);\n }\n };\n\n this._pointerup = function (e) {\n if (e.isPrimary) {\n unbind(document, \"pointermove\", this$1._pointermove);\n unbind(document, \"pointerup\", this$1._pointerup);\n unbind(document, \"pointercancel\", this$1._pointerup);\n unbind(document, \"contextmenu\", preventDefault);\n e.target.style.touchAction = this$1._touchAction;\n\n this$1._releaseHandler(e);\n }\n };\n};\n\nDraggable.supportPointerEvent = function supportPointerEvent() {\n return typeof window !== 'undefined' && window.PointerEvent;\n};\n\nDraggable.prototype.bindTo = function bindTo(element) {\n if (element === this._element) {\n return;\n }\n\n if (this._element) {\n this._unbindFromCurrent();\n }\n\n this._element = element;\n\n this._bindToCurrent();\n};\n\nDraggable.prototype._bindToCurrent = function _bindToCurrent() {\n var element = this._element;\n\n if (this._usePointers()) {\n bind(element, \"pointerdown\", this._pointerdown);\n return;\n }\n\n bind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n bind(element, \"touchstart\", this._touchstart);\n bind(element, \"touchmove\", this._touchmove);\n bind(element, \"touchend\", this._touchend);\n }\n};\n\nDraggable.prototype._unbindFromCurrent = function _unbindFromCurrent() {\n var element = this._element;\n\n if (this._usePointers()) {\n unbind(element, \"pointerdown\", this._pointerdown);\n unbind(document, \"pointermove\", this._pointermove);\n unbind(document, \"pointerup\", this._pointerup);\n unbind(document, \"contextmenu\", preventDefault);\n unbind(document, \"pointercancel\", this._pointerup);\n return;\n }\n\n unbind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n unbind(element, \"touchstart\", this._touchstart);\n unbind(element, \"touchmove\", this._touchmove);\n unbind(element, \"touchend\", this._touchend);\n }\n};\n\nDraggable.prototype._usePointers = function _usePointers() {\n return !this._mouseOnly && Draggable.supportPointerEvent();\n};\n\nDraggable.prototype.destroy = function destroy() {\n this._unbindFromCurrent();\n\n this._element = null;\n}; // Re-export as \"default\" field to address a bug\n// where the ES Module is imported by CommonJS code.\n//\n// See https://github.com/telerik/kendo-angular/issues/1314\n\n\nDraggable.default = Draggable; // Rollup won't output exports['default'] otherwise\n\nexport default Draggable;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport KendoDraggable from '@telerik/kendo-draggable';\n/**\n * @hidden\n */\n\nvar Draggable =\n/** @class */\nfunction (_super) {\n __extends(Draggable, _super);\n\n function Draggable() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n\n\n _this.element = null;\n _this.draggable = new KendoDraggable({\n press: function press(event) {\n if (_this.element && _this.props.onPress) {\n _this.props.onPress.call(undefined, {\n target: _this,\n event: event,\n element: _this.element\n });\n }\n },\n drag: function drag(event) {\n if (_this.element && _this.props.onDrag) {\n _this.props.onDrag.call(undefined, {\n target: _this,\n event: event,\n element: _this.element\n });\n }\n },\n release: function release(event) {\n if (_this.element && _this.props.onRelease) {\n _this.props.onRelease.call(undefined, {\n target: _this,\n event: event\n });\n }\n }\n });\n\n _this.assingRef = function (element) {\n _this.element = element;\n };\n\n return _this;\n }\n\n Draggable.prototype.componentDidMount = function () {\n if (this.element) {\n this.draggable.bindTo(this.element);\n }\n };\n\n Draggable.prototype.componentWillUnmount = function () {\n this.draggable.destroy();\n };\n\n Draggable.prototype.render = function () {\n return React.cloneElement(React.Children.only(this.props.children), {\n ref: this.assingRef\n });\n };\n\n Draggable.propTypes = {\n children: PropTypes.element.isRequired\n };\n return Draggable;\n}(React.Component);\n\nexport { Draggable };","import { FIELD_REGEX } from './constants';\nvar getterCache = {};\n\ngetterCache.undefined = function () {\n return undefined;\n};\n/**\n * @hidden\n */\n\n\nexport 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, fieldName) {\n fields.push(index !== undefined ? index : indexAccessor || fieldName);\n });\n\n getterCache[field] = function (obj) {\n var result = obj;\n\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}","import { FIELD_REGEX } from './constants';\nvar setterCache = {};\n\nsetterCache.undefined = function (obj) {\n return obj;\n};\n/**\n * @hidden\n */\n\n\nexport function setter(field) {\n if (setterCache[field]) {\n return setterCache[field];\n }\n\n var fields = [];\n field.replace(FIELD_REGEX, function (_match, index, indexAccessor, fieldName) {\n fields.push(index !== undefined ? index : indexAccessor || fieldName);\n });\n\n setterCache[field] = function (obj, value) {\n var root = obj;\n var depth = fields.length - 1;\n\n for (var idx = 0; idx < depth && root; idx++) {\n root = root[fields[idx]] = root[fields[idx]] || {};\n }\n\n root[fields[depth]] = value;\n };\n\n return setterCache[field];\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 cloneDate(date) {\n return date ? new Date(date.getTime()) : null;\n};","/**\n * An enumeration which represents the horizontal direction.\n * The `Forward` option moves forward.\n * The `Backward` option moves backward.\n */\nexport var Direction;\n\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\n Direction[Direction[\"Backward\"] = -1] = \"Backward\";\n})(Direction || (Direction = {}));","import { cloneDate } from './clone-date';\n/**\n * @hidden\n */\n\nexport var adjustDST = function adjustDST(date, hour) {\n var newDate = cloneDate(date);\n\n if (hour === 0 && newDate.getHours() === 23) {\n newDate.setHours(newDate.getHours() + 2);\n }\n\n return newDate;\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 */\n\nexport var addDays = function addDays(date, offset) {\n var newDate = cloneDate(date);\n newDate.setDate(newDate.getDate() + offset);\n return adjustDST(newDate, date.getHours());\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 */\n\nexport var createDate = function createDate(year, month, day, hours, minutes, seconds, milliseconds) {\n if (hours === void 0) {\n hours = 0;\n }\n\n if (minutes === void 0) {\n minutes = 0;\n }\n\n if (seconds === void 0) {\n seconds = 0;\n }\n\n if (milliseconds === void 0) {\n milliseconds = 0;\n }\n\n var date = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n\n if (year > -1 && year < 100) {\n date.setFullYear(date.getFullYear() - 1900);\n }\n\n return adjustDST(date, hours);\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 */\n\nexport var lastDayOfMonth = function lastDayOfMonth(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};","import { adjustDST } from './adjust-dst';\nimport { cloneDate } from './clone-date';\nimport { lastDayOfMonth } from './last-day-of-month';\nvar MONTHS_LENGTH = 12;\n\nvar normalize = function normalize(date, expectedMonth) {\n return date.getMonth() !== expectedMonth ? lastDayOfMonth(addMonths(date, -1)) : date //tslint:disable-line:no-use-before-declare\n ;\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 */\n\n\nexport var addMonths = function addMonths(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};","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 */\n\nexport var addWeeks = function addWeeks(date, offset) {\n return addDays(date, offset * 7);\n};","import { addMonths } from './add-months';\nimport { createDate } from './create-date';\nimport { lastDayOfMonth } from './last-day-of-month';\n/**\n * @hidden\n */\n\nexport var setYear = function setYear(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};","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 */\n\nexport var addYears = function addYears(value, offset) {\n return adjustDST(setYear(value, value.getFullYear() + offset), value.getHours());\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 */\n\nexport var addDecades = function addDecades(value, offset) {\n return addYears(value, 10 * offset);\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 */\n\nexport var addCenturies = function addCenturies(value, offset) {\n return addYears(value, 100 * offset);\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.\n * 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 */\n\nexport var dayOfWeek = function dayOfWeek(date, weekDay, direction) {\n if (direction === void 0) {\n direction = Direction.Forward;\n }\n\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 * Enumeration which represents the week days.\n */\nexport var Day;\n\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\n Day[Day[\"Monday\"] = 1] = \"Monday\";\n /**\n * The Tuesday value with an underlying `2` number value.\n */\n\n Day[Day[\"Tuesday\"] = 2] = \"Tuesday\";\n /**\n * The Wednesday value with an underlying `3` number value.\n */\n\n Day[Day[\"Wednesday\"] = 3] = \"Wednesday\";\n /**\n * The Thursday value with an underlying `4` number value.\n */\n\n Day[Day[\"Thursday\"] = 4] = \"Thursday\";\n /**\n * The Friday value with an underlying `5` number value.\n */\n\n Day[Day[\"Friday\"] = 5] = \"Friday\";\n /**\n * The Saturday value with an underlying `6` number value.\n */\n\n Day[Day[\"Saturday\"] = 6] = \"Saturday\";\n})(Day || (Day = {}));","/**\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 durationInMonths(start, end) {\n return (end.getFullYear() - start.getFullYear()) * 12 + (end.getMonth() - start.getMonth());\n};","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar _a, _b, _c;\n\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 */\n\nexport var ScrollDirection;\n\n(function (ScrollDirection) {\n ScrollDirection[ScrollDirection[\"Backward\"] = 0] = \"Backward\";\n ScrollDirection[ScrollDirection[\"Forward\"] = 1] = \"Forward\";\n})(ScrollDirection || (ScrollDirection = {}));\n\nvar differenceToScroll = function differenceToScroll(scrollTop, staticOffset, maxScrollDifference) {\n return Math.min(Math.abs(staticOffset - scrollTop), maxScrollDifference);\n};\n\nvar FRAME_DURATION = 17;\nvar scrollModifiers = (_a = {}, _a[ScrollDirection.Forward] = function (step) {\n return function (value) {\n return value + step;\n };\n}, _a[ScrollDirection.Backward] = function (step) {\n return function (value) {\n return value - step;\n };\n}, _a);\nvar scrollNormalizers = (_b = {}, _b[ScrollDirection.Forward] = function (end) {\n return function (value) {\n return Math.min(value, end);\n };\n}, _b[ScrollDirection.Backward] = function (end) {\n return function (value) {\n return Math.max(value, end);\n };\n}, _b);\nvar scrollValidators = (_c = {}, _c[ScrollDirection.Forward] = function (end) {\n return function (start) {\n return start < end;\n };\n}, _c[ScrollDirection.Backward] = function (end) {\n return function (start) {\n return start > end;\n };\n}, _c);\n/**\n * @hidden\n */\n\nvar Virtualization =\n/** @class */\nfunction (_super) {\n __extends(Virtualization, _super);\n\n function Virtualization(props) {\n var _this = _super.call(this, props) || this;\n\n _this.animationInProgress = false;\n\n _this.scrollTo = function (value) {\n var scrollProperty = _this.direction === 'vertical' ? 'scrollTop' : 'scrollLeft';\n\n if (!_this.scrollContainer) {\n return;\n }\n\n _this.scrollContainer[scrollProperty] = value;\n };\n\n _this.scrollToIndex = function (index) {\n if (!_this.rowHeightService) {\n return;\n }\n\n _this.animationInProgress = false;\n\n _this.scrollTo(_this.rowHeightService.offset(index));\n };\n\n _this.animateToIndex = function (index) {\n if (!_this.rowHeightService || !window) {\n return;\n }\n\n window.cancelAnimationFrame(_this.cancelAnimation);\n\n var indexOffset = _this.rowHeightService.offset(index);\n\n var direction = _this.getContainerScrollDirection(indexOffset);\n\n var _a = _this.scrollRange(indexOffset, direction),\n start = _a.start,\n end = _a.end;\n\n if (start === end) {\n return;\n }\n\n var step = _this.scrollStep(start, end);\n\n var modifyScroll = scrollModifiers[direction](step);\n var normalizeScroll = scrollNormalizers[direction](end);\n var isScrollValid = scrollValidators[direction](modifyScroll(end));\n\n var animate = function animate(progress) {\n _this.animationInProgress = true;\n var next = modifyScroll(progress);\n\n _this.scrollTo(normalizeScroll(next));\n\n isScrollValid(next) ? _this.cancelAnimation = window.requestAnimationFrame(function () {\n animate(next);\n }) : _this.animationInProgress = false;\n };\n\n _this.cancelAnimation = window.requestAnimationFrame(function () {\n animate(start);\n });\n };\n\n _this.scrollToBottom = function () {\n if (!_this.rowHeightService) {\n return;\n }\n\n _this.scrollTo(_this.rowHeightService.totalHeight() + _this.props.bottomOffset);\n };\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\n _this.scrollRange = function (indexOffset, direction) {\n var containerScroll = _this.containerScrollPosition;\n\n if (parseInt(\"\" + indexOffset, 10) === parseInt(\"\" + containerScroll, 10)) {\n return {\n start: indexOffset,\n end: indexOffset\n };\n }\n\n var maxScroll = _this.containerMaxScroll();\n\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 {\n start: start,\n end: end\n };\n };\n\n _this.containerMaxScroll = function () {\n return _this.containerScrollSize - _this.containerOffsetSize;\n };\n\n _this.getContainerScrollDirection = function (indexOffset) {\n return indexOffset < _this.containerScrollPosition ? ScrollDirection.Backward : ScrollDirection.Forward;\n };\n\n _this.initServices = function (props) {\n if (props === void 0) {\n props = _this.props;\n }\n\n var dimension = _this.direction === 'vertical' ? props.itemHeight : props.itemWidth;\n\n if (dimension === undefined) {\n return;\n }\n\n _this.rowHeightService = new RowHeightService(props.total, dimension, 0);\n\n _this.scrollerService.create(_this.rowHeightService, props.skip, props.take, props.total, props.topOffset, _this.scrollOffsetSize, _this.direction);\n };\n\n _this.getContainerProperty = function (propertyName) {\n if (!_this.scrollContainer) {\n return 0;\n }\n\n return _this.scrollContainer[propertyName];\n };\n\n _this.handleScroll = function (event) {\n if (!_this.scrollContainer || !_this.rowHeightService) {\n return;\n }\n\n var target = event.target;\n\n _this.scrollerService.onScroll({\n scrollLeft: target.scrollLeft,\n scrollTop: target.scrollTop,\n offsetHeight: target.offsetHeight,\n offsetWidth: target.offsetWidth\n });\n\n var index = _this.rowHeightService.index(_this.containerScrollPosition - _this.props.topOffset);\n\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\n if (onScrollAction) {\n onScrollAction.call(undefined, args);\n }\n\n _this.scrollAction = undefined;\n _this.pageAction = undefined;\n };\n\n _this.handleScrollAction = function (action) {\n _this.scrollAction = action;\n };\n\n _this.handlePageAction = function (action) {\n _this.pageAction = action;\n };\n\n _this.scrollerService = new ScrollerService(_this.handleScrollAction, _this.handlePageAction);\n return _this;\n }\n\n Object.defineProperty(Virtualization.prototype, \"element\", {\n get: function get() {\n return this.scrollContainer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Virtualization.prototype, \"containerOffsetSize\", {\n get: function get() {\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 get() {\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 get() {\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 get() {\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 get() {\n return this.props.scrollOffsetSize !== undefined ? this.props.scrollOffsetSize : Virtualization.defaultProps.scrollOffsetSize;\n },\n enumerable: true,\n configurable: true\n });\n\n Virtualization.prototype.activeIndex = function () {\n return this.itemIndex(Math.ceil(this.containerScrollPosition));\n };\n\n Virtualization.prototype.itemIndex = function (offset) {\n if (!this.rowHeightService) {\n return 0;\n }\n\n return this.rowHeightService.index(offset);\n };\n\n Virtualization.prototype.itemOffset = function (index) {\n if (!this.rowHeightService) {\n return 0;\n }\n\n return this.rowHeightService.offset(index);\n };\n\n Virtualization.prototype.isIndexVisible = function (index) {\n if (!this.rowHeightService) {\n return false;\n }\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\n Virtualization.prototype.isListScrolled = function (index) {\n if (!this.rowHeightService) {\n return false;\n }\n\n return this.containerScrollPosition !== this.rowHeightService.offset(index);\n };\n\n Virtualization.prototype.componentDidMount = function () {\n var onMount = this.props.onMount;\n\n if (onMount) {\n onMount.call(undefined, this);\n }\n };\n\n Virtualization.prototype.render = function () {\n var _this = this;\n\n if (this.lastTotal !== this.props.total || this.lastDirection !== this.direction || 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\n var vertexLength = \"\" + ((this.rowHeightService ? this.rowHeightService.totalHeight() : 0) + this.props.bottomOffset);\n var placeholderStyle = this.direction === 'vertical' ? {\n height: vertexLength + \"px\"\n } : {\n width: vertexLength + \"px\"\n };\n var rootClassNames = classNames('k-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\", {\n ref: function ref(el) {\n _this.scrollContainer = el;\n },\n onScroll: this.handleScroll,\n className: rootClassNames,\n tabIndex: this.props.tabIndex,\n role: this.props.role\n }, this.props.children, React.createElement(\"div\", {\n style: placeholderStyle,\n className: scrollableClassNames\n }));\n };\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);\n\nexport { Virtualization };","/**\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 durationInYears(start, end) {\n return end.getFullYear() - start.getFullYear();\n};","import { setYear } from './set-year';\n/**\n * @hidden\n */\n\nexport var normalizeYear = function normalizeYear(value, year) {\n return setYear(value, year(value.getFullYear()));\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 */\n\nexport var firstYearOfDecade = function firstYearOfDecade(value) {\n return normalizeYear(value, function (y) {\n return y - y % 10;\n });\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 */\n\nexport var durationInDecades = function durationInDecades(start, end) {\n return (firstYearOfDecade(end).getFullYear() - firstYearOfDecade(start).getFullYear()) / 10;\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 */\n\nexport var firstDecadeOfCentury = function firstDecadeOfCentury(value) {\n return normalizeYear(value, function (y) {\n return y - y % 100;\n });\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 */\n\nexport var durationInCenturies = function durationInCenturies(start, end) {\n return (firstDecadeOfCentury(end).getFullYear() - firstDecadeOfCentury(start).getFullYear()) / 100;\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 */\n\nexport var getDate = function getDate(date) {\n return createDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\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 */\n\nexport var firstDayOfMonth = function firstDayOfMonth(date) {\n return createDate(date.getFullYear(), date.getMonth(), 1, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n};","import { addMonths } from './add-months';\nimport { createDate } from './create-date';\nimport { lastDayOfMonth } from './last-day-of-month';\n/**\n * @hidden\n */\n\nexport var setMonth = function setMonth(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};","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 */\n\nexport var firstMonthOfYear = function firstMonthOfYear(value) {\n return setMonth(value, 0);\n};","/**\n * A function that compares two dates.\n * 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 isEqual(candidate, expected) {\n if (!candidate && !expected) {\n return true;\n }\n\n return candidate && expected && candidate.getTime() === expected.getTime();\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 */\n\nexport var isEqualDate = function isEqualDate(candidate, expected) {\n if (!candidate && !expected) {\n return true;\n }\n\n return candidate && expected && isEqual(getDate(candidate), getDate(expected));\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 */\n\nexport var lastMonthOfYear = function lastMonthOfYear(value) {\n return setMonth(value, 11);\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 */\n\nexport var lastYearOfDecade = function lastYearOfDecade(value) {\n return normalizeYear(value, function (y) {\n return y - y % 10 + 9;\n });\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 */\n\nexport var lastDecadeOfCentury = function lastDecadeOfCentury(value) {\n return normalizeYear(value, function (y) {\n return y - y % 100 + 90;\n });\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 './ms-per-day';\n\nvar moveDateToWeekStart = function moveDateToWeekStart(date, weekStartDay) {\n if (weekStartDay !== Day.Monday) {\n return addDays(prevDayOfWeek(date, weekStartDay), 4);\n }\n\n return addDays(date, 4 - (date.getDay() || 7));\n};\n\nvar calcWeekInYear = function calcWeekInYear(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 */\n\n\nexport var weekInYear = function weekInYear(date, weekStartDay) {\n if (weekStartDay === void 0) {\n weekStartDay = Day.Monday;\n }\n\n var prevWeekDate = addDays(date, -7);\n var nextWeekDate = addDays(date, 7);\n var weekNumber = calcWeekInYear(date, weekStartDay);\n\n if (weekNumber === 0) {\n return calcWeekInYear(prevWeekDate, weekStartDay) + 1;\n }\n\n if (weekNumber === 53 && calcWeekInYear(nextWeekDate, weekStartDay) > 1) {\n return 1;\n }\n\n return weekNumber;\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.\n * 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 */\n\nexport var prevDayOfWeek = function prevDayOfWeek(date, weekDay) {\n return dayOfWeek(date, weekDay, Direction.Backward);\n};","/**\n * The duration of the day in milliseconds.\n */\nexport var MS_PER_DAY = 86400000;","/**\n * @hidden\n */\nvar update = function update(arr, idx, value) {\n return arr.slice(0, idx + 1).concat(arr.slice(idx + 1).map(function (x) {\n return x + value;\n }));\n};\n/**\n * @hidden\n */\n\n\nvar RowHeightService =\n/** @class */\nfunction () {\n function RowHeightService(total, rowHeight, detailRowHeight) {\n if (total === void 0) {\n total = 0;\n }\n\n this.total = total;\n this.rowHeight = rowHeight;\n this.detailRowHeight = detailRowHeight;\n this.offsets = [];\n this.heights = [];\n var agg = 0;\n\n for (var idx = 0; idx < total; idx++) {\n this.offsets.push(agg);\n agg += rowHeight;\n this.heights.push(rowHeight);\n }\n }\n\n RowHeightService.prototype.height = function (rowIndex) {\n return this.heights[rowIndex];\n };\n\n RowHeightService.prototype.expandDetail = function (rowIndex) {\n if (this.height(rowIndex) === this.rowHeight) {\n this.updateRowHeight(rowIndex, this.detailRowHeight);\n }\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\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\n if (position < this.offsets[i]) {\n return i - 1;\n }\n }\n\n return this.total - 1;\n };\n\n RowHeightService.prototype.offset = function (rowIndex) {\n return this.offsets[rowIndex];\n };\n\n RowHeightService.prototype.totalHeight = function () {\n return this.heights.reduce(function (prev, curr) {\n return prev + curr;\n }, 0);\n };\n\n RowHeightService.prototype.updateRowHeight = function (rowIndex, value) {\n this.heights[rowIndex] += value;\n this.offsets = update(this.offsets, rowIndex, value);\n };\n\n return RowHeightService;\n}();\n\nexport { RowHeightService };","var normalize = function normalize(x) {\n return Math.max(x, 0);\n};\n/**\n * @hidden\n */\n\n\nvar ScrollAction =\n/** @class */\nfunction () {\n function ScrollAction(offset) {\n this.offset = offset;\n }\n\n return ScrollAction;\n}();\n\nexport { ScrollAction };\n/**\n * @hidden\n */\n\nvar PageAction =\n/** @class */\nfunction () {\n function PageAction(skip) {\n this.skip = skip;\n }\n\n return PageAction;\n}();\n\nexport { PageAction };\n/**\n * @hidden\n */\n\nvar ScrollerService =\n/** @class */\nfunction () {\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\n ScrollerService.prototype.create = function (rowHeightService, skip, take, total, topOffset, bottomOffset, direction) {\n if (topOffset === void 0) {\n topOffset = 0;\n }\n\n if (bottomOffset === void 0) {\n bottomOffset = 0;\n }\n\n if (direction === void 0) {\n direction = 'vertical';\n }\n\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\n ScrollerService.prototype.onScroll = function (_a) {\n var scrollLeft = _a.scrollLeft,\n scrollTop = _a.scrollTop,\n offsetHeight = _a.offsetHeight,\n offsetWidth = _a.offsetWidth;\n var scrollPosition = this.direction === 'vertical' ? scrollTop : scrollLeft;\n var offsetSize = this.direction === 'vertical' ? offsetHeight : offsetWidth;\n\n if (this.lastScrollTop === scrollPosition) {\n return;\n }\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\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\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\n ScrollerService.prototype.rowOffset = function (index) {\n return this.rowHeightService.offset(index) + this.topOffset;\n };\n\n ScrollerService.prototype.rowsForHeight = function (height) {\n return Math.ceil(height / this.rowHeightService.height(0));\n };\n\n return ScrollerService;\n}();\n\nexport { ScrollerService };","/**\n * @hidden\n */\nexport var Action;\n\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 * The Enum which defines all possible Calendar view types.\n */\nexport var CalendarViewEnum;\n\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 = {}));","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\n\nvar compareProps = function compareProps(x, y) {\n var xProps = Object.getOwnPropertyNames(x);\n var yProps = Object.getOwnPropertyNames(y);\n\n if (xProps.length !== yProps.length) {\n return false;\n }\n\n for (var i = 0; i < xProps.length; i++) {\n var propName = xProps[i];\n\n if (x[propName] !== y[propName]) {\n return false;\n }\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 */\n\n\nvar CalendarCell =\n/** @class */\nfunction (_super) {\n __extends(CalendarCell, _super);\n\n function CalendarCell() {\n var _this = _super !== null && _super.apply(this, arguments) || this; // tslint:enable:max-line-length\n\n\n _this.handleClick = function (event) {\n var _a = _this.props,\n onClick = _a.onClick,\n value = _a.value;\n\n if (onClick) {\n onClick.call(undefined, value, event);\n }\n };\n\n _this.handleMouseEnter = function () {\n var _a = _this.props,\n onMouseEnter = _a.onMouseEnter,\n value = _a.value;\n\n if (onMouseEnter) {\n onMouseEnter.call(undefined, value);\n }\n };\n\n _this.handleMouseLeave = function () {\n var _a = _this.props,\n onMouseLeave = _a.onMouseLeave,\n value = _a.value;\n\n if (onMouseLeave) {\n onMouseLeave.call(undefined, value);\n }\n };\n\n return _this;\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 /**\n * @hidden\n */\n\n\n CalendarCell.prototype.shouldComponentUpdate = function (nextProps) {\n var _a = this.props,\n value = _a.value,\n props = __rest(_a, [\"value\"]);\n\n var newValue = nextProps.value,\n newProps = __rest(nextProps, [\"value\"]);\n\n var valueEqual = !(value && newValue) || value.getTime() === newValue.getTime();\n return !(valueEqual && compareProps(props, newProps));\n }; // tslint:disable:max-line-length\n\n /**\n * @return\n * Returns a `
  • ` element with a `` inside to apply the styles. The text inside is the [`formattedValue`]({% slug api_dateinputs_calendarcellprops %}#toc-formattedvalue) of the `cell`.\n */\n\n\n CalendarCell.prototype.render = function () {\n var _a = this.props,\n className = _a.className,\n formattedValue = _a.formattedValue,\n isWeekend = _a.isWeekend,\n isFocused = _a.isFocused,\n isSelected = _a.isSelected,\n isRangeStart = _a.isRangeStart,\n isRangeMid = _a.isRangeMid,\n isRangeEnd = _a.isRangeEnd,\n isRangeSplitStart = _a.isRangeSplitStart,\n isRangeSplitEnd = _a.isRangeSplitEnd,\n isToday = _a.isToday,\n isDisabled = _a.isDisabled,\n view = _a.view,\n value = _a.value,\n other = __rest(_a, [\"className\", \"formattedValue\", \"isWeekend\", \"isFocused\", \"isSelected\", \"isRangeStart\", \"isRangeMid\", \"isRangeEnd\", \"isRangeSplitStart\", \"isRangeSplitEnd\", \"isToday\", \"isDisabled\", \"view\", \"value\"]);\n\n var isEndActive = this.props.activeRangeEnd === 'end' && isRangeEnd;\n var isStartActive = this.props.activeRangeEnd === 'start' && isRangeStart;\n var rootClassName = classNames({\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, {\n className: rootClassName,\n onClick: this.handleClick,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave\n }), React.createElement(\"span\", {\n className: \"k-link\"\n }, this.props.children));\n };\n\n return CalendarCell;\n}(React.Component);\n\nexport { CalendarCell };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\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 */\n\nvar CalendarWeekCell =\n/** @class */\nfunction (_super) {\n __extends(CalendarWeekCell, _super);\n\n function CalendarWeekCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @return\n * Returns a `` element with the [`value`]({% slug api_dateinputs_calendarweekcellprops %}#toc-value) as a child.\n */\n\n\n CalendarWeekCell.prototype.render = function () {\n return React.createElement(\"td\", __assign({}, this.props), this.props.children);\n };\n\n return CalendarWeekCell;\n}(React.Component);\n\nexport { CalendarWeekCell };","/**\n * @hidden\n */\nexport var EMPTY_SELECTIONRANGE = {\n start: null,\n end: null\n};","var _a;\n/* tslint:disable:object-literal-sort-keys */\n\n\nimport { addDecades, addCenturies, cloneDate, durationInCenturies, firstYearOfDecade, firstDecadeOfCentury, lastDecadeOfCentury } from '@progress/kendo-date-math';\nimport { Action, EMPTY_SELECTIONRANGE } from '../models';\nimport { getToday, isInRange, isInSelectionRange, range } from '../../utils';\nvar EMPTY_DATA = [[]];\nvar CELLS_LENGTH = 5;\nvar ROWS_LENGTH = 2;\nvar ACTIONS = (_a = {}, _a[Action.Left] = function (date) {\n return addDecades(date, -1);\n}, _a[Action.Up] = function (date) {\n return addDecades(date, -5);\n}, _a[Action.Right] = function (date) {\n return addDecades(date, 1);\n}, _a[Action.Down] = function (date) {\n return addDecades(date, 5);\n}, _a[Action.PrevView] = function (date) {\n return addCenturies(date, -1);\n}, _a[Action.NextView] = function (date) {\n return addCenturies(date, 1);\n}, _a[Action.FirstInView] = function (date) {\n return firstDecadeOfCentury(date);\n}, _a[Action.LastInView] = function (date) {\n return lastDecadeOfCentury(date);\n}, _a);\n/**\n * @hidden\n */\n\nvar CenturyViewService =\n/** @class */\nfunction () {\n function CenturyViewService() {}\n\n CenturyViewService.prototype.addToDate = function (min, skip) {\n return addCenturies(min, skip);\n };\n\n CenturyViewService.prototype.datesList = function (start, count) {\n return range(0, count).map(function (i) {\n return addCenturies(start, i);\n });\n };\n\n CenturyViewService.prototype.data = function (options) {\n var _this = this;\n\n var cellUID = options.cellUID,\n focusedDate = options.focusedDate,\n isActiveView = options.isActiveView,\n max = options.max,\n min = options.min,\n selectedDate = options.selectedDate,\n _a = options.selectionRange,\n selectionRange = _a === void 0 ? EMPTY_SELECTIONRANGE : _a,\n viewDate = options.viewDate;\n\n if (!viewDate) {\n return EMPTY_DATA;\n }\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\n if (!_this.isInRange(cellDate, min, max)) {\n return null;\n }\n\n var isRangeStart = _this.isEqual(cellDate, selectionRange.start);\n\n var isRangeEnd = _this.isEqual(cellDate, selectionRange.end);\n\n var isInMiddle = !isRangeStart && !isRangeEnd;\n var isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n var isSelected = isActiveView && (!Array.isArray(selectedDate) ? isInRange(selectedDate, min, max) && _this.isEqual(cellDate, selectedDate) : _this.isSelectedFromArray(cellDate, selectedDate, min, max));\n return {\n formattedValue: _this.value(cellDate),\n id: \"\" + cellUID + cellDate.getTime(),\n isFocused: _this.isEqual(cellDate, focusedDate),\n isSelected: isSelected,\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\n CenturyViewService.prototype.isSelectedFromArray = function (candidate, dates, min, max) {\n var _this = this;\n\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\n CenturyViewService.prototype.isEqual = function (candidate, expected) {\n if (!candidate || !expected) {\n return false;\n } // TODO: double-check this!\n\n\n return firstYearOfDecade(candidate).getFullYear() === firstYearOfDecade(expected).getFullYear();\n };\n\n CenturyViewService.prototype.isInArray = function (date, dates) {\n if (!dates.length) {\n return false;\n }\n\n var year = date.getFullYear();\n return dates[0].getFullYear() <= year && year <= dates[dates.length - 1].getFullYear() + 99;\n };\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\n CenturyViewService.prototype.isInSameView = function (candidate, value) {\n return durationInCenturies(candidate, value) === 0;\n };\n\n CenturyViewService.prototype.isRangeStart = function (value) {\n return value.getFullYear() % 1000 === 0;\n };\n\n CenturyViewService.prototype.move = function (value, action) {\n var modifier = ACTIONS[action];\n\n if (!modifier) {\n return value;\n }\n\n return modifier(value);\n };\n\n CenturyViewService.prototype.cellTitle = function (value) {\n return firstYearOfDecade(value).getFullYear().toString();\n };\n\n CenturyViewService.prototype.navigationTitle = function (value) {\n return value ? firstDecadeOfCentury(value).getFullYear().toString() : '';\n };\n\n CenturyViewService.prototype.title = function (value) {\n if (!value) {\n return '';\n }\n\n return firstDecadeOfCentury(value).getFullYear() + \" - \" + lastDecadeOfCentury(value).getFullYear();\n };\n\n CenturyViewService.prototype.rowLength = function (_) {\n return CELLS_LENGTH;\n };\n\n CenturyViewService.prototype.skip = function (value, min) {\n return durationInCenturies(min, value);\n };\n\n CenturyViewService.prototype.total = function (min, max) {\n return durationInCenturies(min, max) + 1;\n };\n\n CenturyViewService.prototype.value = function (current) {\n return current ? firstYearOfDecade(current).getFullYear().toString() : '';\n };\n\n CenturyViewService.prototype.viewDate = function (date, max, border) {\n if (border === void 0) {\n border = 1;\n }\n\n var renderTwoViews = durationInCenturies(date, max) < border;\n return renderTwoViews ? addCenturies(date, -1) : date;\n };\n\n CenturyViewService.prototype.normalize = function (cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return cloneDate(min);\n }\n\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return cloneDate(max);\n }\n\n return cellDate;\n };\n\n return CenturyViewService;\n}();\n\nexport { CenturyViewService };","var _a;\n\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 } from '../../utils';\nvar EMPTY_DATA = [[]];\nvar CELLS_LENGTH = 5;\nvar ROWS_LENGTH = 2;\nvar ACTIONS = (_a = {}, _a[Action.Left] = function (date) {\n return addYears(date, -1);\n}, _a[Action.Up] = function (date) {\n return addYears(date, -5);\n}, _a[Action.Right] = function (date) {\n return addYears(date, 1);\n}, _a[Action.Down] = function (date) {\n return addYears(date, 5);\n}, _a[Action.PrevView] = function (date) {\n return addDecades(date, -1);\n}, _a[Action.NextView] = function (date) {\n return addDecades(date, 1);\n}, _a[Action.FirstInView] = function (date) {\n return firstYearOfDecade(date);\n}, _a[Action.LastInView] = function (date) {\n return lastYearOfDecade(date);\n}, _a);\n/**\n * @hidden\n */\n\nvar DecadeViewService =\n/** @class */\nfunction () {\n function DecadeViewService() {}\n\n DecadeViewService.prototype.addToDate = function (min, skip) {\n return addDecades(min, skip);\n };\n\n DecadeViewService.prototype.datesList = function (start, count) {\n return range(0, count).map(function (i) {\n return addDecades(start, i);\n });\n };\n\n DecadeViewService.prototype.data = function (options) {\n var _this = this;\n\n var cellUID = options.cellUID,\n focusedDate = options.focusedDate,\n isActiveView = options.isActiveView,\n max = options.max,\n min = options.min,\n selectedDate = options.selectedDate,\n _a = options.selectionRange,\n selectionRange = _a === void 0 ? EMPTY_SELECTIONRANGE : _a,\n viewDate = options.viewDate;\n\n if (!viewDate) {\n return EMPTY_DATA;\n }\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\n if (!_this.isInRange(cellDate, min, max)) {\n return null;\n }\n\n var isRangeStart = _this.isEqual(cellDate, selectionRange.start);\n\n var isRangeEnd = _this.isEqual(cellDate, selectionRange.end);\n\n var isInMiddle = !isRangeStart && !isRangeEnd;\n var isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n var isSelected = isActiveView && (!Array.isArray(selectedDate) ? isInRange(selectedDate, min, max) && _this.isEqual(cellDate, selectedDate) : _this.isSelectedFromArray(cellDate, selectedDate, min, max));\n return {\n formattedValue: _this.value(cellDate),\n id: \"\" + cellUID + cellDate.getTime(),\n isFocused: _this.isEqual(cellDate, focusedDate),\n isSelected: isSelected,\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\n DecadeViewService.prototype.isSelectedFromArray = function (candidate, dates, min, max) {\n var _this = this;\n\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\n DecadeViewService.prototype.isEqual = function (candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n\n return candidate.getFullYear() === expected.getFullYear();\n };\n\n DecadeViewService.prototype.isInArray = function (date, dates) {\n if (!dates.length) {\n return false;\n }\n\n var year = date.getFullYear();\n return dates[0].getFullYear() <= year && year <= dates[dates.length - 1].getFullYear() + 9;\n };\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\n DecadeViewService.prototype.isRangeStart = function (value) {\n return value.getFullYear() % 100 === 0;\n };\n\n DecadeViewService.prototype.isInSameView = function (candidate, value) {\n return durationInDecades(candidate, value) === 0;\n };\n\n DecadeViewService.prototype.move = function (value, action) {\n var modifier = ACTIONS[action];\n\n if (!modifier) {\n return value;\n }\n\n return modifier(value);\n };\n\n DecadeViewService.prototype.cellTitle = function (value) {\n return value.getFullYear().toString();\n };\n\n DecadeViewService.prototype.navigationTitle = function (value) {\n return value ? firstYearOfDecade(value).getFullYear().toString() : '';\n };\n\n DecadeViewService.prototype.title = function (value) {\n if (!value) {\n return '';\n }\n\n return firstYearOfDecade(value).getFullYear() + \" - \" + lastYearOfDecade(value).getFullYear();\n };\n\n DecadeViewService.prototype.rowLength = function (_) {\n return CELLS_LENGTH;\n };\n\n DecadeViewService.prototype.skip = function (value, min) {\n return durationInDecades(min, value);\n };\n\n DecadeViewService.prototype.total = function (min, max) {\n return durationInDecades(min, max) + 1;\n };\n\n DecadeViewService.prototype.value = function (current) {\n return current ? current.getFullYear().toString() : '';\n };\n\n DecadeViewService.prototype.viewDate = function (date, max, border) {\n if (border === void 0) {\n border = 1;\n }\n\n var renderTwoViews = durationInDecades(date, max) < border;\n return renderTwoViews ? addDecades(date, -1) : date;\n };\n\n DecadeViewService.prototype.normalize = function (cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return cloneDate(min);\n }\n\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return cloneDate(max);\n }\n\n return cellDate;\n };\n\n return DecadeViewService;\n}();\n\nexport { DecadeViewService };","var _a;\n\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 = {}, _a[Action.Left] = function (date) {\n return addDays(date, -1);\n}, _a[Action.Up] = function (date) {\n return addWeeks(date, -1);\n}, _a[Action.Right] = function (date) {\n return addDays(date, 1);\n}, _a[Action.Down] = function (date) {\n return addWeeks(date, 1);\n}, _a[Action.PrevView] = function (date) {\n return addMonths(date, -1);\n}, _a[Action.NextView] = function (date) {\n return addMonths(date, 1);\n}, _a[Action.FirstInView] = function (date) {\n return firstDayOfMonth(date);\n}, _a[Action.LastInView] = function (date) {\n return lastDayOfMonth(date);\n}, _a);\n/**\n * @hidden\n */\n\nvar MonthViewService =\n/** @class */\nfunction () {\n function MonthViewService(intl) {\n this.intl = intl;\n }\n\n MonthViewService.prototype.addToDate = function (min, skip) {\n return addMonths(min, skip);\n };\n\n MonthViewService.prototype.datesList = function (start, count) {\n return range(0, count).map(function (i) {\n return addMonths(start, i);\n });\n };\n\n MonthViewService.prototype.data = function (options) {\n var _this = this;\n\n var cellUID = options.cellUID,\n focusedDate = options.focusedDate,\n isActiveView = options.isActiveView,\n max = options.max,\n min = options.min,\n selectedDate = options.selectedDate,\n _a = options.selectionRange,\n selectionRange = _a === void 0 ? EMPTY_SELECTIONRANGE : _a,\n viewDate = options.viewDate;\n\n if (!viewDate) {\n return EMPTY_DATA;\n }\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\n var otherMonth = cellDate < firstMonthDate || cellDate > lastMonthDate;\n var outOfRange = cellDate < min || cellDate > max;\n\n if (otherMonth || outOfRange) {\n return null;\n }\n\n var isRangeStart = _this.isEqual(cellDate, selectionRange.start);\n\n var isRangeEnd = _this.isEqual(cellDate, selectionRange.end);\n\n var isInMiddle = !isRangeStart && !isRangeEnd;\n var isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n var isSelected = isActiveView && (!Array.isArray(selectedDate) ? isInRange(selectedDate, min, max) && _this.isEqual(cellDate, selectedDate) : _this.isSelectedFromArray(cellDate, selectedDate, min, max));\n return {\n formattedValue: _this.value(cellDate),\n id: \"\" + cellUID + cellDate.getTime(),\n isFocused: _this.isEqual(cellDate, focusedDate),\n isSelected: isSelected,\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 });\n });\n };\n\n MonthViewService.prototype.isEqual = function (candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n\n return getDate(candidate).getTime() === getDate(expected).getTime();\n };\n\n MonthViewService.prototype.isSelectedFromArray = function (candidate, dates, min, max) {\n var _this = this;\n\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\n MonthViewService.prototype.isInArray = function (date, dates) {\n return !!dates.length && firstDayOfMonth(dates[0]) <= date && date <= lastDayOfMonth(dates[dates.length - 1]);\n };\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\n MonthViewService.prototype.isInSameView = function (candidate, value) {\n return durationInMonths(candidate, value) === 0;\n };\n\n MonthViewService.prototype.isRangeStart = function (value) {\n return !value.getMonth();\n };\n\n MonthViewService.prototype.move = function (value, action) {\n var modifier = ACTIONS[action];\n\n if (!modifier) {\n return value;\n }\n\n return modifier(value);\n };\n\n MonthViewService.prototype.cellTitle = function (value) {\n return this.intl.formatDate(value, 'D');\n };\n\n MonthViewService.prototype.navigationTitle = function (value) {\n if (!value) {\n return '';\n }\n\n return this.isRangeStart(value) ? value.getFullYear().toString() : this.abbrMonthNames()[value.getMonth()];\n };\n\n MonthViewService.prototype.title = function (current) {\n return this.wideMonthNames()[current.getMonth()] + \" \" + current.getFullYear();\n };\n\n MonthViewService.prototype.rowLength = function (prependCell) {\n return CELLS_LENGTH + (prependCell ? 1 : 0);\n };\n\n MonthViewService.prototype.skip = function (value, min) {\n return durationInMonths(min, value);\n };\n\n MonthViewService.prototype.total = function (min, max) {\n return durationInMonths(min, max) + 1;\n };\n\n MonthViewService.prototype.value = function (current) {\n return current ? current.getDate().toString() : '';\n };\n\n MonthViewService.prototype.viewDate = function (date, max, border) {\n if (border === void 0) {\n border = 1;\n }\n\n var renderTwoViews = durationInMonths(date, max) < border;\n return renderTwoViews ? addMonths(date, -1) : date;\n };\n\n MonthViewService.prototype.isWeekend = function (date) {\n var day = date.getDay();\n return day === SATURDAY || day === SUNDAY;\n };\n\n MonthViewService.prototype.abbrMonthNames = function () {\n return this.intl.dateFormatNames({\n nameType: 'abbreviated',\n type: 'months'\n });\n };\n\n MonthViewService.prototype.normalize = function (cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return getDate(min);\n }\n\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return getDate(max);\n }\n\n return cellDate;\n };\n\n MonthViewService.prototype.wideMonthNames = function () {\n return this.intl.dateFormatNames({\n nameType: 'wide',\n type: 'months'\n });\n };\n\n return MonthViewService;\n}();\n\nexport { MonthViewService };","var _a;\n\nimport { addMonths, addYears, cloneDate, 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';\nvar EMPTY_DATA = [[]];\nvar CELLS_LENGTH = 5;\nvar ROWS_LENGTH = 3;\n\nvar upStep = function upStep(month) {\n if (month > 4) {\n return -5;\n }\n\n if (month < 2) {\n return -2;\n }\n\n return -7;\n};\n\nvar downStep = function downStep(month) {\n if (month < 7) {\n return 5;\n }\n\n if (month < 10) {\n return 7;\n }\n\n return 2;\n};\n\nvar ACTIONS = (_a = {}, _a[Action.Left] = function (date) {\n return addMonths(date, -1);\n}, _a[Action.Up] = function (date) {\n return addMonths(date, upStep(date.getMonth()));\n}, _a[Action.Right] = function (date) {\n return addMonths(date, 1);\n}, _a[Action.Down] = function (date) {\n return addMonths(date, downStep(date.getMonth()));\n}, _a[Action.PrevView] = function (date) {\n return addYears(date, -1);\n}, _a[Action.NextView] = function (date) {\n return addYears(date, 1);\n}, _a[Action.FirstInView] = function (date) {\n return firstMonthOfYear(date);\n}, _a[Action.LastInView] = function (date) {\n return lastMonthOfYear(date);\n}, _a);\n/**\n * @hidden\n */\n\nvar YearViewService =\n/** @class */\nfunction () {\n function YearViewService(intl) {\n this._intl = intl;\n }\n\n YearViewService.prototype.addToDate = function (min, skip) {\n return addYears(min, skip);\n };\n\n YearViewService.prototype.datesList = function (start, count) {\n return range(0, count).map(function (i) {\n return addYears(start, i);\n });\n };\n\n YearViewService.prototype.data = function (options) {\n var _this = this;\n\n var cellUID = options.cellUID,\n focusedDate = options.focusedDate,\n isActiveView = options.isActiveView,\n max = options.max,\n min = options.min,\n selectedDate = options.selectedDate,\n _a = options.selectionRange,\n selectionRange = _a === void 0 ? EMPTY_SELECTIONRANGE : _a,\n viewDate = options.viewDate;\n\n if (!viewDate) {\n return EMPTY_DATA;\n }\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\n var changedYear = currentYear < cellDate.getFullYear();\n\n if (!_this.isInRange(cellDate, min, max) || changedYear) {\n return null;\n }\n\n var isRangeStart = _this.isEqual(cellDate, selectionRange.start);\n\n var isRangeEnd = _this.isEqual(cellDate, selectionRange.end);\n\n var isInMiddle = !isRangeStart && !isRangeEnd;\n var isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n var isSelected = isActiveView && (!Array.isArray(selectedDate) ? isInRange(selectedDate, min, max) && _this.isEqual(cellDate, selectedDate) : _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 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\n YearViewService.prototype.isSelectedFromArray = function (candidate, dates, min, max) {\n var _this = this;\n\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\n YearViewService.prototype.isEqual = function (candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n\n return candidate.getFullYear() === expected.getFullYear() && candidate.getMonth() === expected.getMonth();\n };\n\n YearViewService.prototype.isInArray = function (date, dates) {\n if (!dates.length) {\n return false;\n }\n\n var year = date.getFullYear();\n return dates[0].getFullYear() <= year && year <= dates[dates.length - 1].getFullYear();\n };\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\n YearViewService.prototype.isInSameView = function (candidate, value) {\n return durationInYears(candidate, value) === 0;\n };\n\n YearViewService.prototype.isRangeStart = function (value) {\n return value.getFullYear() % 10 === 0;\n };\n\n YearViewService.prototype.move = function (value, action) {\n var modifier = ACTIONS[action];\n\n if (!modifier) {\n return value;\n }\n\n return modifier(value);\n };\n\n YearViewService.prototype.cellTitle = function (value) {\n return value.getFullYear() + \" \" + this.value(value);\n };\n\n YearViewService.prototype.navigationTitle = function (value) {\n return this.title(value);\n };\n\n YearViewService.prototype.title = function (current) {\n return current ? current.getFullYear().toString() : '';\n };\n\n YearViewService.prototype.rowLength = function (_) {\n return CELLS_LENGTH;\n };\n\n YearViewService.prototype.skip = function (value, min) {\n return durationInYears(min, value);\n };\n\n YearViewService.prototype.total = function (min, max) {\n return durationInYears(min, max) + 1;\n };\n\n YearViewService.prototype.value = function (current) {\n return current ? this.abbrMonthNames()[current.getMonth()] : '';\n };\n\n YearViewService.prototype.viewDate = function (date, max, border) {\n if (border === void 0) {\n border = 1;\n }\n\n var renderTwoViews = durationInYears(date, max) < border;\n return renderTwoViews ? addYears(date, -1) : date;\n };\n\n YearViewService.prototype.abbrMonthNames = function () {\n return this._intl.dateFormatNames({\n nameType: 'abbreviated',\n type: 'months'\n });\n };\n\n YearViewService.prototype.normalize = function (cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return cloneDate(min);\n }\n\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return cloneDate(max);\n }\n\n return cellDate;\n };\n\n return YearViewService;\n}();\n\nexport { YearViewService };","var _a;\n\nimport { CenturyViewService } from './CenturyViewService';\nimport { DecadeViewService } from './DecadeViewService';\nimport { MonthViewService } from './MonthViewService';\nimport { YearViewService } from './YearViewService';\nimport { CalendarViewEnum } from '../models/CalendarViewEnum';\nvar services = (_a = {}, _a[CalendarViewEnum.month] = MonthViewService, _a[CalendarViewEnum.year] = YearViewService, _a[CalendarViewEnum.decade] = DecadeViewService, _a[CalendarViewEnum.century] = CenturyViewService, _a);\n\nvar viewOffset = function viewOffset(view, offset) {\n var candidate = CalendarViewEnum[CalendarViewEnum[view + offset]];\n return candidate !== undefined ? candidate : view;\n};\n/**\n * @hidden\n */\n\n\nvar BusViewService =\n/** @class */\nfunction () {\n function BusViewService(onViewChanged) {\n this.bottom = CalendarViewEnum.month;\n this.top = CalendarViewEnum.century;\n this.onViewChanged = onViewChanged;\n }\n\n BusViewService.prototype.configure = function (bottom, top) {\n this.bottom = bottom;\n this.top = top;\n };\n\n BusViewService.prototype.service = function (view, intl) {\n return new services[\"\" + view](intl);\n };\n\n BusViewService.prototype.moveDown = function (view, event) {\n this.move(view, -1, event);\n };\n\n BusViewService.prototype.moveUp = function (view, event) {\n this.move(view, 1, event);\n };\n\n BusViewService.prototype.moveToBottom = function (activeView) {\n if (activeView === this.bottom) {\n return;\n }\n\n this.onViewChanged({\n view: this.bottom\n });\n };\n\n BusViewService.prototype.canMoveDown = function (view) {\n return this.bottom < view;\n };\n\n BusViewService.prototype.canMoveUp = function (view) {\n return view < this.top;\n };\n\n BusViewService.prototype.clamp = function (view) {\n if (view < this.bottom) {\n return this.bottom;\n }\n\n if (view > this.top) {\n return this.top;\n }\n\n return view;\n };\n\n BusViewService.prototype.move = function (view, offset, event) {\n var candidate = this.clamp(viewOffset(view, offset));\n\n if (candidate === view) {\n return;\n }\n\n this.onViewChanged({\n view: candidate\n }, event);\n };\n\n return BusViewService;\n}();\n\nexport { BusViewService };","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 */\n\nexport var isEqualRange = function isEqualRange(initial, updated) {\n var _a = initial || EMPTY_SELECTIONRANGE,\n initialStart = _a.start,\n initialEnd = _a.end;\n\n var _b = updated || EMPTY_SELECTIONRANGE,\n updatedStart = _b.start,\n updatedEnd = _b.end;\n\n if (initialStart === null || initialEnd === null || updatedStart === null || updatedEnd === null) {\n return false;\n }\n\n return isEqual(initialStart, updatedStart) && isEqual(initialEnd, updatedEnd);\n};\n/**\n * @hidden\n */\n\nexport var viewInRange = function viewInRange(candidate, min, max) {\n if (min === undefined || max === undefined) {\n return candidate;\n }\n\n return min <= candidate && candidate <= max ? candidate : candidate < min ? min : max;\n};\n/**\n * @hidden\n */\n\nexport var MIDNIGHT_DATE = new Date(1980, 0, 1);\n/**\n * @hidden\n */\n\nexport var MIN_DATE = new Date(1900, 0, 1);\n/**\n * @hidden\n */\n\nexport var MAX_DATE = new Date(2099, 11, 31);\n/**\n * @hidden\n */\n\nexport var MIN_TIME = new Date(1980, 0, 1);\n/**\n * @hidden\n */\n\nexport var MAX_TIME = new Date(1980, 0, 1, 23, 59, 59);\n\nvar isSet = function isSet(value) {\n return value !== null && value !== undefined;\n};\n/**\n * @hidden\n */\n\n\nexport var isValidRange = function isValidRange(min, max) {\n return !isSet(min) || !isSet(max) || min <= max;\n};\n/**\n * @hidden\n */\n\nexport var setTime = function setTime(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 */\n\nexport var getToday = function getToday() {\n return getDate(new Date());\n};\n/**\n * @hidden\n */\n\nexport var isInRange = function isInRange(candidate, min, max) {\n return !candidate || !(min && min > candidate || max && max < candidate);\n};\n/**\n * @hidden\n */\n\nexport var isInDateRange = function isInDateRange(candidate, min, max) {\n return candidate === null || !(min && getDate(min) > getDate(candidate) || max && getDate(max) < getDate(candidate));\n};\n/**\n * @hidden\n */\n\nexport var isInSelectionRange = function isInSelectionRange(value, selectionRange) {\n var _a = selectionRange || EMPTY_SELECTIONRANGE,\n start = _a.start,\n end = _a.end;\n\n if (!start || !end) {\n return false;\n }\n\n return start < value && value < end;\n};\n/**\n * @hidden\n */\n\nexport var range = function range(start, end, step) {\n if (step === void 0) {\n step = 1;\n }\n\n var result = [];\n\n for (var i = start; i < end; i = i + step) {\n result.push(i);\n }\n\n return result;\n};\n/**\n * @hidden\n */\n\nexport var shiftWeekNames = function shiftWeekNames(names, offset) {\n return names.slice(offset).concat(names.slice(0, offset));\n};\n/**\n * @hidden\n */\n\nexport var dateInRange = function dateInRange(candidate, min, max) {\n if (!candidate) {\n return candidate;\n }\n\n if (min && candidate < min) {\n return cloneDate(min);\n }\n\n if (max && candidate > max) {\n return cloneDate(max);\n }\n\n return candidate;\n};\n/**\n * @hidden\n */\n\nexport var domContainerFactory = function domContainerFactory(type) {\n return function (children, classes, styles) {\n if (classes === void 0) {\n classes = '';\n }\n\n if (styles === void 0) {\n styles = {};\n }\n\n var container = document.createElement(type);\n container.className = classes;\n Object.keys(styles).map(function (key) {\n return container.style[key] = styles[key];\n });\n\n if (typeof children === 'string') {\n container.innerHTML = children || '';\n } else {\n (children || []).forEach(function (child) {\n return child && container.appendChild(child);\n });\n }\n\n return container;\n };\n};\n/**\n * @hidden\n */\n\nexport var isDocumentAvailable = function isDocumentAvailable() {\n return typeof document !== 'undefined';\n};","import { CalendarViewEnum } from '../models/CalendarViewEnum';\nimport { domContainerFactory as containerFactory, isDocumentAvailable } from '../../utils';\n/**\n * @hidden\n */\n\nvar DOMService =\n/** @class */\nfunction () {\n function DOMService() {\n this.didCalculate = false;\n }\n\n DOMService.prototype.ensureHeights = function () {\n if (this.calendarHeight !== undefined) {\n return;\n }\n\n this.calculateHeights();\n };\n\n DOMService.prototype.calculateHeights = function (container) {\n var _this = this;\n\n if (!isDocumentAvailable()) {\n return;\n }\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\n var monthHeader = function monthHeader() {\n return div(\"\\n March 2017\\n TODAY\\n \", 'k-calendar-header');\n };\n\n var monthWeekHeader = function monthWeekHeader() {\n return table([thead([tr([th('MO')])])], 'k-calendar-weekdays');\n };\n\n var repeat = function repeat(count, mapper) {\n return new Array(count).fill('1').map(mapper);\n };\n\n var content = function content(rows, cells) {\n if (cells === void 0) {\n cells = 1;\n }\n\n return table([tbody([tr([th('1')])].concat(repeat(rows, function () {\n return tr(repeat(cells, function (c) {\n return td(\"\" + c + \"\");\n }));\n })))]);\n };\n\n var scrollable = function scrollable(children) {\n return div(children, 'k-content k-scrollable');\n };\n\n var view = function view(contentElement, className, renderWeekHeader) {\n return div(renderWeekHeader ? [monthHeader(), monthWeekHeader(), scrollable([contentElement, contentElement])] : [monthHeader(), scrollable([contentElement, contentElement])], className, {\n left: '-10000px',\n position: 'absolute'\n });\n };\n\n var navigationList = function () {\n var navElement;\n return function () {\n if (!isDocumentAvailable) {\n return null;\n }\n\n if (!navElement) {\n navElement = div([scrollable([ul([li('FEB')])])], 'k-calendar-navigation', {\n left: '0px',\n position: 'absolute'\n });\n }\n\n return navElement;\n };\n }();\n\n var viewFactory = function viewFactory(_a, className, renderWeekHeader) {\n var cells = _a.cells,\n rows = _a.rows;\n var viewElement;\n return function () {\n if (!isDocumentAvailable) {\n return null;\n }\n\n if (!viewElement) {\n viewElement = view(content(rows, cells), className, renderWeekHeader);\n }\n\n return viewElement;\n };\n };\n\n var getScrollable = function getScrollable(element) {\n return element.querySelector('.k-scrollable');\n };\n\n var horizontal = function horizontal(element) {\n var scrollableElement = getScrollable(element);\n scrollableElement.className = scrollableElement.className + \" k-scrollable-horizontal\";\n return element;\n };\n\n var monthView = viewFactory({\n cells: 7,\n rows: 6\n }, 'k-calendar-view k-calendar-monthview', true);\n var yearView = viewFactory({\n cells: 5,\n rows: 3\n }, 'k-calendar-view k-calendar-yearview', false);\n var decadeView = viewFactory({\n cells: 5,\n rows: 2\n }, 'k-calendar-view k-calendar-decadeview', false);\n\n var horzMonthView = function horzMonthView() {\n return horizontal(monthView());\n };\n\n var horzYearView = function horzYearView() {\n return horizontal(yearView());\n };\n\n var horzDecadeView = function horzDecadeView() {\n return horizontal(decadeView());\n };\n\n var height = function height(element) {\n return parseFloat(window.getComputedStyle(element).height) || element.offsetHeight;\n };\n\n var width = function width(element) {\n var styles = window.getComputedStyle(element);\n var computed = parseFloat(styles.width) + parseFloat(styles.paddingLeft) + parseFloat(styles.paddingRight);\n return computed || element.offsetWidth;\n };\n\n var getBody = function getBody(element) {\n return element.querySelector('tbody');\n };\n\n this.didCalculate = true;\n\n if (container) {\n this.hostContainer = container;\n }\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\n DOMService.prototype.viewHeight = function (viewType) {\n return this.viewDimension(viewType, 'height');\n };\n\n DOMService.prototype.viewWidth = function (viewType) {\n return this.viewDimension(viewType, 'width');\n };\n\n DOMService.prototype.viewDimension = function (viewType, dimension) {\n var viewProp = dimension === 'height' ? 'ViewHeight' : 'ViewWidth';\n\n switch (viewType) {\n case CalendarViewEnum.month:\n return this[\"month\" + viewProp];\n\n case CalendarViewEnum.year:\n return this[\"year\" + viewProp];\n\n case CalendarViewEnum.decade:\n return this[\"decade\" + viewProp];\n\n case CalendarViewEnum.century:\n return this[\"century\" + viewProp];\n\n default:\n return 1;\n }\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\n return DOMService;\n}();\n\nexport { DOMService };","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 */\n\nvar NavigationService =\n/** @class */\nfunction () {\n function NavigationService(bus) {\n this.bus = bus;\n }\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\n NavigationService.prototype.move = function (value, action, activeView, service, event) {\n if (!service) {\n return value;\n }\n\n if (action === Action.UpperView && this.bus.canMoveUp(activeView)) {\n this.bus.moveUp(activeView, event);\n return value;\n }\n\n if (action === Action.LowerView && this.bus.canMoveDown(activeView)) {\n this.bus.moveDown(activeView, event);\n return value;\n }\n\n return service.move(value, action);\n };\n\n return NavigationService;\n}();\n\nexport { NavigationService };","var divideByMagnitude = function divideByMagnitude(magnitude) {\n return function (x) {\n return Math.floor(x / magnitude);\n };\n};\n\nvar powerByMagnitude = function powerByMagnitude(magnitude) {\n return function (x) {\n return x * magnitude;\n };\n};\n/**\n * @hidden\n */\n\n\nvar ScrollSyncService =\n/** @class */\nfunction () {\n function ScrollSyncService(dom) {\n this.dom = dom;\n this.monthScrolled = false;\n this.navScrolled = false;\n }\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\n ScrollSyncService.prototype.sync = function (navigator, view, e) {\n if (!navigator || !view) {\n return;\n }\n\n this.navigator = navigator;\n this.view = view;\n\n if (e.target === this.navigator.element) {\n if (this.monthScrolled) {\n this.monthScrolled = false;\n return;\n }\n\n this.navScrolled = true;\n this.scrollSiblingOf(this.navigator.element);\n }\n\n if (e.target === this.view.element) {\n if (this.navScrolled) {\n this.navScrolled = false;\n return;\n }\n\n this.monthScrolled = true;\n this.scrollSiblingOf(this.view.element);\n }\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\n ScrollSyncService.prototype.siblingComponent = function (scrollableElement) {\n return this.navigator.element === scrollableElement ? this.view : this.navigator;\n };\n\n ScrollSyncService.prototype.calculateScroll = function (component, scrollTop) {\n var modifier = component === this.navigator ? this.divideByMagnitude : this.powerByMagnitude;\n return modifier(scrollTop);\n };\n\n return ScrollSyncService;\n}();\n\nexport { ScrollSyncService };","import { shiftWeekNames } from '../../utils';\n/**\n * @hidden\n */\n\nvar WeekNamesService =\n/** @class */\nfunction () {\n function WeekNamesService(intl) {\n this.intl = intl;\n }\n\n WeekNamesService.prototype.getWeekNames = function (includeWeekNumber) {\n if (includeWeekNumber === void 0) {\n includeWeekNumber = false;\n }\n\n var weekNames = shiftWeekNames(this.intl.dateFormatNames({\n nameType: 'short',\n type: 'days'\n }), this.intl.firstDay());\n return includeWeekNumber ? [''].concat(weekNames) : weekNames;\n };\n\n return WeekNamesService;\n}();\n\nexport { WeekNamesService };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\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'; // tslint:disable-next-line jsx-use-translation-function\n\nvar emptyCell = function emptyCell(idx) {\n return React.createElement(\"td\", {\n key: idx\n }, \"\\xA0\");\n};\n/**\n * @hidden\n */\n\n\nvar View =\n/** @class */\nfunction (_super) {\n __extends(View, _super);\n\n function View() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.buildWeekNumber = function (row, idx) {\n var firstDayOfWeek = _this.firstDate(row);\n\n if (!firstDayOfWeek) {\n return emptyCell(\"week-cell-\" + idx);\n }\n\n var weekCellValue = _this.getWeekNumber(_this.firstDate(row));\n\n var uniqueID = \"kendo-react-calendar-week-cell-\" + weekCellValue;\n var cellProps = {\n className: 'k-alt',\n value: weekCellValue\n };\n return _this.props.weekCell ? React.createElement(_this.props.weekCell, __assign({}, cellProps, {\n key: uniqueID\n }), weekCellValue) : React.createElement(CalendarWeekCell, __assign({}, cellProps, {\n key: uniqueID\n }), weekCellValue);\n };\n\n _this.buildRow = function (row) {\n return row.map(function (cell, idx) {\n if (!cell) {\n return emptyCell(idx);\n }\n\n var aria = {\n 'aria-selected': cell.isSelected\n };\n var uniqueID = \"kendo-react-calendar-cell-\" + cell.value.getTime();\n\n var isDisabled = cell.value.getTime() < _this.props.min.getTime() || cell.value.getTime() > _this.props.max.getTime();\n\n var cellProps = __assign({}, aria, cell, {\n isDisabled: isDisabled,\n view: _this.props.activeView,\n onClick: _this.handleClick,\n onMouseEnter: _this.handleMouseEnter,\n onMouseLeave: _this.handleMouseLeave\n });\n\n return _this.props.cell ? React.createElement(_this.props.cell, __assign({}, cellProps, {\n key: uniqueID\n }), cell.formattedValue) : React.createElement(CalendarCell, __assign({}, cellProps, {\n key: uniqueID\n }), cell.formattedValue);\n });\n };\n\n _this.firstDate = function (row) {\n var cell = _this.firstWeekDateContext(row);\n\n return cell ? cell.value : null;\n };\n\n _this.firstWeekDateContext = function (rowCtx) {\n if (!_this.weekNumber) {\n return null;\n }\n\n var idx = 0;\n var ctx = rowCtx[idx];\n\n while (!ctx && idx < rowCtx.length) {\n ctx = rowCtx[++idx];\n }\n\n return ctx;\n };\n\n _this.handleClick = function (value, event) {\n var onChange = _this.props.onChange;\n\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\n _this.handleMouseEnter = function (value) {\n var onCellEnter = _this.props.onCellEnter;\n\n if (onCellEnter) {\n onCellEnter.call(undefined, cloneDate(value));\n }\n };\n\n _this.handleMouseLeave = function (value) {\n var onCellLeave = _this.props.onCellLeave;\n\n if (onCellLeave) {\n onCellLeave.call(undefined, cloneDate(value));\n }\n };\n\n return _this;\n }\n\n Object.defineProperty(View.prototype, \"isHorizontal\", {\n get: function get() {\n return this.props.direction === 'horizontal';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(View.prototype, \"isMonthView\", {\n get: function get() {\n return this.props.activeView === CalendarViewEnum.month;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(View.prototype, \"weekNumber\", {\n get: function get() {\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 get() {\n return this.props.selectedDate !== undefined ? this.props.selectedDate : View.defaultProps.selectedDate;\n },\n enumerable: true,\n configurable: true\n });\n\n View.prototype.render = function () {\n var _this = this;\n\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 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(\"tbody\", {\n role: \"rowgroup\"\n }, !this.isHorizontal && React.createElement(\"tr\", {\n role: \"row\"\n }, React.createElement(\"th\", {\n scope: \"col\",\n colSpan: colSpan\n }, title)), this.isMonthView && this.isHorizontal && React.createElement(\"tr\", {\n role: \"row\"\n }, weekNames.map(function (name, idx) {\n return React.createElement(\"th\", {\n key: idx\n }, name);\n })), data.map(function (row, idx) {\n return React.createElement(\"tr\", {\n role: \"row\",\n key: idx\n }, _this.weekNumber && _this.buildWeekNumber(row, idx), _this.buildRow(row));\n }));\n };\n\n View.prototype.getWeekNumber = function (date) {\n if (!this.weekNumber) {\n return null;\n }\n\n return weekInYear(date, this.intl.firstDay());\n };\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);\n\nexport { View };\nregisterForIntl(View);","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\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 */\n\nvar CalendarHeaderTitle =\n/** @class */\nfunction (_super) {\n __extends(CalendarHeaderTitle, _super);\n\n function CalendarHeaderTitle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @return\n * Returns a `` element with the [`value`]({% slug api_dateinputs_calendarheadertitleprops %}#toc-value) of the title as a child.\n */\n\n\n CalendarHeaderTitle.prototype.render = function () {\n var _a = this.props,\n view = _a.view,\n props = __rest(_a, [\"view\"]);\n\n return React.createElement(\"span\", __assign({}, props), this.props.children);\n };\n\n return CalendarHeaderTitle;\n}(React.PureComponent);\n\nexport { CalendarHeaderTitle };","var _a;\n/**\n * @hidden\n */\n\n\nexport var prevView = 'multiviewcalendar.prevView';\n/**\n * @hidden\n */\n\nexport var nextView = 'multiviewcalendar.nextView';\n/**\n * @hidden\n */\n\nexport var increaseValue = 'dateinput.increment';\n/**\n * @hidden\n */\n\nexport var decreaseValue = 'dateinput.decrement';\n/**\n * @hidden\n */\n\nexport var today = 'calendar.today';\n/**\n * @hidden\n */\n\nexport var toggleCalendar = 'datepicker.toggleCalendar';\n/**\n * @hidden\n */\n\nexport var swapStartEnd = 'daterangepicker.swapStartEnd';\n/**\n * @hidden\n */\n\nexport var start = 'daterangepicker.start';\n/**\n * @hidden\n */\n\nexport var end = 'daterangepicker.end';\n/**\n * @hidden\n */\n\nexport var separator = 'daterangepicker.separator';\n/**\n * @hidden\n */\n\nexport var toggleDateTimeSelector = 'datetimepicker.toggleDateTimeSelector';\n/**\n * @hidden\n */\n\nexport var now = 'timepicker.now';\n/**\n * @hidden\n */\n\nexport var selectNow = 'timepicker.selectNow';\n/**\n * @hidden\n */\n\nexport var timePickerCancel = 'timepicker.cancel';\n/**\n * @hidden\n */\n\nexport var timePickerSet = 'timepicker.set';\n/**\n * @hidden\n */\n\nexport var toggleTimeSelector = 'timepicker.toggleTimeSelector';\n/**\n * @hidden\n */\n\nexport var toggleClock = 'timepicker.toggleClock';\n/**\n * @hidden\n */\n\nexport var date = 'datetimepicker.date';\n/**\n * @hidden\n */\n\nexport var time = 'datetimepicker.time';\n/**\n * @hidden\n */\n\nexport var dateTimePickerCancel = 'datetimepicker.cancel';\n/**\n * @hidden\n */\n\nexport var dateTimePickerSet = 'datetimepicker.set';\n/**\n * @hidden\n */\n\nexport var messages = (_a = {}, _a[today] = 'TODAY', _a[now] = 'NOW', _a[timePickerSet] = 'Set', _a[timePickerCancel] = 'Cancel', _a[date] = 'Date', _a[time] = 'Time', _a[dateTimePickerCancel] = 'Cancel', _a[dateTimePickerSet] = 'Set', _a[start] = 'Start', _a[end] = 'End', _a[separator] = ' ', _a[selectNow] = 'Select Now', _a[toggleTimeSelector] = 'Toggle TimeSelector', _a[toggleClock] = 'Toggle Clock', _a[increaseValue] = 'Increase value', _a[decreaseValue] = 'Decrease value', _a[toggleCalendar] = 'Toggle calendar', _a[prevView] = 'Navigate to previous view', _a[nextView] = 'Navigate to next view', _a[swapStartEnd] = 'Swap start and end values', _a[toggleDateTimeSelector] = 'Toggle date-time selector', _a);","/**\n * @hidden\n */\nexport var MIDNIGHT_DATE = new Date(1980, 0, 1);\n/**\n * @hidden\n */\n\nexport var MIN_DATE = new Date(1900, 0, 1);\n/**\n * @hidden\n */\n\nexport var MAX_DATE = new Date(2099, 11, 31);\n/**\n * @hidden\n */\n\nexport var MIN_TIME = new Date(1980, 0, 1);\n/**\n * @hidden\n */\n\nexport var MAX_TIME = new Date(1980, 0, 1, 23, 59, 59);","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { getDate } from '@progress/kendo-date-math';\nimport { classNames } from '@progress/kendo-react-common';\nimport { CalendarHeaderTitle } from './CalendarHeaderTitle';\nimport { messages, today } from '../../messages';\nimport { getToday, isInRange, dateInRange, MAX_DATE } from '../../utils';\nimport { MIN_DATE } from '../../defaults';\n/**\n * @hidden\n */\n\nvar Header =\n/** @class */\nfunction (_super) {\n __extends(Header, _super);\n\n function Header() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.getTitle = function () {\n if (!_this.props.currentDate) {\n return '';\n }\n\n var take = _this.rangeLength - 1;\n\n var title = _this.props.service.title(_this.props.currentDate);\n\n var nextDate = _this.props.service.addToDate(_this.props.currentDate, take);\n\n if (take < 1 || !_this.props.service.isInRange(nextDate, _this.min, _this.max)) {\n return title;\n }\n\n return title + \" - \" + _this.props.service.title(nextDate);\n };\n\n _this.handleTitleClick = function (event) {\n if (!_this.navigate) {\n return;\n }\n\n _this.props.bus.moveUp(_this.props.activeView, event);\n };\n\n _this.handleTodayClick = function (event) {\n if (!_this.todayIsInRange) {\n return;\n }\n\n _this.props.bus.moveToBottom(_this.props.activeView);\n\n var onTodayClick = _this.props.onTodayClick;\n\n if (onTodayClick) {\n var args = {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: dateInRange(getToday(), _this.min, _this.max),\n target: _this\n };\n onTodayClick.call(undefined, args);\n }\n };\n\n return _this;\n }\n\n Object.defineProperty(Header.prototype, \"min\", {\n get: function get() {\n return this.props.min !== undefined ? this.props.min : Header.defaultProps.min;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Header.prototype, \"max\", {\n get: function get() {\n return this.props.max !== undefined ? this.props.max : Header.defaultProps.max;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Header.prototype, \"rangeLength\", {\n get: function get() {\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, \"navigate\", {\n get: function get() {\n return this.props.bus.canMoveUp(this.props.activeView);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Header.prototype, \"todayIsInRange\", {\n get: function get() {\n return isInRange(getToday(), getDate(this.min), getDate(this.max));\n },\n enumerable: true,\n configurable: true\n });\n\n Header.prototype.render = function () {\n this.localization = provideLocalizationService(this);\n var todayMessage = this.localization.toLanguageString(today, messages[today]);\n var title = this.getTitle();\n var titleClassNames = classNames('k-button k-bare k-title', {\n 'k-state-disabled': !this.navigate\n });\n var todayClassNames = classNames('k-today', {\n 'k-state-disabled': !this.todayIsInRange\n });\n var headerTitleProps = {\n children: title,\n value: title,\n view: this.props.activeView,\n className: titleClassNames,\n onClick: this.handleTitleClick\n };\n var headerTitle = this.props.headerTitle ? React.createElement(this.props.headerTitle, __assign({}, headerTitleProps), title) : React.createElement(CalendarHeaderTitle, __assign({}, headerTitleProps), title);\n return React.createElement(\"div\", {\n className: \"k-calendar-header\"\n }, headerTitle, React.createElement(\"span\", {\n className: todayClassNames,\n onClick: this.handleTodayClick\n }, todayMessage));\n };\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 onTodayClick: PropTypes.func,\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);\n\nexport { Header };\nregisterForLocalization(Header);","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { cloneDate, 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, shiftWeekNames } from '../../utils';\nimport { CalendarViewEnum } from '../models';\nvar VIEWS_COUNT = 5;\n/**\n * @hidden\n */\n\nvar ViewList =\n/** @class */\nfunction (_super) {\n __extends(ViewList, _super);\n\n function ViewList(props) {\n var _this = _super.call(this, props) || this;\n\n _this.isActive = false;\n _this.animateToIndex = true;\n _this.shouldScroll = false;\n\n _this.focusActiveDate = function () {\n if (!_this._element) {\n return;\n }\n\n var focusedCell = _this._element.querySelector(\"td.k-state-focused\");\n\n var nextActiveCell = _this._element.querySelector('.k-state-pending-focus');\n\n if (focusedCell && focusedCell[0]) {\n focusedCell[0].classList.remove('k-state-focused');\n }\n\n if (nextActiveCell) {\n nextActiveCell.classList.add('k-state-focused');\n }\n\n _this.isActive = true;\n };\n\n _this.blurActiveDate = function () {\n if (!_this._element) {\n return;\n }\n\n var focusedCell = _this._element.querySelector(\"td.k-state-focused\");\n\n if (focusedCell) {\n focusedCell.classList.remove('k-state-focused');\n }\n\n _this.isActive = false;\n };\n\n _this.handleVirtualizationMount = function (virtualization) {\n _this.virtualization = virtualization;\n\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\n var indexToScroll = _this.props.service.skip(viewDate, _this.props.min);\n\n _this.virtualization.scrollToIndex(indexToScroll);\n }\n };\n\n _this.buildMonthView = function (cols, weekNames) {\n return React.createElement(\"table\", {\n key: \"calendar-view-list-weekdays\",\n className: \"k-calendar-weekdays\"\n }, React.createElement(\"colgroup\", null, cols.map(function (_, idx) {\n return React.createElement(\"col\", {\n key: idx\n });\n })), React.createElement(\"thead\", null, React.createElement(\"tr\", null, weekNames.map(function (name, idx) {\n return React.createElement(\"th\", {\n key: idx\n }, name);\n }))));\n };\n\n _this.buildDates = function (cols, dates) {\n var cellUID = _this.props.cellUID;\n return React.createElement(\"table\", {\n ref: function ref(table) {\n return _this.table = table;\n }\n }, React.createElement(\"colgroup\", null, cols.map(function (_, idx) {\n return React.createElement(\"col\", {\n key: idx\n });\n })), dates.map(function (date) {\n return React.createElement(View, {\n ref: function ref(el) {\n if (!_this.calendarView) {\n _this.calendarView = el;\n }\n },\n key: date.getTime(),\n activeView: _this.props.activeView,\n viewDate: date,\n min: _this.props.min,\n max: _this.props.max,\n cellUID: cellUID,\n focusedDate: _this.props.focusedDate,\n cell: _this.props.cell,\n selectedDate: _this.props.value,\n showWeekNumbers: _this.weekNumber,\n onChange: _this.handleDateChange,\n bus: _this.props.bus,\n service: _this.props.service,\n weekCell: _this.props.weekCell\n });\n }));\n };\n\n _this.calculateHeights = function () {\n if (!_this.props.dom) {\n return;\n }\n\n var scrollableHeight = _this.props.activeView === CalendarViewEnum.month ? _this.props.dom.scrollableContentHeight : _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\n _this.getTake = function (skip, total) {\n return Math.min(total - skip, _this.take);\n };\n\n _this.handleScrollAction = function (_a) {\n var index = _a.index,\n scrollAction = _a.scrollAction,\n pageAction = _a.pageAction;\n var skip = pageAction ? pageAction.skip : _this.state.skip;\n\n if (_this.state.index !== index || _this.state.skip !== skip) {\n _this.setState({\n index: index,\n skip: skip\n });\n }\n\n if (_this.table && scrollAction) {\n var translate = \"translateY(\" + scrollAction.offset + \"px)\";\n _this.table.style.transform = translate;\n }\n };\n\n _this.handleTodayClick = function (event) {\n _this.shouldScroll = true;\n\n _this.handleDateChange.call(undefined, event, true);\n };\n\n _this.handleDateChange = function (event, isTodayClick) {\n if (isTodayClick === void 0) {\n isTodayClick = false;\n }\n\n var onChange = _this.props.onChange;\n\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\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\n Object.defineProperty(ViewList.prototype, \"element\", {\n get: function get() {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ViewList.prototype, \"weekNames\", {\n get: function get() {\n this.intl = provideIntlService(this);\n var weekNames = shiftWeekNames(this.intl.dateFormatNames({\n nameType: 'short',\n type: 'days'\n }), 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 get() {\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 get() {\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 get() {\n return Boolean(this.props.smoothScroll && this.animateToIndex);\n },\n enumerable: true,\n configurable: true\n });\n\n ViewList.prototype.componentDidUpdate = function (_prevProps, _prevState) {\n this.shouldScroll = false;\n\n if (this.indexToScroll !== undefined && this.virtualization) {\n this.virtualization[this.animate ? 'animateToIndex' : 'scrollToIndex'](this.indexToScroll);\n }\n\n if (this.isActive) {\n this.focusActiveDate();\n }\n\n this.lastView = this.props.activeView; // this.lastFocus = this.props.focusedDate;\n\n this.indexToScroll = undefined;\n };\n\n ViewList.prototype.render = function () {\n var _this = this;\n\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\n if (didViewChanged || !isEqualDate(this.lastFocus, focusedDate) || this.shouldScroll) {\n this.indexToScroll = this.props.service.skip(focusedDate, this.props.min);\n }\n\n this.lastFocus = focusedDate;\n var rootClassNames = classNames('k-calendar-view', {\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(Header, {\n key: \"calendar-view-list-header\",\n currentDate: activeDate,\n min: this.props.min,\n max: this.props.max,\n activeView: this.props.activeView,\n onTodayClick: this.handleTodayClick,\n bus: this.props.bus,\n service: this.props.service,\n headerTitle: this.props.headerTitle\n }), this.props.activeView === CalendarViewEnum.month && this.buildMonthView(cols, this.weekNames), React.createElement(Virtualization, {\n key: \"calendar-view-list-content\",\n skip: skip,\n take: this.take,\n total: total,\n itemHeight: this.viewHeight,\n topOffset: this.viewOffset,\n bottomOffset: this.bottomOffset,\n scrollOffsetSize: this.viewOffset,\n maxScrollDifference: this.viewHeight,\n onScrollAction: this.handleScrollAction,\n onMount: this.handleVirtualizationMount,\n children: dates\n })];\n return React.createElement(\"div\", {\n ref: function ref(el) {\n _this._element = el;\n },\n className: rootClassNames\n }, this.props.dom.didCalculate ? viewListBody : null);\n };\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);\n\nexport { ViewList };\nregisterForIntl(ViewList);","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\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 */\n\nvar CalendarNavigationItem =\n/** @class */\nfunction (_super) {\n __extends(CalendarNavigationItem, _super);\n\n function CalendarNavigationItem() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.handleClick = function (event) {\n var _a = _this.props,\n onClick = _a.onClick,\n value = _a.value;\n\n if (onClick) {\n onClick.call(undefined, value, event);\n }\n };\n\n return _this;\n }\n /**\n * @return\n * Returns a `
  • ` element with a `` inside. The text inside represents the [`value`]({% slug api_dateinputs_calendarnavigationitemprops %}#toc-value) of the `navigationItem`.\n */\n\n\n CalendarNavigationItem.prototype.render = function () {\n var _a = this.props,\n isRangeStart = _a.isRangeStart,\n value = _a.value,\n text = _a.text,\n other = __rest(_a, [\"isRangeStart\", \"value\", \"text\"]);\n\n return React.createElement(\"li\", __assign({}, other, {\n onClick: this.handleClick\n }), React.createElement(\"span\", {\n className: classNames({\n 'k-calendar-navigation-marker': isRangeStart\n })\n }, this.props.children));\n };\n\n return CalendarNavigationItem;\n}(React.Component);\n\nexport { CalendarNavigationItem };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\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 */\n\nvar Navigation =\n/** @class */\nfunction (_super) {\n __extends(Navigation, _super);\n\n function Navigation(props) {\n var _this = _super.call(this, props) || this;\n\n _this.topOffset = 0;\n\n _this.handleVirtualizationMount = function (virtualization) {\n _this.virtualization = virtualization;\n\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\n var indexToScroll = _this.props.service.skip(viewDate, _this.props.min);\n\n _this.virtualization.scrollToIndex(indexToScroll);\n }\n };\n\n _this.buildNavigationItem = function (date) {\n var text = _this.props.service.navigationTitle(date);\n\n var isRangeStart = _this.props.service.isRangeStart(date);\n\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 ? React.createElement(_this.props.navigationItem, __assign({}, navigationItemProps, {\n key: uniqueID\n }), text) : React.createElement(CalendarNavigationItem, __assign({}, navigationItemProps, {\n key: uniqueID\n }), text);\n };\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\n _this.handleDateChange = function (value, event) {\n var onChange = _this.props.onChange;\n\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\n _this.handleScrollAction = function (_a) {\n var scrollAction = _a.scrollAction,\n pageAction = _a.pageAction;\n var skip = pageAction ? pageAction.skip : _this.state.skip;\n\n if (_this.state.skip !== skip) {\n _this.setState({\n skip: skip\n });\n }\n\n if (_this.list && scrollAction) {\n var translate = \"translateY(\" + scrollAction.offset + \"px)\";\n _this.list.style.transform = translate;\n }\n };\n\n _this.lastView = _this.props.activeView;\n _this.lastFocus = _this.props.focusedDate;\n\n var skip = _this.props.service.skip(_this.props.focusedDate, _this.props.min);\n\n var total = _this.props.service.total(_this.props.min, _this.props.max);\n\n _this.state = {\n skip: skip - _this.getTake(skip, total) > 0 ? skip : 0\n };\n return _this;\n }\n\n Object.defineProperty(Navigation.prototype, \"take\", {\n get: function get() {\n return this.props.take !== undefined ? this.props.take : Navigation.defaultProps.take;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n Navigation.prototype.componentDidUpdate = function (_prevProps, _prevState) {\n if (this.indexToScroll !== undefined && this.virtualization) {\n this.virtualization.scrollToIndex(this.indexToScroll);\n }\n\n this.lastView = this.props.activeView;\n this.lastFocus = this.props.focusedDate;\n this.indexToScroll = undefined;\n };\n\n Navigation.prototype.render = function () {\n var _this = this;\n\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\n if (this.props.activeView !== this.lastView || !isEqual(focusedDate, this.lastFocus)) {\n this.indexToScroll = this.props.service.skip(focusedDate, this.props.min);\n }\n\n var navigationBody = React.createElement(Virtualization, {\n skip: skip,\n take: this.take,\n total: total,\n itemHeight: this.itemHeight,\n topOffset: this.topOffset,\n bottomOffset: this.bottomOffset,\n maxScrollDifference: this.maxViewHeight,\n onScrollAction: this.handleScrollAction,\n onMount: this.handleVirtualizationMount\n }, React.createElement(\"ul\", {\n ref: function ref(el) {\n _this.list = el;\n },\n className: \"k-reset\"\n }, dates.map(function (date) {\n return _this.buildNavigationItem(date);\n })));\n return React.createElement(\"div\", {\n className: \"k-calendar-navigation\"\n }, React.createElement(\"span\", {\n className: \"k-calendar-navigation-highlight\"\n }), this.props.dom.didCalculate ? navigationBody : null);\n };\n\n Navigation.prototype.getTake = function (skip, total) {\n return Math.min(total - skip, this.take);\n };\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);\n\nexport { Navigation };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, guid, Keys } from '@progress/kendo-react-common';\nimport { cloneDate, getDate, isEqualDate } from '@progress/kendo-date-math';\nimport { provideIntlService, registerForIntl } from '@progress/kendo-react-intl';\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';\n\nvar virtualizationProp = function virtualizationProp(x) {\n return x ? x.virtualization : null;\n};\n\nvar calculateValue = function calculateValue(min, max, stateValue, propValue) {\n if (min === void 0) {\n min = Calendar.defaultProps.min;\n }\n\n if (max === void 0) {\n max = Calendar.defaultProps.max;\n }\n\n return propValue !== undefined ? propValue !== null && isInRange(propValue, min, max) ? propValue : null : stateValue !== null && isInRange(stateValue, min, max) ? stateValue : null;\n};\n\nvar Calendar =\n/** @class */\nfunction (_super) {\n __extends(Calendar, _super);\n\n function Calendar(props) {\n var _this = _super.call(this, props) || this;\n\n _this.cellUID = guid();\n _this.id = guid();\n _this.isActive = false;\n\n _this.handleScroll = function (event) {\n if (!_this.scrollSyncService) {\n return;\n }\n\n _this.scrollSyncService.sync(virtualizationProp(_this.Navigation), virtualizationProp(_this.calendarViewList), event);\n };\n\n _this.handleNavigationChange = function (event) {\n if (_this.props.disabled) {\n return;\n }\n\n var focusedDate = cloneDate(event.value);\n\n _this.setState({\n focusedDate: focusedDate\n });\n };\n\n _this.handleViewChange = function (_a) {\n var view = _a.view;\n\n _this.scrollSyncService.configure(view);\n\n _this.setState({\n activeView: view\n });\n };\n\n _this.handleDateChange = function (event) {\n var value = cloneDate(event.value);\n var focusedDate = cloneDate(event.value);\n\n var canNavigateDown = _this.bus.canMoveDown(_this.state.activeView);\n\n if (_this.props.disabled) {\n return;\n }\n\n if (canNavigateDown) {\n if (event.isTodayClick) {\n _this.bus.moveToBottom(_this.state.activeView);\n } else {\n _this.bus.moveDown(_this.state.activeView, event.syntheticEvent);\n\n _this.setState({\n focusedDate: focusedDate\n });\n\n return;\n }\n }\n\n _this.setState({\n value: value,\n focusedDate: focusedDate\n });\n\n _this.valueDuringOnChange = value;\n var onChange = _this.props.onChange;\n\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\n _this.valueDuringOnChange = undefined;\n };\n\n _this.handleFocus = function (event) {\n _this.isActive = true;\n\n if (!_this.calendarViewList) {\n return;\n }\n\n _this.calendarViewList.focusActiveDate();\n\n var onFocus = _this.props.onFocus;\n\n if (onFocus) {\n onFocus.call(undefined, event);\n }\n };\n\n _this.handleBlur = function (event) {\n _this.isActive = false;\n\n if (!_this.calendarViewList) {\n return;\n }\n\n _this.calendarViewList.blurActiveDate();\n\n var onBlur = _this.props.onBlur;\n\n if (onBlur) {\n onBlur.call(undefined, event);\n }\n };\n\n _this.handleKeyDown = function (event) {\n var keyCode = event.keyCode;\n\n if (keyCode === Keys.enter) {\n if (_this.value !== null && 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\n var args = {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: _this.focusedDate,\n target: _this\n };\n\n _this.handleDateChange.call(undefined, args);\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\n if (isEqualDate(_this.focusedDate, candidate)) {\n return;\n }\n\n _this.setState({\n focusedDate: candidate\n });\n }\n\n event.preventDefault();\n };\n\n _this.handleMouseDown = function (event) {\n event.preventDefault();\n };\n\n _this.handleClick = function (_) {\n if (_this._element) {\n _this._element.focus({\n preventScroll: true\n });\n }\n };\n\n var value = calculateValue(_this.min, _this.max, _this.props.defaultValue || Calendar.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 || value || 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\n Object.defineProperty(Calendar.prototype, \"element\", {\n /**\n * Gets the wrapping element of the Calendar.\n */\n get: function get() {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Calendar.prototype, \"value\", {\n /**\n * Gets the value of the Calendar.\n */\n get: function get() {\n return this.valueDuringOnChange !== undefined ? this.valueDuringOnChange : this.props.value !== undefined ? this.props.value : this.state.value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Calendar.prototype, \"min\", {\n get: function get() {\n return getDate(this.props.min !== undefined ? this.props.min : Calendar.defaultProps.min);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Calendar.prototype, \"max\", {\n get: function get() {\n return getDate(this.props.max !== undefined ? this.props.max : Calendar.defaultProps.max);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Calendar.prototype, \"bottomView\", {\n get: function get() {\n return CalendarViewEnum[this.props.bottomView !== undefined ? this.props.bottomView : Calendar.defaultProps.bottomView];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Calendar.prototype, \"topView\", {\n get: function get() {\n return CalendarViewEnum[this.props.topView !== undefined ? this.props.topView : Calendar.defaultProps.topView];\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n Calendar.prototype.componentDidMount = function () {\n var _this = this; // Async calculation of height to avoid animation cancellation\n\n\n Promise.resolve().then(function () {\n if (!_this._element) {\n return;\n }\n\n _this.dom.calculateHeights(_this._element);\n\n _this.scrollSyncService = new ScrollSyncService(_this.dom);\n\n _this.scrollSyncService.configure(_this.state.activeView);\n\n _this.forceUpdate();\n });\n };\n /**\n * @hidden\n */\n\n\n Calendar.prototype.componentDidUpdate = function (_, prevState) {\n if (prevState.activeView !== this.state.activeView) {\n this.scrollSyncService.configure(this.state.activeView);\n }\n\n if (this.calendarViewList) {\n this.isActive ? this.calendarViewList.focusActiveDate() : this.calendarViewList.blurActiveDate();\n }\n\n this.oldValue = this.value;\n };\n /**\n * @hidden\n */\n\n\n Calendar.prototype.render = function () {\n var _this = this;\n\n var didValueChange = this.value !== null && this.oldValue !== null ? !isEqualDate(this.value, this.oldValue) : this.value !== this.oldValue;\n var activeView = viewInRange(this.state.activeView, CalendarViewEnum[this.props.bottomView !== undefined ? this.props.bottomView : Calendar.defaultProps.bottomView], CalendarViewEnum[this.props.topView !== undefined ? this.props.topView : Calendar.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 ? value : 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, {\n key: 0,\n ref: function ref(el) {\n _this.Navigation = el;\n },\n activeView: this.state.activeView,\n focusedDate: this.focusedDate,\n min: this.min,\n max: this.max,\n onChange: this.handleNavigationChange,\n service: this.service,\n dom: this.dom,\n navigationItem: this.props.navigationItem\n }), React.createElement(ViewList, {\n key: 1,\n ref: function ref(el) {\n _this.calendarViewList = el;\n },\n activeView: this.state.activeView,\n focusedDate: this.focusedDate,\n min: this.min,\n max: this.max,\n bus: this.bus,\n service: this.service,\n cell: this.props.cell,\n weekCell: this.props.weekCell,\n dom: this.dom,\n smoothScroll: this.props.smoothScroll,\n showWeekNumbers: this.props.weekNumber,\n onChange: this.handleDateChange,\n value: sanitizedValue,\n cellUID: this.cellUID,\n headerTitle: this.props.headerTitle\n })];\n return React.createElement(\"div\", __assign({}, aria, {\n ref: function ref(el) {\n _this._element = el;\n },\n className: rootClassNames,\n id: this.props.id || this.id,\n role: \"grid\",\n tabIndex: !this.props.disabled ? this.props.tabIndex || 0 : undefined,\n onScroll: this.handleScroll,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyDown: this.handleKeyDown,\n onMouseDown: this.handleMouseDown,\n onClick: this.handleClick\n }), calendarBody);\n };\n /**\n * @hidden\n */\n\n\n Calendar.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 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 topView(props, propName, componentName) {\n var prop = props[propName];\n var bottomView = props.bottomView;\n\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 },\n bottomView: function bottomView(props, propName, componentName) {\n var prop = props[propName];\n var topView = props.topView;\n\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 }\n };\n /**\n * @hidden\n */\n\n Calendar.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 Calendar;\n}(React.Component);\n\nexport { Calendar };\nregisterForIntl(Calendar);","/**\n * @hidden\n */\nvar Mask =\n/** @class */\nfunction () {\n function Mask() {\n this.symbols = '';\n }\n\n return Mask;\n}();\n\nexport { Mask };","/**\n * @hidden\n */\nexport var defaultFormat = 'd';\n/**\n * @hidden\n */\n\nexport var defaultFormatPlaceholder = 'wide';\n/**\n * @hidden\n */\n\nexport var padZero = function padZero(length) {\n return new Array(Math.max(length, 0)).fill('0').join('');\n};\n/**\n * @hidden\n */\n\nexport var approximateStringMatching = function approximateStringMatching(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\n if (oldText === newText && selectionStart > 0) {\n diff.push([oldFormat[selectionStart - 1], newText[selectionStart - 1]]);\n return diff;\n }\n\n if (oldText.indexOf(newText) === 0 && (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\n if (newText.length === 1) {\n diff.push([oldFormat[0], newText[0]]);\n }\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\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\n\n if (newText.indexOf(oldText) === 0 || oldFormat[selectionStart - 1] === '_') {\n var symbol = oldFormat[0];\n\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\n return [[symbol, newText[selectionStart - 1]]];\n }\n /* Handle the entering of a space or a separator for navigating to the next item. */\n\n\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\n\n return [[oldFormat[selectionStart - 1], newText[selectionStart - 1]]];\n};\n/**\n * @hidden\n */\n\nexport var dateSymbolMap = function dateSymbolMap(map, part) {\n map[part.pattern[0]] = part.type;\n return map;\n};\n/**\n * @hidden\n */\n\nexport var isInRange = function isInRange(candidate, min, max) {\n return candidate === null || !(min && min > candidate || max && max < candidate);\n};\n/**\n * @hidden\n */\n\nexport var invalidClasses = ['k-state-invalid'];\n/**\n * @hidden\n */\n\nexport var wrapperClasses = ['k-widget', 'k-dateinput'];","import { addMonths, cloneDate, createDate, isEqual, getDate, lastDayOfMonth } from '@progress/kendo-date-math';\nimport { Mask } from './mask';\nimport { dateSymbolMap } from './../utils';\n/**\n * @hidden\n */\n\nvar KendoDate =\n/** @class */\nfunction () {\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\n Object.defineProperty(KendoDate.prototype, \"intl\", {\n get: function get() {\n return this.intlProvider();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(KendoDate.prototype, \"value\", {\n get: function get() {\n return this._value;\n },\n enumerable: true,\n configurable: true\n });\n\n KendoDate.prototype.setValue = function (value) {\n if (!value) {\n this._value = getDate(new Date());\n this.modifyExisting(false);\n } else if (!isEqual(value, this._value)) {\n this._value = cloneDate(value);\n this.modifyExisting(true);\n }\n };\n\n KendoDate.prototype.hasValue = function () {\n var _this = this;\n\n var pred = function pred(a, p) {\n return a || p.type !== 'literal' && p.type !== 'dayperiod' && _this.getExisting(p.pattern[0]);\n };\n\n return this.intl.splitDateFormat(this.format).reduce(pred, false);\n };\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\n return cloneDate(this.value);\n };\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\n KendoDate.prototype.modifyExisting = function (value) {\n var sampleFormat = this.dateFormatString(this.value, this.format).symbols;\n\n for (var i = 0; i < sampleFormat.length; i++) {\n this.setExisting(sampleFormat[i], value);\n }\n };\n\n KendoDate.prototype.getExisting = function (symbol) {\n switch (symbol) {\n case 'y':\n return this.year;\n\n case 'M':\n case 'L':\n return this.month;\n\n case 'd':\n return this.date;\n\n case 'E':\n return this.date && this.month && this.year;\n\n case 'h':\n case 'H':\n return this.hours;\n\n case 'm':\n return this.minutes;\n\n case 's':\n return this.seconds;\n\n default:\n return true;\n }\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\n if (value === false) {\n this._value.setFullYear(2000);\n }\n\n break;\n\n case 'M':\n // make sure you can type 31 in the day part\n this.month = value;\n\n if (value === false) {\n this._value.setMonth(0);\n }\n\n break;\n\n case 'd':\n this.date = value;\n break;\n\n case 'h':\n case 'H':\n this.hours = value;\n break;\n\n case 'm':\n this.minutes = value;\n break;\n\n case 's':\n this.seconds = value;\n break;\n\n default:\n return;\n }\n };\n\n KendoDate.prototype.modifyPart = function (symbol, offset) {\n var newValue = cloneDate(this.value);\n\n switch (symbol) {\n case 'y':\n newValue.setFullYear(newValue.getFullYear() + offset);\n break;\n\n case 'M':\n newValue = addMonths(this.value, offset);\n break;\n\n case 'd':\n case 'E':\n newValue.setDate(newValue.getDate() + offset);\n break;\n\n case 'h':\n case 'H':\n newValue.setHours(newValue.getHours() + offset);\n break;\n\n case 'm':\n newValue.setMinutes(newValue.getMinutes() + offset);\n break;\n\n case 's':\n newValue.setSeconds(newValue.getSeconds() + offset);\n break;\n\n case 'a':\n newValue.setHours(newValue.getHours() + 12 * offset);\n break;\n\n default:\n break;\n }\n\n this.setExisting(symbol, true);\n this._value = newValue;\n };\n\n KendoDate.prototype.parsePart = function (symbol, currentChar) {\n var _a;\n\n this.resetLeadingZero();\n\n if (!currentChar) {\n this.setExisting(symbol, false);\n return {\n value: null\n };\n }\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\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 } else if (!replaced) {\n prefix += baseDate[i];\n } else {\n suffix += baseDate[i];\n }\n }\n\n var parsedDate = null;\n var month = this.matchMonth(currentChar);\n\n while (current.length > 0 && current.charAt(0) === '0') {\n current = current.slice(1);\n }\n\n if (current.length >= 4) {\n current = '';\n }\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\n if (!parsedDate && !isNaN(middleNumber) && !isNaN(parseInt(currentChar, 10))) {\n if (symbol === 'M' && !month) {\n var monthNumber = middleNumber - 1;\n\n if (monthNumber > -1 && monthNumber < 12) {\n parsedDate = cloneDate(this.value);\n parsedDate.setMonth(monthNumber);\n\n if (parsedDate.getMonth() !== monthNumber) {\n parsedDate = lastDayOfMonth(addMonths(parsedDate, -1));\n }\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\n if (this.date && parsedDate.getDate() !== this.value.getDate()) {\n parsedDate = lastDayOfMonth(addMonths(parsedDate, -1));\n }\n }\n }\n\n if (parsedDate) {\n this._value = parsedDate;\n this.setExisting(symbol, true);\n return {\n value: this.value\n };\n }\n\n current = '';\n }\n\n if (month) {\n parsedDate = this.intl.parseDate(prefix + month + suffix, this.format);\n\n if (parsedDate) {\n this._value = parsedDate;\n this.setExisting(symbol, true);\n return {\n value: this.value\n };\n }\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\n return {\n value: null\n };\n };\n\n KendoDate.prototype.symbolMap = function (symbol) {\n return this.intl.splitDateFormat(this.format).reduce(dateSymbolMap, {})[symbol];\n };\n\n KendoDate.prototype.resetLeadingZero = function () {\n var hasLeadingZero = this.leadingZero !== null;\n this.leadingZero = null;\n return hasLeadingZero;\n };\n\n KendoDate.prototype.isAbbrMonth = function (parts, symbol) {\n var pattern = this.partPattern(parts, symbol);\n return pattern.type === 'month' && pattern.names;\n };\n\n KendoDate.prototype.partPattern = function (parts, symbol) {\n return parts.filter(function (part) {\n return part.pattern.indexOf(symbol) !== -1;\n })[0];\n };\n\n KendoDate.prototype.matchMonth = function (typedChar) {\n this.typedMonthPart += typedChar.toLowerCase();\n\n if (this.monthNames.length === 0) {\n return '';\n }\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\n var monthAsNum = parseInt(this.typedMonthPart, 10);\n /* ensure they exact match */\n\n if (monthAsNum >= 1 && monthAsNum <= 12 && monthAsNum.toString() === this.typedMonthPart) {\n return this.monthNames[monthAsNum - 1];\n }\n\n this.typedMonthPart = this.typedMonthPart.substring(1, this.typedMonthPart.length);\n }\n\n return '';\n };\n\n KendoDate.prototype.allFormatedMonths = function () {\n var dateFormatParts = this.intl.splitDateFormat(this.format);\n\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\n return [];\n };\n\n KendoDate.prototype.dateFormatString = function (date, format) {\n var dateFormatParts = this.intl.splitDateFormat(format);\n var parts = [];\n var partMap = [];\n\n for (var i = 0; i < dateFormatParts.length; i++) {\n var partLength = this.intl.formatDate(date, {\n pattern: dateFormatParts[i].pattern\n }).length;\n\n while (partLength > 0) {\n parts.push(this.symbols[dateFormatParts[i].pattern[0]] || '_');\n partMap.push(dateFormatParts[i]);\n partLength--;\n }\n }\n\n var returnValue = new Mask();\n returnValue.symbols = parts.join('');\n returnValue.partMap = partMap;\n return returnValue;\n };\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\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 } else {\n var currentSymbol = format[r];\n\n while (r >= 0 && currentSymbol === format[r]) {\n r--;\n }\n\n r++;\n\n if (this.leadingZero && this.leadingZero[currentSymbol]) {\n resultText = '0' + resultText;\n } else {\n resultText = this.dateFieldName(mask.partMap[r]) + resultText;\n }\n\n while (resultFormat.length < resultText.length) {\n resultFormat = format[r] + resultFormat;\n }\n }\n }\n\n return {\n text: resultText,\n format: resultFormat\n };\n };\n\n KendoDate.prototype.dateFieldName = function (part) {\n var formatPlaceholder = this.formatPlaceholder || 'wide';\n\n if (formatPlaceholder[part.type]) {\n return formatPlaceholder[part.type];\n }\n\n if (formatPlaceholder === 'formatPattern') {\n return part.pattern;\n }\n\n return this.intl.dateFieldName(Object.assign(part, {\n nameType: formatPlaceholder\n }));\n };\n\n return KendoDate;\n}();\n\nexport { KendoDate };","/**\n * @hidden\n */\nexport var TIME_PART = {\n dayperiod: 'dayperiod',\n hour: 'hour',\n millisecond: 'millisecond',\n minute: 'minute',\n second: 'second'\n};","import { cloneDate, addDays } from '@progress/kendo-date-math';\nimport { TIME_PART } from './models/TimePart';\nimport { MIDNIGHT_DATE, setTime } from '../utils';\n\nvar setter = function setter(method) {\n return function (date, value) {\n var clone = cloneDate(date);\n clone[method](value);\n return clone;\n };\n};\n\nvar defaultGetters = [{\n type: TIME_PART.hour,\n getter: function getter(value) {\n return value.getHours();\n }\n}, {\n type: TIME_PART.minute,\n getter: function getter(value) {\n return value.getMinutes();\n }\n}, {\n type: TIME_PART.second,\n getter: function getter(value) {\n return value.getSeconds();\n }\n}, {\n type: TIME_PART.millisecond,\n getter: function getter(value) {\n return value.getMilliseconds();\n }\n}];\n\nvar left = function left(getter) {\n return function (origin, _) {\n return getter(origin);\n };\n};\n\nvar right = function right(getter) {\n return function (_, candidate) {\n return getter(candidate);\n };\n};\n\nvar convertToObject = function convertToObject(parts) {\n return parts.reduce(function (obj, p) {\n obj[p.type] = p.type;\n return obj;\n }, {});\n};\n\nvar getterByPart = function getterByPart(parts) {\n return function (g) {\n return parts[g.type] ? right(g.getter) : left(g.getter);\n };\n};\n\nvar gettersFactory = function gettersFactory(getters) {\n return function (parts) {\n return getters.map(getterByPart(convertToObject(parts)));\n };\n};\n\nvar snapValue = function snapValue(getter, step, min, type) {\n return function (date) {\n var value = getter(date);\n var minValue = getter(min);\n\n if (type === 'hour') {\n return value - (value - minValue) % step;\n }\n\n if (date.getTime() <= min.getTime() && value !== 0 && value <= minValue) {\n return Math.ceil(value / step) * step;\n }\n\n return value - value % step;\n };\n};\n\nvar snappersFactory = function snappersFactory(getters) {\n return function (steps, min) {\n 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};\n/**\n * @hidden\n */\n\n\nexport var generateGetters = gettersFactory(defaultGetters);\n/**\n * @hidden\n */\n\nexport var generateSnappers = snappersFactory(defaultGetters);\n/**\n * @hidden\n */\n\nexport var valueMerger = function valueMerger(getters) {\n return function (origin, candidate) {\n origin.setHours.apply(origin, getters.map(function (g) {\n return g(origin, candidate);\n }));\n return origin;\n };\n};\n/**\n * @hidden\n */\n\nexport var snapTime = function snapTime(snappers) {\n return function (candidate) {\n var date = cloneDate(candidate);\n date.setHours.apply(date, snappers.map(function (s) {\n return s(date);\n }));\n return date;\n };\n};\n/**\n * @hidden\n */\n\nexport var setHours = setter('setHours');\n/**\n * @hidden\n */\n\nexport var setMinutes = setter('setMinutes');\n/**\n * @hidden\n */\n\nexport var setSeconds = setter('setSeconds');\n/**\n * @hidden\n */\n\nexport var getNow = function getNow() {\n return new Date();\n};\n/**\n * @hidden\n */\n\nexport var range = function range(start, end, step) {\n if (step === void 0) {\n step = 1;\n }\n\n var result = [];\n\n for (var i = start; i < end; i = i + step) {\n result.push(i);\n }\n\n return result;\n};\n\nvar normalizeTimes = function normalizeTimes(candidate, min, max) {\n 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/**\n * @hidden\n */\n\n\nexport var timeInRange = function timeInRange(candidate, min, max) {\n if (!candidate || !min || !max) {\n return candidate;\n }\n\n var _a = normalizeTimes(candidate, min, max),\n candidateValue = _a.candidateValue,\n minValue = _a.minValue,\n maxValue = _a.maxValue;\n\n if (candidateValue < minValue) {\n return setTime(candidate, min);\n }\n\n if (candidateValue > maxValue) {\n return setTime(candidate, max);\n }\n\n return candidate;\n};\n/**\n * @hidden\n */\n\nexport var isInTimeRange = function isInTimeRange(candidate, min, max) {\n if (!candidate || !min || !max) {\n return true;\n }\n\n var _a = normalizeTimes(candidate, min, max),\n candidateValue = _a.candidateValue,\n minValue = _a.minValue,\n maxValue = _a.maxValue;\n\n return minValue <= candidateValue && candidateValue <= maxValue;\n};\n/**\n * @hidden\n */\n\nexport var isInRange = function isInRange(candidate, min, max) {\n if (candidate === null) {\n return true;\n }\n\n var _a = normalizeTimes(candidate, min, max),\n candidateValue = _a.candidateValue,\n minValue = _a.minValue,\n maxValue = _a.maxValue;\n\n return minValue <= candidateValue && candidateValue <= maxValue;\n};\n/**\n * @hidden\n */\n\nexport var isSmallerThanMin = function isSmallerThanMin(val, min) {\n if (val === null || min === null) {\n return false;\n }\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 */\n\nexport var isBiggerThanMax = function isBiggerThanMax(val, max) {\n if (val === null || max === null) {\n return false;\n }\n\n var normalizedValue = setTime(MIDNIGHT_DATE, val);\n var normalizedMax = setTime(MIDNIGHT_DATE, max);\n return normalizedMax.getTime() < normalizedValue.getHours();\n};","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\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 { FloatingLabel, guid, noop } from '@progress/kendo-react-common';\nimport { approximateStringMatching, defaultFormat, defaultFormatPlaceholder, isInRange, invalidClasses, 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!'; // tslint:enable:max-line-length\n\nvar DateInput =\n/** @class */\nfunction (_super) {\n __extends(DateInput, _super);\n\n function DateInput() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.kendoDate = null;\n _this._element = null;\n _this._inputId = guid();\n /**\n * @hidden\n */\n\n _this.setValidity = function () {\n if (_this.element && _this.element.setCustomValidity) {\n _this.element.setCustomValidity(_this.validity.valid ? '' : _this.props.validationMessage || DateInput.defaultProps.validationMessage);\n }\n };\n /* Handlers */\n\n\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\n if (_this.element && document.activeElement !== _this.element) {\n _this.element.focus({\n preventScroll: true\n });\n }\n };\n\n _this.elementChange = function (event) {\n if (!_this.element || !_this.kendoDate) {\n return;\n }\n\n var _a = _this.kendoDate.getTextAndFormat(),\n text = _a.text,\n currentFormat = _a.format;\n\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\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\n if (diff.length && diff[0][0] !== '_') {\n _this.setSelection(_this.selectionBySymbol(diff[0][0]));\n }\n\n if (navigationOnly) {\n _this.switchDateSegment(1);\n }\n\n _this.triggerChange(event, dateBeforeChange);\n };\n\n _this.elementClick = function (_) {\n _this.setSelection(_this.selectionByIndex(_this.selection.start));\n };\n\n _this.wheel = function (event) {\n if (document.activeElement !== _this.element) {\n return;\n }\n\n if (event.nativeEvent.deltaY < 0) {\n event.preventDefault();\n\n _this.increasePart(event);\n }\n\n if (event.nativeEvent.deltaY > 0) {\n event.preventDefault();\n\n _this.decreasePart(event);\n }\n };\n\n _this.increasePart = function (event) {\n _this.modifyDateSegmentValue(1, event);\n };\n\n _this.decreasePart = function (event) {\n _this.modifyDateSegmentValue(-1, event);\n };\n\n _this.elementKeyDown = function (event) {\n if (event.altKey) {\n return;\n }\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\n break;\n\n case 38:\n /*\n * Key: `Up Arrow`\n * Action: Increases the currently selected segment value.\n */\n _this.modifyDateSegmentValue(1, event);\n\n break;\n\n case 39:\n /*\n * Key: `Right Arrow`\n * Action: Switches to the next logical segment.\n */\n _this.switchDateSegment(1);\n\n break;\n\n case 40:\n /*\n * Key: `Down Arrow`\n * Action: Decreases the currently selected segment value.\n */\n _this.modifyDateSegmentValue(-1, event);\n\n break;\n\n default:\n /*\n * Key: any\n * Action: Does not prevent the default behavior.\n */\n return;\n }\n\n event.preventDefault();\n };\n\n return _this;\n }\n /**\n * @hidden\n */\n\n\n DateInput.prototype.componentDidMount = function () {\n this.setValidity();\n };\n /**\n * @hidden\n */\n\n\n DateInput.prototype.componentDidUpdate = function () {\n if (this._lastSelectedSymbol) {\n this.setSelection(this.selectionBySymbol(this._lastSelectedSymbol));\n }\n\n this.setValidity();\n };\n /**\n * @hidden\n */\n\n\n DateInput.prototype.render = function () {\n var _this = this;\n\n var localizationService = provideLocalizationService(this);\n\n var props = __assign({}, DateInput.defaultProps, this.props);\n\n var formatPlaceholder = props.formatPlaceholder,\n format = props.format,\n value = props.value,\n min = props.min,\n max = props.max,\n name = props.name,\n label = props.label,\n id = props.id,\n defaultValue = props.defaultValue;\n\n if (this.kendoDate === null) {\n this.kendoDate = new KendoDate(this.intl.bind(this), formatPlaceholder, format);\n this.kendoDate.setValue(value || defaultValue);\n } else {\n this.kendoDate.format = format;\n this.kendoDate.formatPlaceholder = formatPlaceholder;\n }\n\n if (value !== undefined && this.value !== value) {\n this.kendoDate.setValue(value);\n }\n\n var _a = this.kendoDate.getTextAndFormat(),\n currentText = _a.text,\n currentFormat = _a.format;\n\n this.currentFormat = currentFormat;\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': currentText\n };\n\n if (this.value !== null) {\n ariaProps['aria-valuenow'] = this.value.getTime();\n }\n\n var wrapperClassesInstance = wrapperClasses.slice();\n\n if (this.props.className) {\n wrapperClassesInstance.push(this.props.className);\n }\n\n var dateinput = React.createElement(\"span\", {\n style: !label ? {\n width: this.props.width\n } : undefined,\n dir: this.props.dir,\n className: isValid ? wrapperClassesInstance.join(' ') : Array.prototype.concat([], wrapperClassesInstance, invalidClasses).join(' ')\n }, React.createElement(\"span\", {\n className: 'k-dateinput-wrap' + (this.props.disabled ? ' k-state-disabled' : '')\n }, React.createElement(\"input\", __assign({\n tabIndex: this.props.tabIndex,\n disabled: this.props.disabled,\n title: this.props.title || currentText,\n type: \"text\",\n spellCheck: false,\n autoComplete: \"off\",\n autoCorrect: \"off\",\n className: \"k-input\",\n id: inputId,\n onWheel: this.wheel,\n onClick: this.elementClick,\n onInput: this.elementChange,\n onKeyDown: this.elementKeyDown,\n onChange: noop,\n value: currentText,\n name: name\n }, ariaProps, {\n ref: function ref(input) {\n return _this._element = input;\n }\n })), this.props.children, this.props.spinners && React.createElement(\"span\", {\n className: \"k-select\",\n onMouseDown: this.spinnersMouseDown\n }, React.createElement(\"span\", {\n className: \"k-link k-link-increase\",\n \"aria-label\": localizationService.toLanguageString(increaseValue, messages[increaseValue]),\n title: localizationService.toLanguageString(increaseValue, messages[increaseValue]),\n onClick: this.increasePart\n }, React.createElement(\"span\", {\n className: \"k-icon k-i-arrow-n\"\n })), React.createElement(\"span\", {\n className: \"k-link k-link-decrease\",\n \"aria-label\": localizationService.toLanguageString(decreaseValue, messages[decreaseValue]),\n title: localizationService.toLanguageString(decreaseValue, messages[decreaseValue]),\n onClick: this.decreasePart\n }, React.createElement(\"span\", {\n className: \"k-icon k-i-arrow-s\"\n })))));\n return label ? React.createElement(FloatingLabel, {\n id: inputId,\n value: currentText,\n valid: isValid,\n label: label,\n children: dateinput,\n style: {\n width: this.props.width\n }\n }) : dateinput;\n };\n\n Object.defineProperty(DateInput.prototype, \"value\", {\n /* Public Getters */\n\n /**\n * Gets the value of the DateInput.\n */\n get: function get() {\n if (this.valueDuringOnChange !== undefined) {\n return this.valueDuringOnChange;\n }\n\n return this.kendoDate && this.kendoDate.getDateObject();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateInput.prototype, \"name\", {\n /**\n * Gets the `name` property of the DateInput.\n */\n get: function get() {\n return this.props.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateInput.prototype, \"min\", {\n get: function get() {\n return this.props.min !== undefined ? this.props.min : DateInput.defaultProps.min;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateInput.prototype, \"max\", {\n get: function get() {\n return this.props.max !== undefined ? this.props.max : DateInput.defaultProps.max;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateInput.prototype, \"validity\", {\n /**\n * Represents the validity state into which the DateInput is set.\n */\n get: function get() {\n var inRange = isInRange(this.value, this.min, this.max) && 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(DateInput.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 *
    \n * \n * this.element = dateInput ? dateInput.element : null}\n * />\n * \n *
    \n * );\n * }\n * }\n *\n * ReactDOM.render(\n * ,\n * document.getElementsByTagName('my-app')[0]\n * );\n * ```\n */\n get: function get() {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateInput.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function get() {\n return this.props.validityStyles !== undefined ? this.props.validityStyles : DateInput.defaultProps.validityStyles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateInput.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function get() {\n return this.props.required !== undefined ? this.props.required : DateInput.defaultProps.required;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n DateInput.prototype.intl = function () {\n return provideIntlService(this);\n };\n\n Object.defineProperty(DateInput.prototype, \"selection\", {\n /* end handlers */\n get: function get() {\n var returnValue = {\n start: 0,\n end: 0\n };\n\n if (this.element !== null && this.element.selectionStart !== undefined) {\n returnValue = {\n start: this.element.selectionStart,\n end: this.element.selectionEnd\n };\n }\n\n return returnValue;\n },\n enumerable: true,\n configurable: true\n });\n\n DateInput.prototype.setSelection = function (selection) {\n var _this = this;\n\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\n DateInput.prototype.triggerChange = function (event, oldValue) {\n this.valueDuringOnChange = this.value;\n this.forceUpdate();\n\n if (this.props.onChange && !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 // inRange: this.props.min && this.props.max ? isInRange(value, this.props.min, this.props.max) : true\n\n });\n }\n\n this.valueDuringOnChange = undefined;\n };\n\n DateInput.prototype.selectionBySymbol = function (symbol) {\n var start = -1;\n var end = 0;\n\n for (var i = 0; i < this.currentFormat.length; i++) {\n if (this.currentFormat[i] === symbol) {\n end = i + 1;\n\n if (start === -1) {\n start = i;\n }\n }\n }\n\n if (start < 0) {\n start = 0;\n }\n\n return {\n start: start,\n end: end\n };\n };\n\n DateInput.prototype.selectionByIndex = function (index) {\n var selection = {\n start: index,\n end: index\n };\n\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\n if (j >= 0 && this.currentFormat[j] !== '_') {\n selection = this.selectionBySymbol(this.currentFormat[j]);\n break;\n }\n }\n\n return selection;\n };\n\n DateInput.prototype.switchDateSegment = function (offset) {\n var _a = this.selection,\n selectionStart = _a.start,\n selectionEnd = _a.end;\n\n if (selectionStart < selectionEnd && this.currentFormat[selectionStart] !== this.currentFormat[selectionEnd - 1]) {\n this.setSelection(this.selectionByIndex(offset > 0 ? selectionStart : selectionEnd - 1));\n return;\n }\n\n var previousFormatSymbol = this.currentFormat[selectionStart];\n var a = selectionStart + offset;\n\n while (a > 0 && a < this.currentFormat.length) {\n if (this.currentFormat[a] !== previousFormatSymbol && this.currentFormat[a] !== '_') {\n break;\n }\n\n a += offset;\n }\n\n if (this.currentFormat[a] === '_') {\n // no known symbol is found\n return;\n }\n\n var b = a;\n\n while (b >= 0 && b < this.currentFormat.length) {\n if (this.currentFormat[b] !== this.currentFormat[a]) {\n break;\n }\n\n b += offset;\n }\n\n if (a > b && (b + 1 !== selectionStart || a + 1 !== selectionEnd)) {\n this.setSelection({\n start: b + 1,\n end: a + 1\n });\n } else if (a < b && (a !== selectionStart || b !== selectionEnd)) {\n this.setSelection({\n start: a,\n end: b\n });\n }\n };\n\n DateInput.prototype.modifyDateSegmentValue = function (offset, event) {\n if (!this.kendoDate) {\n return;\n }\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.setSelection(this.selectionBySymbol(symbol));\n this.triggerChange(event, oldValue);\n };\n /**\n * @hidden\n */\n\n\n DateInput.propTypes = {\n value: PropTypes.instanceOf(Date),\n format: PropTypes.string,\n formatPlaceholder: PropTypes.oneOfType([PropTypes.oneOf(['wide', 'narrow', 'short', 'formatPattern']), 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 width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\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 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\n DateInput.defaultProps = {\n format: defaultFormat,\n formatPlaceholder: defaultFormatPlaceholder,\n defaultValue: 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 // the rest of the properties are undefined by default\n\n };\n return DateInput;\n}(React.Component);\n\nexport { DateInput };\nregisterForIntl(DateInput);\nregisterForLocalization(DateInput);","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\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 } from '@progress/kendo-react-common';\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';\n\nvar DatePicker =\n/** @class */\nfunction (_super) {\n __extends(DatePicker, _super);\n\n function DatePicker(props) {\n var _this = _super.call(this, props) || this;\n\n _this._popupId = guid();\n _this._element = null;\n _this._wrapper = null;\n _this._dateInput = null;\n _this._calendar = null;\n _this.shouldFocusDateInput = false; // Using this, to avoid bumping the react version\n // to 16.3 and use `createRef()`;\n // Inline arrow functions is a performance hit\n // so... we use this.\n\n _this.setDateInputRef = function (dateInput) {\n _this._dateInput = dateInput;\n };\n\n _this.setCalendarRef = function (calendar) {\n _this._calendar = calendar;\n };\n\n _this.nextValue = function (nextProps, nextState) {\n return nextProps.value !== undefined ? nextProps.value : nextState.value;\n };\n\n _this.nextShow = function (nextProps, nextState) {\n return nextProps.show !== undefined ? nextProps.show : nextState.show;\n };\n\n _this.handleInputValueChange = function (event) {\n _this.handleValueChange(event.value, event);\n };\n\n _this.handleCalendarValueChange = function (event) {\n var value = _this.mergeTime(event.value);\n\n _this.handleValueChange(value, event);\n };\n\n _this.handleValueChange = function (value, event) {\n _this.setState({\n value: cloneDate(value || undefined),\n show: false\n });\n\n _this.valueDuringOnChange = value;\n _this.showDuringOnChange = false;\n _this.shouldFocusDateInput = true;\n var onChange = _this.props.onChange;\n\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\n _this.valueDuringOnChange = undefined;\n _this.showDuringOnChange = undefined;\n };\n\n _this.handleFocus = function (event) {\n clearTimeout(_this.nextTickId);\n\n if (_this._wrapper) {\n _this._wrapper.classList.add('k-state-focused');\n }\n\n var onFocus = _this.props.onFocus;\n\n if (onFocus) {\n onFocus.call(undefined, event);\n }\n };\n\n _this.handleBlur = function (event) {\n _this.nextTick(function () {\n if (_this._wrapper) {\n _this._wrapper.classList.remove('k-state-focused');\n }\n\n _this.setShow(false);\n });\n\n var onBlur = _this.props.onBlur;\n\n if (onBlur) {\n onBlur.call(undefined, event);\n }\n };\n\n _this.handleIconClick = function () {\n if (_this.props.disabled) {\n return;\n }\n\n _this.shouldFocusDateInput = true;\n\n _this.setShow(!_this.show);\n };\n\n _this.handleIconMouseDown = function (event) {\n event.preventDefault();\n };\n\n _this.handleKeyDown = function (event) {\n var altKey = event.altKey,\n keyCode = event.keyCode;\n\n if (keyCode === Keys.esc) {\n _this.setShow(false);\n\n return;\n }\n\n if (altKey && (keyCode === Keys.up || keyCode === Keys.down)) {\n event.preventDefault();\n event.stopPropagation();\n _this.shouldFocusDateInput = keyCode === Keys.up;\n\n _this.setShow(keyCode === Keys.down);\n }\n };\n\n _this.state = {\n value: _this.props.defaultValue || DatePicker.defaultProps.defaultValue,\n show: _this.props.defaultShow || DatePicker.defaultProps.defaultShow\n };\n return _this;\n }\n\n Object.defineProperty(DatePicker.prototype, \"element\", {\n /**\n * Gets the wrapping element of the DatePicker.\n */\n get: function get() {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePicker.prototype, \"dateInput\", {\n /**\n * Gets the DateInput component inside the DatePicker component.\n */\n get: function get() {\n return this._dateInput;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePicker.prototype, \"calendar\", {\n /**\n * Gets the Calendar component inside the DatePicker component.\n */\n get: function get() {\n return this._calendar;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePicker.prototype, \"value\", {\n /**\n * Gets the value of the DatePicker.\n */\n get: function get() {\n var value = this.valueDuringOnChange !== undefined ? this.valueDuringOnChange : this.props.value !== undefined ? this.props.value : this.state.value;\n return value !== null ? cloneDate(value) : null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePicker.prototype, \"show\", {\n /**\n * Gets the popup state of the DatePicker.\n */\n get: function get() {\n return this.showDuringOnChange !== undefined ? this.showDuringOnChange : this.props.show !== undefined ? this.props.show : this.state.show;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePicker.prototype, \"name\", {\n /**\n * Gets the `name` property of the DatePicker.\n */\n get: function get() {\n return this.props.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePicker.prototype, \"min\", {\n get: function get() {\n return this.props.min !== undefined ? this.props.min : DatePicker.defaultProps.min;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePicker.prototype, \"max\", {\n get: function get() {\n return this.props.max !== undefined ? this.props.max : DatePicker.defaultProps.max;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePicker.prototype, \"validity\", {\n /**\n * Represents the validity state into which the DatePicker is set.\n */\n get: function get() {\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(DatePicker.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function get() {\n return this.props.validityStyles !== undefined ? this.props.validityStyles : DatePicker.defaultProps.validityStyles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePicker.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function get() {\n return this.props.required !== undefined ? this.props.required : DatePicker.defaultProps.required;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n DatePicker.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 if (this._dateInput && this._dateInput.element) {\n this._dateInput.element.setAttribute('aria-haspopup', 'true');\n\n this._dateInput.element.setAttribute('aria-expanded', \"\" + this.show);\n }\n };\n /**\n * @hidden\n */\n\n\n DatePicker.prototype.componentDidUpdate = function (prevProps) {\n if (this._dateInput && this._dateInput.element) {\n this._dateInput.element.setAttribute('aria-expanded', \"\" + this.show);\n }\n\n if (this._calendar && this._calendar.element && this.show && !prevProps.show) {\n this._calendar.element.focus({\n preventScroll: true\n });\n }\n\n if (this._dateInput && this._dateInput.element && !this.show && this.shouldFocusDateInput) {\n this._dateInput.element.focus({\n preventScroll: true\n });\n }\n\n this.shouldFocusDateInput = false;\n };\n /**\n * @hidden\n */\n\n\n DatePicker.prototype.componentWillUnmount = function () {\n clearTimeout(this.nextTickId);\n };\n /**\n * @hidden\n */\n\n\n DatePicker.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n disabled = _a.disabled,\n tabIndex = _a.tabIndex,\n title = _a.title,\n id = _a.id,\n format = _a.format,\n formatPlaceholder = _a.formatPlaceholder,\n min = _a.min,\n max = _a.max,\n weekNumber = _a.weekNumber,\n focusedDate = _a.focusedDate,\n className = _a.className,\n width = _a.width,\n name = _a.name,\n validationMessage = _a.validationMessage,\n required = _a.required,\n validityStyles = _a.validityStyles;\n\n var _b = this.props.popupSettings,\n popupClass = _b.popupClass,\n otherPopupSettings = __rest(_b, [\"popupClass\"]);\n\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', {\n 'k-state-invalid': !isValid\n }, className);\n var wrapperClassNames = classNames('k-picker-wrap', {\n 'k-state-default': !disabled,\n 'k-state-disabled': disabled\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 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 };\n\n var popupProps = __assign({\n show: show,\n animate: this._wrapper !== null,\n anchor: this._wrapper || undefined,\n className: popupClassNames,\n id: this._popupId,\n anchorAlign: {\n horizontal: 'left',\n vertical: 'bottom'\n },\n popupAlign: {\n horizontal: 'left',\n vertical: 'top'\n }\n }, otherPopupSettings);\n\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 calendar = this.props.calendar ? React.createElement(this.props.calendar, __assign({}, calendarProps)) : React.createElement(Calendar, __assign({\n ref: this.setCalendarRef\n }, calendarProps));\n return React.createElement(\"span\", {\n ref: function ref(span) {\n _this._element = span;\n },\n className: rootClassName,\n onKeyDown: this.handleKeyDown,\n style: {\n width: width\n },\n onFocus: this.handleFocus,\n onBlur: this.handleBlur\n }, React.createElement(\"span\", {\n ref: function ref(span) {\n _this._wrapper = span;\n },\n className: wrapperClassNames\n }, this.props.dateInput ? React.createElement(this.props.dateInput, __assign({}, dateInputProps)) : React.createElement(DateInput, __assign({\n ref: this.setDateInputRef\n }, dateInputProps)), React.createElement(\"span\", __assign({\n role: \"button\",\n onMouseDown: this.handleIconMouseDown,\n onClick: this.handleIconClick,\n title: provideLocalizationService(this).toLanguageString(toggleCalendar, messages[toggleCalendar]),\n className: \"k-select\"\n }, {\n 'aria-controls': this._popupId,\n 'aria-label': provideLocalizationService(this).toLanguageString(toggleCalendar, messages[toggleCalendar])\n }), React.createElement(\"span\", {\n className: \"k-icon k-i-calendar\"\n }))), this.props.popup ? React.createElement(this.props.popup, __assign({}, popupProps), calendar, \" \") : React.createElement(Popup, __assign({}, popupProps), calendar));\n };\n\n DatePicker.prototype.setShow = function (show) {\n if (this.show === show) {\n return;\n }\n\n this.setState({\n show: show\n });\n };\n\n DatePicker.prototype.mergeTime = function (value) {\n return this.value && value ? setTime(value, this.value) : value;\n };\n\n DatePicker.prototype.nextTick = function (f) {\n // XXX: use 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 = setTimeout(function () {\n return f();\n });\n };\n /**\n * @hidden\n */\n\n\n DatePicker.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.string,\n formatPlaceholder: PropTypes.oneOfType([PropTypes.oneOf(['wide', 'narrow', 'short', 'formatPattern']), 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 id: 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\n DatePicker.defaultProps = {\n defaultShow: false,\n defaultValue: null,\n disabled: false,\n format: 'd',\n max: MAX_DATE,\n min: MIN_DATE,\n popupSettings: {},\n tabIndex: 0,\n title: '',\n weekNumber: false,\n required: false,\n validityStyles: true\n };\n return DatePicker;\n}(React.Component);\n\nexport { DatePicker };\nregisterForLocalization(DatePicker);","import { cloneDate } from '@progress/kendo-date-math';\n\nvar setHours = function setHours(date, hours) {\n var clone = cloneDate(date);\n clone.setHours(hours);\n return clone;\n};\n\nvar isAM = function isAM(value) {\n return value !== null && value < 12;\n};\n\nvar isPM = function isPM(value) {\n return value !== null && (!value || value > 11);\n};\n\nvar inRange = function inRange(value, min, max) {\n return !min && !max || value >= min && value <= max;\n};\n\nvar inReverseRange = function inReverseRange(value, min, max) {\n return !min && !max || value >= min || value <= max;\n};\n/**\n * @hidden\n */\n\n\nvar DayPeriodService =\n/** @class */\nfunction () {\n function DayPeriodService(intl) {\n this.intl = intl;\n }\n /**\n * @hidden\n */\n\n\n DayPeriodService.prototype.apply = function (value, candidate) {\n var hour = value.getHours();\n var hourAM = isAM(hour);\n var candidateAM = isAM(candidate.getHours());\n\n if (hourAM && candidateAM || !hourAM && !candidateAM) {\n return value;\n }\n\n var _a = this.normalizedRange(),\n min = _a[0],\n _b = _a[1],\n max = _b === void 0 ? 24 : _b;\n\n var result = hour + (candidateAM ? -12 : 12);\n return setHours(value, Math.min(Math.max(min, result), max || 24));\n };\n /**\n * @hidden\n */\n\n\n DayPeriodService.prototype.configure = function (settings) {\n var _a = settings.min,\n min = _a === void 0 ? this.min : _a,\n _b = settings.max,\n max = _b === void 0 ? this.max : _b,\n _c = settings.part,\n part = _c === void 0 ? this.part : _c;\n this.min = min;\n this.max = max;\n this.part = part;\n };\n /**\n * @hidden\n */\n\n\n DayPeriodService.prototype.data = function (_) {\n var names = this.part.names;\n\n if (!names) {\n return [];\n }\n\n var data = [];\n\n var _a = this.normalizedRange(),\n min = _a[0],\n max = _a[1];\n\n var dayPeriod = this.intl.dateFormatNames(names);\n\n if (isAM(min)) {\n data.push({\n text: dayPeriod.am,\n value: setHours(this.min, min)\n });\n }\n\n if (isPM(max)) {\n data.push({\n text: dayPeriod.pm,\n value: setHours(this.min, Math.max(12, max))\n });\n }\n\n return this.min.getHours() !== min ? data.reverse() : data;\n };\n /**\n * @hidden\n */\n\n\n DayPeriodService.prototype.isRangeChanged = function (_, __) {\n return false;\n };\n /**\n * @hidden\n */\n\n\n DayPeriodService.prototype.limitRange = function (min, max, _) {\n return [min, max];\n };\n /**\n * @hidden\n */\n\n\n DayPeriodService.prototype.total = function () {\n var _a = this.normalizedRange(),\n min = _a[0],\n max = _a[1];\n\n if (!min && !max) {\n return 2;\n }\n\n if (min > 11 || max < 12) {\n return 1;\n }\n\n return 2;\n };\n /**\n * @hidden\n */\n\n\n DayPeriodService.prototype.selectedIndex = function (value) {\n if (!this.valueInList(value)) {\n return -1;\n }\n\n var index = Math.floor(value.getHours() / 12);\n return this.min.getHours() === this.normalizedRange()[0] ? index : index === 0 ? 1 : 0;\n };\n /**\n * @hidden\n */\n\n\n DayPeriodService.prototype.valueInList = function (value) {\n var reverse = this.min.getHours() !== this.normalizedRange()[0];\n var isInRange = reverse ? inReverseRange : inRange;\n return isInRange(value.getHours(), this.min.getHours(), this.max.getHours());\n };\n\n DayPeriodService.prototype.normalizedRange = function () {\n var minHour = this.min.getHours();\n var maxHour = this.max.getHours();\n return [Math.min(minHour, maxHour), Math.max(minHour, maxHour)];\n };\n\n return DayPeriodService;\n}();\n\nexport { DayPeriodService };","import { getDate, isEqual } from '@progress/kendo-date-math';\nimport { MIDNIGHT_DATE } from '../../utils';\nimport { range, setHours } from '../utils';\nvar HOURS_IN_DAY = 24;\n\nvar clampToRange = function clampToRange(rangeValue) {\n return function (value) {\n return value % rangeValue;\n };\n};\n\nvar clamp = clampToRange(HOURS_IN_DAY);\n\nvar stepper = function stepper(start, step) {\n return function (idx) {\n return clamp(start + idx * step);\n };\n};\n\nvar distanceFromMin = function distanceFromMin(value, min) {\n return clamp(HOURS_IN_DAY + value - min);\n};\n\nvar limit = function limit(borderValue) {\n return function (barrier, value) {\n var useBarrier = !value || getDate(barrier).getTime() === getDate(value).getTime();\n return useBarrier ? barrier : setHours(barrier, borderValue);\n };\n};\n\nvar limitDown = limit(0);\nvar limitUp = limit(HOURS_IN_DAY - 1);\n/**\n * @hidden\n */\n\nvar HoursService =\n/** @class */\nfunction () {\n function HoursService(intl) {\n this.intl = intl;\n this.boundRange = false;\n this.insertUndividedMax = false;\n }\n\n HoursService.prototype.apply = function (value, candidate) {\n return setHours(value, candidate.getHours());\n };\n\n HoursService.prototype.configure = function (settings) {\n var _this = this;\n\n var _a = settings.boundRange,\n boundRange = _a === void 0 ? this.boundRange : _a,\n _b = settings.insertUndividedMax,\n insertUndividedMax = _b === void 0 ? this.insertUndividedMax : _b,\n _c = settings.min,\n min = _c === void 0 ? this.min : _c,\n _d = settings.max,\n max = _d === void 0 ? this.max : _d,\n part = settings.part,\n _e = settings.step,\n step = _e === void 0 ? this.step : _e;\n this.boundRange = boundRange;\n this.insertUndividedMax = insertUndividedMax;\n\n this.toListItem = function (hour) {\n var date = setHours(MIDNIGHT_DATE, hour);\n return {\n text: _this.intl.formatDate(date, part.pattern),\n value: date\n };\n };\n\n this.min = min;\n this.max = max;\n this.step = step;\n };\n\n HoursService.prototype.data = function (selectedValue) {\n var _this = this;\n\n var min = this.range(selectedValue)[0];\n var getHour = stepper(min, this.step);\n\n var convertToItem = function convertToItem(idx) {\n return _this.toListItem(getHour(idx));\n };\n\n var data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n this.addLast(data);\n\n if (selectedValue) {\n this.addMissing(data, selectedValue);\n }\n\n return data;\n };\n\n HoursService.prototype.isRangeChanged = function (min, max) {\n return !isEqual(this.min, min) || !isEqual(this.max, max);\n };\n\n HoursService.prototype.limitRange = function (min, max, value) {\n return this.boundRange ? [limitDown(min, value), limitUp(max, value)] : [min, max];\n };\n\n HoursService.prototype.total = function (value) {\n var last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n var missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last;\n };\n\n HoursService.prototype.selectedIndex = function (value) {\n return Math.ceil(this.divideByStep(value));\n };\n\n HoursService.prototype.valueInList = function (value) {\n if (!value) {\n return true;\n }\n\n var matchMax = this.insertUndividedMax && this.lastHour(value) === value.getHours();\n return matchMax || !this.isMissing(value);\n };\n\n HoursService.prototype.addLast = function (data, value) {\n if (this.insertUndividedMax && this.isLastMissing(value)) {\n data.push(this.toListItem(this.lastHour(value)));\n }\n\n return data;\n };\n\n HoursService.prototype.addMissing = function (data, value) {\n if (this.valueInList(value)) {\n return data;\n }\n\n var missingItem = this.toListItem(value.getHours());\n data.splice(this.selectedIndex(value), 0, missingItem);\n return data;\n };\n\n HoursService.prototype.countFromMin = function (value) {\n var _a = this.range(value),\n min = _a[0],\n max = _a[1];\n\n return Math.floor(distanceFromMin(max, min) / this.step) + 1;\n /* include min */\n };\n\n HoursService.prototype.isMissing = function (value) {\n if (!value) {\n return false;\n }\n\n return this.selectedIndex(value) !== this.divideByStep(value);\n };\n\n HoursService.prototype.isLastMissing = function (value) {\n return this.isMissing(setHours(this.max, this.lastHour(value)));\n };\n\n HoursService.prototype.divideByStep = function (value) {\n return distanceFromMin(value.getHours(), this.min.getHours()) / this.step;\n };\n\n HoursService.prototype.lastHour = function (value) {\n return this.range(value)[1];\n };\n\n HoursService.prototype.range = function (value) {\n var _a = this.limitRange(this.min, this.max, value),\n min = _a[0],\n max = _a[1];\n\n return [min.getHours(), max.getHours()];\n };\n\n return HoursService;\n}();\n\nexport { HoursService };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar _a, _b;\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { Keys, noop } from '@progress/kendo-react-common';\nimport { provideIntlService, registerForIntl } from '@progress/kendo-react-intl';\nimport { Virtualization } from '../virtualization/Virtualization';\nimport { TIME_PART } from './models';\nimport { SecondsService, MinutesService, HoursService, DayPeriodService, DOMService } from './services';\nimport { MAX_TIME, MIDNIGHT_DATE } from '../utils';\nvar SCROLL_THRESHOLD = 2; // < 2px threshold\n\nvar SNAP_THRESHOLD = 0.05; // % of the item height\n\nvar SKIP = 0;\nvar getters = (_a = {}, _a[Keys.end] = function (data, _) {\n return data[data.length - 1];\n}, _a[Keys.home] = function (data, _) {\n return data[0];\n}, _a[Keys.up] = function (data, index) {\n return data[index - 1];\n}, _a[Keys.down] = function (data, index) {\n return data[index + 1];\n}, _a);\nvar services = (_b = {}, _b[TIME_PART.dayperiod] = DayPeriodService, _b[TIME_PART.hour] = HoursService, _b[TIME_PART.minute] = MinutesService, _b[TIME_PART.second] = SecondsService, _b);\n/**\n * @hidden\n */\n\nvar TimeList =\n/** @class */\nfunction (_super) {\n __extends(TimeList, _super);\n\n function TimeList(props) {\n var _this = _super.call(this, props) || this;\n\n _this.animateToIndex = false;\n\n _this.focus = function (args) {\n Promise.resolve().then(function () {\n if (!_this.element) {\n return;\n }\n\n _this.element.focus(args);\n });\n };\n\n _this.itemOffset = function (scrollTop) {\n if (!_this.virtualization) {\n return -1;\n }\n\n var valueIndex = _this.service.selectedIndex(_this.props.value);\n\n var activeIndex = _this.virtualization.activeIndex();\n\n var offset = _this.virtualization.itemOffset(activeIndex);\n\n var distance = Math.abs(Math.ceil(scrollTop) - offset);\n\n if (valueIndex === activeIndex && distance < SCROLL_THRESHOLD) {\n return offset;\n }\n\n var scrollUp = valueIndex > activeIndex;\n var moveToNext = scrollUp && distance >= _this.bottomThreshold || !scrollUp && distance > _this.topThreshold;\n return moveToNext ? _this.virtualization.itemOffset(activeIndex + 1) : offset;\n };\n\n _this.calculateHeights = function () {\n if (!_this.dom.didCalculate) {\n return;\n }\n\n _this.itemHeight = _this.dom.itemHeight;\n _this.listHeight = _this.dom.timeListHeight;\n _this.topOffset = (_this.listHeight - _this.itemHeight) / 2;\n _this.bottomOffset = _this.listHeight - _this.itemHeight;\n _this.topThreshold = _this.itemHeight * SNAP_THRESHOLD;\n _this.bottomThreshold = _this.itemHeight * (1 - SNAP_THRESHOLD);\n };\n\n _this.configureServices = function (_a) {\n var _b = _a === void 0 ? _this.props : _a,\n min = _b.min,\n max = _b.max,\n value = _b.value;\n\n var _c = _this.service.limitRange(min || _this.min, max || _this.max, value || _this.props.value),\n newMin = _c[0],\n newMax = _c[1];\n\n _this.service.configure(_this.serviceSettings({\n min: newMin,\n max: newMax\n }));\n };\n\n _this.serviceSettings = function (settings) {\n var defaults = {\n boundRange: _this.props.boundRange || TimeList.defaultProps.boundRange,\n insertUndividedMax: false,\n min: cloneDate(_this.min),\n max: cloneDate(_this.max),\n part: _this.props.part,\n step: _this.step\n };\n var result = Object.assign({}, defaults, settings);\n result.boundRange = result.part.type !== 'hour' || _this.props.boundRange || TimeList.defaultProps.boundRange;\n return result;\n };\n\n _this.handleScrollAction = function (_a) {\n var target = _a.target,\n animationInProgress = _a.animationInProgress;\n\n if (!_this.virtualization) {\n return;\n }\n\n if (target && !animationInProgress) {\n _this.animateToIndex = false;\n\n var index = _this.virtualization.itemIndex(_this.itemOffset(target.scrollTop));\n\n var dataItem = _this.service.data(_this.props.value)[index];\n\n _this.handleChange(dataItem);\n }\n };\n\n _this.handleFocus = function (event) {\n var onFocus = _this.props.onFocus;\n\n if (onFocus) {\n onFocus.call(undefined, event);\n }\n };\n\n _this.handleBlur = function (event) {\n var onBlur = _this.props.onBlur;\n\n if (onBlur) {\n onBlur.call(undefined, event);\n }\n };\n\n _this.handleMouseOver = function () {\n if (!_this._element) {\n return;\n }\n\n if (document && document.activeElement !== _this._element) {\n _this._element.focus({\n preventScroll: true\n });\n }\n };\n\n _this.handleKeyDown = function (event) {\n var keyCode = event.keyCode;\n\n if (keyCode === Keys.down || keyCode === Keys.up || keyCode === Keys.end || keyCode === Keys.home) {\n event.preventDefault();\n }\n\n var getter = getters[event.keyCode] || noop;\n var dataItem = getter(_this.service.data(_this.props.value), _this.service.selectedIndex(_this.props.value));\n\n if (dataItem) {\n _this.handleChange(dataItem);\n }\n };\n\n _this.handleChange = function (dataItem) {\n var candidate = _this.service.apply(_this.props.value, dataItem.value);\n\n if (_this.props.value.getTime() === candidate.getTime()) {\n return;\n }\n\n _this.setState({\n value: candidate\n });\n\n var onChange = _this.props.onChange;\n\n if (onChange) {\n onChange.call(undefined, candidate);\n }\n };\n\n _this.dom = new DOMService();\n return _this;\n }\n\n Object.defineProperty(TimeList.prototype, \"element\", {\n get: function get() {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimeList.prototype, \"animate\", {\n get: function get() {\n return Boolean(this.props.smoothScroll && this.animateToIndex);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimeList.prototype, \"min\", {\n get: function get() {\n return this.props.min || TimeList.defaultProps.min;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimeList.prototype, \"max\", {\n get: function get() {\n return this.props.max || TimeList.defaultProps.max;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimeList.prototype, \"step\", {\n get: function get() {\n return this.props.step !== undefined && this.props.step !== 0 ? Math.floor(this.props.step) : TimeList.defaultProps.step;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n TimeList.prototype.componentDidMount = function () {\n var _this = this; // Async calculation of height to avoid animation cancellation\n\n\n Promise.resolve().then(function () {\n if (!_this._element) {\n return;\n }\n\n _this.dom.calculateHeights(_this._element);\n\n _this.forceUpdate();\n });\n };\n /**\n * @hidden\n */\n\n\n TimeList.prototype.componentDidUpdate = function () {\n if (!this.virtualization) {\n return;\n }\n\n var index = this.service.selectedIndex(this.props.value);\n this.virtualization[this.animate ? 'animateToIndex' : 'scrollToIndex'](index);\n this.animateToIndex = true;\n };\n /**\n * @hidden\n */\n\n\n TimeList.prototype.render = function () {\n var _this = this;\n\n if (!this.props.part.type || !services[this.props.part.type]) {\n return;\n }\n\n this.calculateHeights();\n this.intl = provideIntlService(this);\n this.service = new services[this.props.part.type](this.intl);\n this.configureServices();\n var data = this.service.data(this.props.value);\n var transform = 'translateY(' + this.topOffset + 'px)';\n var total = this.service.total(this.props.value);\n var list = React.createElement(\"ul\", {\n style: {\n transform: transform,\n msTransform: transform\n },\n className: \"k-reset\"\n }, data.map(function (item, idx) {\n return React.createElement(\"li\", {\n key: idx,\n className: \"k-item\",\n onClick: function onClick() {\n _this.handleChange(item);\n }\n }, React.createElement(\"span\", null, item.text));\n }));\n return React.createElement(\"div\", {\n className: \"k-time-list\",\n id: String(this.props.id || ''),\n tabIndex: this.props.disabled ? -1 : 0,\n ref: function ref(el) {\n _this._element = el;\n },\n onKeyDown: this.handleKeyDown,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onMouseOver: this.handleMouseOver\n }, this.dom.didCalculate ? React.createElement(Virtualization, {\n bottomOffset: this.bottomOffset,\n children: list,\n className: \"k-time-container\",\n itemHeight: this.itemHeight,\n maxScrollDifference: this.listHeight,\n onScrollAction: this.handleScrollAction,\n ref: function ref(el) {\n _this.virtualization = el;\n },\n role: \"presentation\",\n skip: SKIP,\n tabIndex: -1,\n take: total,\n topOffset: this.topOffset,\n total: total\n }) : React.createElement(\"div\", {\n className: \"k-time-container\"\n }, list));\n };\n\n TimeList.propTypes = {\n id: PropTypes.number,\n max: PropTypes.instanceOf(Date),\n min: PropTypes.instanceOf(Date),\n part: function part(props, propName, componentName) {\n var prop = props[propName];\n\n if (!prop || !services[prop.type]) {\n throw new Error(\"\\n Invalid prop '\" + propName + \"' supplied to \" + componentName + \".\\n Supported part types are hour|minute|second|dayperiod.\\n \");\n }\n },\n step: function step(props, propName, componentName) {\n var prop = props[propName];\n\n if (prop !== undefined && prop <= 0) {\n throw new Error(\"\\n Invalid prop '\" + propName + \"' supplied to \" + componentName + \".\\n \" + propName + \" cannot be less than 1.\\n \");\n }\n },\n value: PropTypes.instanceOf(Date),\n smoothScroll: PropTypes.bool\n };\n TimeList.defaultProps = {\n boundRange: false,\n max: MAX_TIME,\n min: MIDNIGHT_DATE,\n step: 1,\n smoothScroll: true\n };\n return TimeList;\n}(React.Component);\n\nexport { TimeList };\nregisterForIntl(TimeList);","import { domContainerFactory as containerFactory, isDocumentAvailable } from '../../utils';\n/**\n * @hidden\n */\n\nvar DOMService =\n/** @class */\nfunction () {\n function DOMService() {\n this.didCalculate = false;\n }\n\n DOMService.prototype.ensureHeights = function () {\n if (this.timeListHeight !== undefined) {\n return;\n }\n\n this.calculateHeights();\n };\n\n DOMService.prototype.calculateHeights = function (container) {\n if (!isDocumentAvailable()) {\n return;\n }\n\n var div = containerFactory('div');\n var ul = containerFactory('ul');\n var li = containerFactory('li');\n\n var listItem = function listItem() {\n return li('02', 'k-item');\n };\n\n var list = function list() {\n return ul([listItem()], 'k-reset');\n };\n\n var scrollable = function scrollable() {\n return div([list()], 'k-time-container k-content k-scrollable');\n };\n\n var timeListWrapper = function timeListWrapper() {\n return div([div([scrollable()], 'k-time-list')], 'k-time-list-wrapper', {\n left: '-10000px',\n position: 'absolute'\n });\n };\n\n var timeWrapper = timeListWrapper();\n var listContainer = container && container.querySelector('.k-time-container');\n var hostContainer = listContainer || document.body;\n var wrapper = hostContainer.appendChild(timeWrapper);\n this.timeListHeight = wrapper.querySelector('.k-scrollable').offsetHeight;\n this.itemHeight = wrapper.querySelector('li').offsetHeight;\n hostContainer.removeChild(wrapper);\n this.didCalculate = true;\n };\n\n return DOMService;\n}();\n\nexport { DOMService };","import { isEqual } from '@progress/kendo-date-math';\nimport { MIDNIGHT_DATE } from '../../utils';\nimport { range, setMinutes } from '../utils';\nvar MINUTES_IN_HOUR = 60;\n\nvar clampToRange = function clampToRange(rangeValue) {\n return function (value) {\n return value % rangeValue;\n };\n};\n\nvar clamp = clampToRange(MINUTES_IN_HOUR);\n\nvar stepper = function stepper(start, step) {\n return function (idx) {\n return clamp(start + idx * step);\n };\n};\n\nvar distanceFromMin = function distanceFromMin(value, min) {\n return clamp(MINUTES_IN_HOUR + value - min);\n};\n\nvar limit = function limit(borderValue) {\n return function (barrier, value) {\n var useBarrier = !value || barrier.getHours() === value.getHours();\n return useBarrier ? barrier : setMinutes(barrier, borderValue);\n };\n};\n\nvar limitDown = limit(0);\nvar limitUp = limit(MINUTES_IN_HOUR - 1);\n/**\n * @hidden\n */\n\nvar MinutesService =\n/** @class */\nfunction () {\n function MinutesService(intl) {\n this.intl = intl;\n this.insertUndividedMax = false;\n }\n\n MinutesService.prototype.apply = function (value, candidate) {\n return setMinutes(value, candidate.getMinutes());\n };\n\n MinutesService.prototype.configure = function (settings) {\n var _this = this;\n\n var _a = settings.insertUndividedMax,\n insertUndividedMax = _a === void 0 ? this.insertUndividedMax : _a,\n _b = settings.min,\n min = _b === void 0 ? this.min : _b,\n _c = settings.max,\n max = _c === void 0 ? this.max : _c,\n part = settings.part,\n _d = settings.step,\n step = _d === void 0 ? this.step : _d;\n this.insertUndividedMax = insertUndividedMax;\n\n this.toListItem = function (minute) {\n var date = setMinutes(MIDNIGHT_DATE, minute);\n return {\n text: _this.intl.formatDate(date, part.pattern),\n value: date\n };\n };\n\n this.min = min;\n this.max = max;\n this.step = step;\n };\n\n MinutesService.prototype.data = function (selectedValue) {\n var _this = this;\n\n var min = this.range(selectedValue)[0];\n var getMinute = stepper(min, this.step);\n\n var convertToItem = function convertToItem(idx) {\n return _this.toListItem(getMinute(idx));\n };\n\n var data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n this.addLast(data);\n\n if (selectedValue) {\n this.addMissing(data, selectedValue);\n }\n\n return data;\n };\n\n MinutesService.prototype.isRangeChanged = function (min, max) {\n return !isEqual(this.min, min) || !isEqual(this.max, max);\n };\n\n MinutesService.prototype.limitRange = function (min, max, value) {\n return [limitDown(min, value), limitUp(max, value)];\n };\n\n MinutesService.prototype.total = function (value) {\n var last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n var missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last;\n };\n\n MinutesService.prototype.selectedIndex = function (value) {\n return Math.ceil(this.divideByStep(value));\n };\n\n MinutesService.prototype.valueInList = function (value) {\n if (!value) {\n return true;\n }\n\n var matchMax = this.insertUndividedMax && this.lastMinute(value) === value.getMinutes();\n return matchMax || !this.isMissing(value);\n };\n\n MinutesService.prototype.addLast = function (data, value) {\n if (this.insertUndividedMax && this.isLastMissing(value)) {\n data.push(this.toListItem(this.lastMinute(value)));\n }\n\n return data;\n };\n\n MinutesService.prototype.addMissing = function (data, value) {\n if (this.valueInList(value)) {\n return data;\n }\n\n var missingItem = this.toListItem(value.getMinutes());\n data.splice(this.selectedIndex(value), 0, missingItem);\n return data;\n };\n\n MinutesService.prototype.countFromMin = function (value) {\n var _a = this.range(value),\n min = _a[0],\n max = _a[1];\n\n return Math.floor(distanceFromMin(max, min) / this.step) + 1;\n /* include min */\n };\n\n MinutesService.prototype.isMissing = function (value) {\n if (!value) {\n return false;\n }\n\n return this.selectedIndex(value) !== this.divideByStep(value);\n };\n\n MinutesService.prototype.isLastMissing = function (value) {\n return this.isMissing(setMinutes(this.max, this.lastMinute(value)));\n };\n\n MinutesService.prototype.divideByStep = function (value) {\n return distanceFromMin(value.getMinutes(), this.min.getMinutes()) / this.step;\n };\n\n MinutesService.prototype.lastMinute = function (value) {\n return this.range(value)[1];\n };\n\n MinutesService.prototype.range = function (value) {\n var _a = this.limitRange(this.min, this.max, value),\n min = _a[0],\n max = _a[1];\n\n return [min.getMinutes(), max.getMinutes()];\n };\n\n return MinutesService;\n}();\n\nexport { MinutesService };","import { isEqual } from '@progress/kendo-date-math';\nimport { MIDNIGHT_DATE } from '../../utils';\nimport { range, setSeconds } from '../utils';\nvar SECONDS_IN_HOUR = 60;\n\nvar clampToRange = function clampToRange(rangeValue) {\n return function (value) {\n return value % rangeValue;\n };\n};\n\nvar clamp = clampToRange(SECONDS_IN_HOUR);\n\nvar stepper = function stepper(start, step) {\n return function (idx) {\n return clamp(start + idx * step);\n };\n};\n\nvar distanceFromMin = function distanceFromMin(value, min) {\n return clamp(SECONDS_IN_HOUR + value - min);\n};\n\nvar limit = function limit(borderValue) {\n return function (barrier, value) {\n var useBarrier = !value || barrier.getMinutes() === value.getMinutes() && barrier.getHours() === value.getHours();\n return useBarrier ? barrier : setSeconds(barrier, borderValue);\n };\n};\n\nvar limitDown = limit(0);\nvar limitUp = limit(SECONDS_IN_HOUR - 1);\n/**\n * @hidden\n */\n\nvar SecondsService =\n/** @class */\nfunction () {\n function SecondsService(intl) {\n this.intl = intl;\n this.insertUndividedMax = false;\n }\n\n SecondsService.prototype.apply = function (value, candidate) {\n return setSeconds(value, candidate.getSeconds());\n };\n\n SecondsService.prototype.configure = function (settings) {\n var _this = this;\n\n var _a = settings.insertUndividedMax,\n insertUndividedMax = _a === void 0 ? this.insertUndividedMax : _a,\n _b = settings.min,\n min = _b === void 0 ? this.min : _b,\n _c = settings.max,\n max = _c === void 0 ? this.max : _c,\n part = settings.part,\n _d = settings.step,\n step = _d === void 0 ? this.step : _d;\n this.insertUndividedMax = insertUndividedMax;\n\n this.toListItem = function (minute) {\n var date = setSeconds(MIDNIGHT_DATE, minute);\n return {\n text: _this.intl.formatDate(date, part.pattern),\n value: date\n };\n };\n\n this.min = min;\n this.max = max;\n this.step = step;\n };\n\n SecondsService.prototype.data = function (selectedValue) {\n var _this = this;\n\n var min = this.range(selectedValue)[0];\n var getSecond = stepper(min, this.step);\n\n var convertToItem = function convertToItem(idx) {\n return _this.toListItem(getSecond(idx));\n };\n\n var data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n this.addLast(data);\n\n if (selectedValue) {\n this.addMissing(data, selectedValue);\n }\n\n return data;\n };\n\n SecondsService.prototype.isRangeChanged = function (min, max) {\n return !isEqual(this.min, min) || !isEqual(this.max, max);\n };\n\n SecondsService.prototype.limitRange = function (min, max, value) {\n return [limitDown(min, value), limitUp(max, value)];\n };\n\n SecondsService.prototype.total = function (value) {\n var last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n var missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last;\n };\n\n SecondsService.prototype.selectedIndex = function (value) {\n return Math.ceil(this.divideByStep(value));\n };\n\n SecondsService.prototype.valueInList = function (value) {\n if (!value) {\n return true;\n }\n\n var matchMax = this.insertUndividedMax && this.lastSecond(value) === value.getSeconds();\n return matchMax || !this.isMissing(value);\n };\n\n SecondsService.prototype.divideByStep = function (value) {\n return distanceFromMin(value.getSeconds(), this.min.getSeconds()) / this.step;\n };\n\n SecondsService.prototype.addLast = function (data, value) {\n if (this.insertUndividedMax && this.isLastMissing(value)) {\n data.push(this.toListItem(this.lastSecond(value)));\n }\n\n return data;\n };\n\n SecondsService.prototype.addMissing = function (data, value) {\n if (this.valueInList(value)) {\n return data;\n }\n\n var missingItem = this.toListItem(value.getSeconds());\n data.splice(this.selectedIndex(value), 0, missingItem);\n return data;\n };\n\n SecondsService.prototype.countFromMin = function (value) {\n var _a = this.range(value),\n min = _a[0],\n max = _a[1];\n\n return Math.floor(distanceFromMin(max, min) / this.step) + 1;\n /* include min */\n };\n\n SecondsService.prototype.isMissing = function (value) {\n if (!value) {\n return false;\n }\n\n return this.selectedIndex(value) !== this.divideByStep(value);\n };\n\n SecondsService.prototype.isLastMissing = function (value) {\n return this.isMissing(setSeconds(this.max, this.lastSecond(value)));\n };\n\n SecondsService.prototype.lastSecond = function (value) {\n return this.range(value)[1];\n };\n\n SecondsService.prototype.range = function (value) {\n var _a = this.limitRange(this.min, this.max, value),\n min = _a[0],\n max = _a[1];\n\n return [min.getSeconds(), max.getSeconds()];\n };\n\n return SecondsService;\n}();\n\nexport { SecondsService };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { classNames, Keys } from '@progress/kendo-react-common';\nimport { provideIntlService, provideLocalizationService, registerForIntl, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, now, selectNow } from '../messages';\nimport { TimeList } from './TimeList';\nimport { MIDNIGHT_DATE, MIN_TIME, MAX_TIME } from '../utils';\nimport { TIME_PART } from './models/TimePart';\nimport { generateSnappers, getNow, isInTimeRange, snapTime, timeInRange } from './utils';\nvar formatRegExp = new RegExp(TIME_PART.hour + \"|\" + TIME_PART.minute + \"|\" + TIME_PART.second + \"|\" + TIME_PART.dayperiod + \"|literal\");\n/**\n * @hidden\n */\n\nexport var Direction;\n\n(function (Direction) {\n Direction[Direction[\"Left\"] = 0] = \"Left\";\n Direction[Direction[\"Right\"] = 1] = \"Right\";\n})(Direction || (Direction = {}));\n/**\n * @hidden\n */\n\n\nvar TimePart =\n/** @class */\nfunction (_super) {\n __extends(TimePart, _super);\n\n function TimePart(props) {\n var _this = _super.call(this, props) || this;\n\n _this.timeLists = [];\n\n _this.focus = function (args) {\n Promise.resolve().then(function () {\n var timeList = _this.timeLists[0];\n\n if (_this.state.activeListIndex === -1 && !_this.hasActiveButton() && timeList && timeList.element) {\n timeList.focus(args);\n }\n });\n };\n\n _this.timeFormatReducer = function (acc, current) {\n return acc + current.pattern;\n }; // Filtering only the time part of the format.\n // Literal types are added if the previous part is\n // part of a time format.\n\n\n _this.timeFormatFilter = function (part, index, all) {\n var prevItem = index >= 1 && all[index - 1];\n\n if (!prevItem) {\n return formatRegExp.test(part.type || '');\n }\n\n if (prevItem && part.type === 'literal') {\n return formatRegExp.test(prevItem.type || '');\n }\n\n return formatRegExp.test(part.type || '');\n };\n\n _this.focusList = function (dir) {\n if (!_this.timeLists.length) {\n return;\n }\n\n _this.timeLists.reduce(_this.listReducer, []).map(function (state) {\n return dir === Direction.Right ? state.next : state.prev;\n }).map(function (list) {\n return list && list.element && list.element.focus({\n preventScroll: true\n });\n });\n };\n\n _this.listReducer = function (state, list, idx, all) {\n if (state.length || list.props.id !== _this.state.activeListIndex) {\n return state;\n }\n\n return [{\n next: all[idx + 1] || list,\n prev: all[idx - 1] || list\n }];\n };\n\n _this.showNowButton = function () {\n return !_this.hasSteps() && _this.props.nowButton && isInTimeRange(getNow(), _this.min, _this.max);\n };\n\n _this.handleKeyDown = function (event) {\n var keyCode = event.keyCode;\n\n switch (keyCode) {\n case Keys.left:\n event.preventDefault();\n\n _this.focusList(Direction.Left);\n\n return;\n\n case Keys.right:\n event.preventDefault();\n\n _this.focusList(Direction.Right);\n\n return;\n\n default:\n return;\n }\n };\n\n _this.handleListBlur = function () {\n _this.nextTick(function () {\n _this.setState({\n activeListIndex: -1\n });\n });\n };\n\n _this.handleListFocus = function (idx) {\n clearTimeout(_this.nextTickId);\n\n _this.setState({\n activeListIndex: idx\n });\n };\n\n _this.handleChange = function (candidate) {\n var onChange = _this.props.onChange;\n\n if (onChange) {\n onChange.call(undefined, candidate);\n }\n };\n\n _this.snapTime = snapTime(generateSnappers(_this.props.steps, _this.props.min || TimePart.defaultProps.min));\n _this.state = {\n activeListIndex: -1\n };\n _this.hasActiveButton = _this.hasActiveButton.bind(_this);\n return _this;\n }\n\n Object.defineProperty(TimePart.prototype, \"element\", {\n /**\n * @hidden\n */\n get: function get() {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePart.prototype, \"intl\", {\n get: function get() {\n return provideIntlService(this);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePart.prototype, \"value\", {\n get: function get() {\n return timeInRange(this.snapTime(cloneDate(this.props.value || MIDNIGHT_DATE)), this.min, this.max);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePart.prototype, \"min\", {\n get: function get() {\n return this.snapTime(this.props.min || TimePart.defaultProps.min);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePart.prototype, \"max\", {\n get: function get() {\n return this.snapTime(this.props.max || TimePart.defaultProps.max);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePart.prototype, \"steps\", {\n get: function get() {\n return this.props.steps || TimePart.defaultProps.steps;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePart.prototype, \"boundRange\", {\n get: function get() {\n return this.props.boundRange !== undefined ? this.props.boundRange : TimePart.defaultProps.boundRange;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n TimePart.prototype.componentWillUnmount = function () {\n clearTimeout(this.nextTickId);\n };\n\n TimePart.prototype.componentDidMount = function () {\n var onMount = this.props.onMount;\n\n if (onMount) {\n onMount.call(undefined, this.value);\n }\n };\n /**\n * @hidden\n */\n\n\n TimePart.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n format = _a.format,\n smoothScroll = _a.smoothScroll,\n onNowClick = _a.onNowClick,\n className = _a.className,\n disabled = _a.disabled;\n this.snapTime = snapTime(generateSnappers(this.steps, this.min));\n this.dateFormatParts = this.intl.splitDateFormat(format || TimePart.defaultProps.format).filter(this.timeFormatFilter);\n var rootClassName = classNames({\n 'k-state-disabled': disabled\n }, className, 'k-time-part');\n this.timeLists = [];\n var localizationService = provideLocalizationService(this);\n var selectNowMessage = localizationService.toLanguageString(selectNow, messages[selectNow]);\n return React.createElement(\"div\", {\n className: rootClassName\n }, React.createElement(\"div\", {\n className: \"k-time-header\"\n }, React.createElement(\"span\", {\n className: \"k-title\"\n }, this.intl.formatDate(this.value, this.dateFormatParts.reduce(this.timeFormatReducer, ''))), this.showNowButton() && React.createElement(\"button\", __assign({\n ref: function ref(btn) {\n _this._nowButton = btn;\n },\n className: \"k-button k-bare k-time-now\",\n title: selectNowMessage\n }, {\n 'aria-label': selectNowMessage\n }, {\n onClick: onNowClick,\n tabIndex: disabled ? -1 : 0\n }), localizationService.toLanguageString(now, messages[now]))), React.createElement(\"div\", {\n className: \"k-time-list-container\",\n onKeyDown: this.handleKeyDown\n }, React.createElement(\"span\", {\n className: \"k-time-highlight\"\n }), this.dateFormatParts.map(function (part, idx) {\n return part.type !== 'literal' ? React.createElement(\"div\", {\n key: idx,\n className: classNames('k-time-list-wrapper', {\n 'k-state-focused': idx === _this.state.activeListIndex\n }),\n role: \"presentation\",\n tabIndex: -1\n }, React.createElement(\"span\", {\n className: \"k-title\",\n onMouseDown: function onMouseDown(e) {\n e.preventDefault();\n }\n }, _this.intl.dateFieldName(part)), React.createElement(TimeList, {\n min: _this.min,\n max: _this.max,\n boundRange: _this.boundRange,\n part: part,\n step: part.type ? _this.steps[part.type] : 1,\n smoothScroll: smoothScroll,\n ref: function ref(el) {\n if (!el) {\n return;\n }\n\n _this.timeLists.push(el);\n },\n id: idx,\n onFocus: function onFocus() {\n _this.handleListFocus(idx);\n },\n onBlur: _this.handleListBlur,\n onChange: _this.handleChange,\n value: _this.value,\n disabled: disabled\n })) : React.createElement(\"div\", {\n key: idx,\n className: \"k-time-separator\"\n }, part.pattern);\n })));\n };\n\n TimePart.prototype.nextTick = function (f) {\n // XXX: use setTimeout due to async focus/blur events in IE, and missing relatedTarget prop.\n // XXX: https://github.com/facebook/react/issues/3751\n clearTimeout(this.nextTickId);\n this.nextTickId = setTimeout(function () {\n return f();\n });\n };\n\n TimePart.prototype.hasActiveButton = function () {\n return document.activeElement === this._nowButton;\n };\n\n TimePart.prototype.hasSteps = function () {\n var _this = this;\n\n var keys = Object.keys(this.steps);\n return keys.length !== keys.reduce(function (acc, k) {\n return acc + _this.steps[k];\n }, 0);\n };\n\n TimePart.propTypes = {\n cancelButton: PropTypes.bool,\n disabled: PropTypes.bool,\n format: PropTypes.string,\n max: PropTypes.instanceOf(Date),\n min: PropTypes.instanceOf(Date),\n nowButton: PropTypes.bool,\n steps: PropTypes.shape({\n hour: PropTypes.number,\n minute: PropTypes.number,\n second: PropTypes.number\n }),\n smoothScroll: PropTypes.bool,\n tabIndex: PropTypes.number,\n value: PropTypes.instanceOf(Date)\n };\n TimePart.defaultProps = {\n value: null,\n disabled: false,\n nowButton: true,\n cancelButton: true,\n format: 'hh:mm a',\n min: MIN_TIME,\n max: MAX_TIME,\n steps: {},\n boundRange: false\n };\n return TimePart;\n}(React.Component);\n\nexport { TimePart };\nregisterForIntl(TimePart);\nregisterForLocalization(TimePart);","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { classNames, Keys } from '@progress/kendo-react-common';\nimport { provideIntlService, registerForIntl, registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, timePickerCancel, timePickerSet } from '../messages';\nimport { MIN_TIME, MAX_TIME, MIDNIGHT_DATE } from '../utils';\nimport { generateGetters, getNow, valueMerger } from './utils';\nimport { TimePart } from './TimePart';\n/**\n * @hidden\n */\n\nexport var Direction;\n\n(function (Direction) {\n Direction[Direction[\"Left\"] = 0] = \"Left\";\n Direction[Direction[\"Right\"] = 1] = \"Right\";\n})(Direction || (Direction = {}));\n/**\n * @hidden\n */\n\n\nvar TimeSelector =\n/** @class */\nfunction (_super) {\n __extends(TimeSelector, _super);\n\n function TimeSelector(props) {\n var _this = _super.call(this, props) || this;\n\n _this.focusActiveList = function () {\n if (!_this.timePart) {\n return;\n }\n\n _this.timePart.focus({\n preventScroll: true\n });\n };\n\n _this.handleKeyDown = function (event) {\n var keyCode = event.keyCode;\n\n switch (keyCode) {\n case Keys.enter:\n if (!_this.hasActiveButton()) {\n _this.handleAccept(event);\n }\n\n return;\n\n default:\n return;\n }\n };\n\n _this.handleAccept = function (event) {\n var value = _this.mergeValue(cloneDate(_this.value || getNow()), _this.current);\n\n _this.setState({\n value: value\n });\n\n _this.valueDuringOnChange = value;\n var onChange = _this.props.onChange;\n\n if (onChange) {\n onChange.call(undefined, {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: _this.value,\n target: _this\n });\n }\n\n _this.valueDuringOnChange = undefined;\n };\n\n _this.handleReject = function (event) {\n _this.setState({\n current: _this.value\n });\n\n var onReject = _this.props.onReject;\n\n if (onReject) {\n onReject.call(undefined, event);\n }\n };\n\n _this.handleNowClick = function (event) {\n var now = _this.mergeValue(cloneDate(_this.value || getNow()), getNow());\n\n _this.setState({\n current: now,\n value: now\n });\n\n _this.valueDuringOnChange = now;\n var onChange = _this.props.onChange;\n\n if (onChange) {\n onChange.call(undefined, {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: _this.value,\n target: _this\n });\n }\n\n _this.valueDuringOnChange = undefined;\n };\n\n _this.handleChange = function (candidate) {\n _this.setState({\n current: candidate\n });\n };\n\n _this.dateFormatParts = _this.intl.splitDateFormat(_this.props.format || TimeSelector.defaultProps.format);\n _this.mergeValue = valueMerger(generateGetters(_this.dateFormatParts));\n _this.hasActiveButton = _this.hasActiveButton.bind(_this);\n _this.state = {\n current: _this.props.value || MIDNIGHT_DATE,\n value: _this.props.value || TimeSelector.defaultProps.value\n };\n return _this;\n }\n\n Object.defineProperty(TimeSelector.prototype, \"element\", {\n /**\n * @hidden\n */\n get: function get() {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimeSelector.prototype, \"value\", {\n get: function get() {\n var value = this.valueDuringOnChange !== undefined ? this.valueDuringOnChange : this.props.value !== undefined ? this.props.value : this.state.value;\n return value !== null ? cloneDate(value) : null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimeSelector.prototype, \"intl\", {\n get: function get() {\n return provideIntlService(this);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimeSelector.prototype, \"current\", {\n get: function get() {\n return this.state.current !== null ? cloneDate(this.state.current) : null;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n TimeSelector.prototype.componentWillUnmount = function () {\n clearTimeout(this.nextTickId);\n };\n /**\n * @hidden\n */\n\n\n TimeSelector.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n format = _a.format,\n cancelButton = _a.cancelButton,\n disabled = _a.disabled,\n tabIndex = _a.tabIndex,\n className = _a.className,\n smoothScroll = _a.smoothScroll,\n min = _a.min,\n max = _a.max,\n boundRange = _a.boundRange,\n nowButton = _a.nowButton,\n steps = _a.steps;\n var localizationService = provideLocalizationService(this);\n var cancelMessage = localizationService.toLanguageString(timePickerCancel, messages[timePickerCancel]);\n var setMessage = localizationService.toLanguageString(timePickerSet, messages[timePickerSet]);\n return React.createElement(\"div\", {\n ref: function ref(el) {\n _this._element = el;\n },\n tabIndex: !disabled ? tabIndex || 0 : undefined,\n className: classNames('k-timeselector k-reset', className, {\n 'k-state-disabled': disabled\n }),\n onKeyDown: this.handleKeyDown\n }, React.createElement(TimePart, {\n ref: function ref(el) {\n _this.timePart = el;\n },\n value: this.current,\n onChange: this.handleChange,\n onNowClick: this.handleNowClick,\n format: format,\n smoothScroll: smoothScroll,\n min: min,\n max: max,\n boundRange: boundRange,\n disabled: disabled,\n nowButton: nowButton,\n steps: steps\n }), React.createElement(\"div\", {\n className: \"k-time-footer k-action-buttons\"\n }, cancelButton && React.createElement(\"button\", __assign({\n ref: function ref(btn) {\n _this._cancelButton = btn;\n },\n className: \"k-button k-time-cancel\",\n onClick: this.handleReject,\n title: cancelMessage\n }, {\n 'aria-label': cancelMessage\n }), cancelMessage), React.createElement(\"button\", __assign({\n ref: function ref(btn) {\n _this._acceptButton = btn;\n },\n className: \"k-time-accept k-button k-primary\",\n onClick: this.handleAccept,\n title: setMessage\n }, {\n 'aria-label': setMessage\n }), setMessage)));\n };\n\n TimeSelector.prototype.nextTick = function (f) {\n // XXX: use setTimeout due to async focus/blur events in IE, and missing relatedTarget prop.\n // XXX: https://github.com/facebook/react/issues/3751\n clearTimeout(this.nextTickId);\n this.nextTickId = setTimeout(function () {\n return f();\n });\n };\n\n TimeSelector.prototype.hasActiveButton = function () {\n if (!this._acceptButton) {\n return false;\n }\n\n return document.activeElement === this._acceptButton || document.activeElement === this._cancelButton;\n };\n\n TimeSelector.propTypes = {\n cancelButton: PropTypes.bool,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n format: PropTypes.string,\n max: PropTypes.instanceOf(Date),\n min: PropTypes.instanceOf(Date),\n nowButton: PropTypes.bool,\n steps: PropTypes.shape({\n hour: PropTypes.number,\n minute: PropTypes.number,\n second: PropTypes.number\n }),\n smoothScroll: PropTypes.bool,\n tabIndex: PropTypes.number,\n value: PropTypes.instanceOf(Date)\n };\n TimeSelector.defaultProps = {\n value: null,\n disabled: false,\n cancelButton: true,\n format: 't',\n min: MIN_TIME,\n max: MAX_TIME,\n boundRange: false\n };\n return TimeSelector;\n}(React.Component);\n\nexport { TimeSelector };\nregisterForIntl(TimeSelector);\nregisterForLocalization(TimeSelector);","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { classNames, guid, Keys } from '@progress/kendo-react-common';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, toggleTimeSelector, toggleClock } from '../messages';\nimport { DateInput } from '../dateinput/DateInput';\nimport { TimeSelector } from './TimeSelector';\nimport { MIDNIGHT_DATE, MIN_TIME, MAX_TIME, setTime } from '../utils';\nimport { isInRange, isSmallerThanMin, isBiggerThanMax } from './utils';\n\nvar TimePicker =\n/** @class */\nfunction (_super) {\n __extends(TimePicker, _super);\n\n function TimePicker(props) {\n var _this = _super.call(this, props) || this;\n\n _this._popupId = guid();\n _this._element = null;\n _this._wrapper = null;\n _this._dateInput = null;\n _this._timeSelector = null;\n _this.shouldFocusDateInput = false; // Using `this` to avoid bumping the React version\n // to 16.3 and use `createRef()`.\n // Inline arrow functions is a performance hit\n // so... we use `this`.\n\n _this.setDateInputRef = function (dateInput) {\n _this._dateInput = dateInput;\n };\n\n _this.setTimeSelectorRef = function (timeSelector) {\n _this._timeSelector = timeSelector;\n };\n\n _this.nextValue = function (nextProps, nextState) {\n return nextProps.value !== undefined ? nextProps.value : nextState.value;\n };\n\n _this.nextShow = function (nextProps, nextState) {\n return nextProps.show !== undefined ? nextProps.show : nextState.show;\n };\n\n _this.handleInputValueChange = function (event) {\n var value = _this.mergeTime(event.value);\n\n _this.handleValueChange(__assign({}, event, {\n value: value\n }));\n };\n\n _this.handleValueChange = function (event) {\n _this.setState({\n value: cloneDate(event.value),\n show: false\n });\n\n _this.valueDuringOnChange = event.value;\n _this.showDuringOnChange = false;\n _this.shouldFocusDateInput = true;\n var onChange = _this.props.onChange;\n\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\n _this.valueDuringOnChange = undefined;\n _this.showDuringOnChange = undefined;\n };\n\n _this.handleFocus = function (event) {\n clearTimeout(_this.nextTickId);\n\n if (_this._wrapper) {\n _this._wrapper.classList.add('k-state-focused');\n }\n\n var onFocus = _this.props.onFocus;\n\n if (onFocus) {\n onFocus.call(undefined, event);\n }\n };\n\n _this.handleBlur = function (event) {\n _this.nextTick(function () {\n if (_this._wrapper) {\n _this._wrapper.classList.remove('k-state-focused');\n }\n\n _this.setShow(false);\n });\n\n var onBlur = _this.props.onBlur;\n\n if (onBlur) {\n onBlur.call(undefined, event);\n }\n };\n\n _this.handleValueReject = function (_) {\n _this.setShow(false);\n };\n\n _this.handleIconClick = function (_) {\n if (_this.props.disabled) {\n return;\n }\n\n _this.shouldFocusDateInput = true;\n\n _this.setShow(!_this.show);\n };\n\n _this.handleIconMouseDown = function (event) {\n event.preventDefault();\n };\n\n _this.handleKeyDown = function (event) {\n var altKey = event.altKey,\n keyCode = event.keyCode;\n\n if (keyCode === Keys.esc) {\n _this.setShow(false);\n\n return;\n }\n\n if (altKey && (keyCode === Keys.up || keyCode === Keys.down)) {\n event.preventDefault();\n event.stopPropagation();\n _this.shouldFocusDateInput = keyCode === Keys.up;\n\n _this.setShow(keyCode === Keys.down);\n }\n };\n\n _this.state = {\n value: _this.props.defaultValue || TimePicker.defaultProps.defaultValue,\n show: _this.props.defaultShow || TimePicker.defaultProps.defaultShow\n };\n _this.normalizeTime = _this.normalizeTime.bind(_this);\n _this.setShow = _this.setShow.bind(_this);\n _this.nextTick = _this.nextTick.bind(_this);\n _this.mergeTime = _this.mergeTime.bind(_this);\n return _this;\n }\n\n Object.defineProperty(TimePicker.prototype, \"element\", {\n /**\n * Gets the wrapping element of the TimePicker.\n */\n get: function get() {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePicker.prototype, \"dateInput\", {\n /**\n * Gets the DateInput component inside the TimePicker component.\n */\n get: function get() {\n return this._dateInput;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePicker.prototype, \"timeSelector\", {\n /**\n * Gets the TimeSelector component inside the TimePicker component.\n */\n get: function get() {\n return this._timeSelector;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePicker.prototype, \"value\", {\n /**\n * Gets the value of the TimePicker.\n */\n get: function get() {\n var value = this.valueDuringOnChange !== undefined ? this.valueDuringOnChange : this.props.value !== undefined ? this.props.value : this.state.value;\n return value !== null ? cloneDate(value) : null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePicker.prototype, \"show\", {\n /**\n * Gets the popup state of the TimeSelector.\n */\n get: function get() {\n return this.showDuringOnChange !== undefined ? this.showDuringOnChange : this.props.show !== undefined ? this.props.show : this.state.show;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePicker.prototype, \"name\", {\n /**\n * Gets the `name` property of the TimePicker.\n */\n get: function get() {\n return this.props.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePicker.prototype, \"validity\", {\n /**\n * Represents the validity state into which the TimePicker is set.\n */\n get: function get() {\n var value = this.value && this.normalizeTime(this.value);\n var min = this.normalizeTime(this.min);\n var max = this.normalizeTime(this.max);\n var inRange = isInRange(value, min, 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: isBiggerThanMax(value, max),\n rangeUnderflow: isSmallerThanMin(value, min),\n valid: valid,\n valueMissing: this.value === null\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePicker.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function get() {\n return this.props.validityStyles !== undefined ? this.props.validityStyles : TimePicker.defaultProps.validityStyles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePicker.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function get() {\n return this.props.required !== undefined ? this.props.required : TimePicker.defaultProps.required;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePicker.prototype, \"popupSettings\", {\n get: function get() {\n return this.props.popupSettings || TimePicker.defaultProps.popupSettings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePicker.prototype, \"min\", {\n get: function get() {\n return this.props.min !== undefined ? this.props.min : TimePicker.defaultProps.min;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePicker.prototype, \"max\", {\n get: function get() {\n return this.props.max !== undefined ? this.props.max : TimePicker.defaultProps.max;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n TimePicker.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 if (this._dateInput && this._dateInput.element) {\n this._dateInput.element.setAttribute('aria-haspopup', 'true');\n\n this._dateInput.element.setAttribute('aria-expanded', \"\" + this.show);\n }\n };\n /**\n * @hidden\n */\n\n\n TimePicker.prototype.componentWillUnmount = function () {\n clearTimeout(this.nextTickId);\n };\n /**\n * @hidden\n */\n\n\n TimePicker.prototype.componentDidUpdate = function (prevProps) {\n if (this._dateInput && this._dateInput.element) {\n this._dateInput.element.setAttribute('aria-expanded', \"\" + this.show);\n }\n\n if (this._timeSelector && this.show && !prevProps.show) {\n this._timeSelector.focusActiveList();\n } else if (this._dateInput && this._dateInput.element && !this.show && this.shouldFocusDateInput) {\n this._dateInput.element.focus({\n preventScroll: true\n });\n }\n\n this.shouldFocusDateInput = false;\n };\n /**\n * @hidden\n */\n\n\n TimePicker.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n disabled = _a.disabled,\n tabIndex = _a.tabIndex,\n title = _a.title,\n id = _a.id,\n className = _a.className,\n format = _a.format,\n formatPlaceholder = _a.formatPlaceholder,\n smoothScroll = _a.smoothScroll,\n width = _a.width,\n name = _a.name,\n steps = _a.steps,\n cancelButton = _a.cancelButton,\n nowButton = _a.nowButton,\n validationMessage = _a.validationMessage,\n required = _a.required,\n validityStyles = _a.validityStyles;\n\n var _b = this.popupSettings,\n popupClass = _b.popupClass,\n otherPopupSettings = __rest(_b, [\"popupClass\"]);\n\n var isValid = !this.validityStyles || this.validity.valid;\n var rootClassName = classNames('k-widget k-timepicker', {\n 'k-state-invalid': !isValid\n }, className);\n var wrapperClassNames = classNames('k-picker-wrap', {\n 'k-state-default': !disabled,\n 'k-state-disabled': disabled\n });\n var popupClassNames = classNames('k-group k-reset', popupClass);\n var dateInputProps = {\n disabled: disabled,\n format: format,\n formatPlaceholder: formatPlaceholder,\n id: id,\n max: this.normalizeTime(this.max),\n min: this.normalizeTime(this.min),\n name: name,\n onChange: this.handleInputValueChange,\n required: required,\n steps: steps,\n tabIndex: !this.show ? tabIndex : -1,\n title: title,\n valid: this.validity.valid,\n validationMessage: validationMessage,\n validityStyles: validityStyles,\n value: this.value && this.normalizeTime(this.value)\n };\n\n var popupProps = __assign({\n show: this.show,\n animate: this._wrapper !== null,\n anchor: this._wrapper || undefined,\n className: popupClassNames,\n id: this._popupId,\n anchorAlign: {\n horizontal: 'left',\n vertical: 'bottom'\n },\n popupAlign: {\n horizontal: 'left',\n vertical: 'top'\n }\n }, otherPopupSettings);\n\n var timeSelector = React.createElement(TimeSelector, {\n ref: this.setTimeSelectorRef,\n cancelButton: cancelButton,\n disabled: disabled,\n nowButton: nowButton,\n format: format,\n min: this.min,\n max: this.max,\n steps: steps,\n smoothScroll: smoothScroll,\n value: this.value,\n onChange: this.handleValueChange,\n onReject: this.handleValueReject\n });\n var localizationService = provideLocalizationService(this);\n var toggleClockMessage = localizationService.toLanguageString(toggleClock, messages[toggleClock]);\n var toggleTimeMessage = localizationService.toLanguageString(toggleTimeSelector, messages[toggleTimeSelector]);\n return React.createElement(\"div\", {\n ref: function ref(span) {\n _this._element = span;\n },\n className: rootClassName,\n onKeyDown: this.handleKeyDown,\n style: {\n width: width\n },\n onFocus: this.handleFocus,\n onBlur: this.handleBlur\n }, React.createElement(\"span\", {\n ref: function ref(span) {\n _this._wrapper = span;\n },\n className: wrapperClassNames\n }, this.props.dateInput ? React.createElement(this.props.dateInput, __assign({}, dateInputProps)) : React.createElement(DateInput, __assign({\n ref: this.setDateInputRef\n }, dateInputProps)), React.createElement(\"span\", __assign({\n role: \"button\",\n onMouseDown: this.handleIconMouseDown,\n onClick: this.handleIconClick,\n title: toggleTimeMessage,\n className: \"k-select\"\n }, {\n 'aria-controls': this._popupId,\n 'aria-label': toggleClockMessage\n }), React.createElement(\"span\", {\n className: \"k-icon k-i-clock\"\n }))), this.props.popup ? React.createElement(this.props.popup, __assign({}, popupProps), timeSelector) : React.createElement(Popup, __assign({}, popupProps), timeSelector));\n };\n\n TimePicker.prototype.normalizeTime = function (date) {\n return setTime(MIDNIGHT_DATE, date);\n };\n\n TimePicker.prototype.setShow = function (show) {\n if (this.show === show) {\n return;\n }\n\n this.setState({\n show: show\n });\n };\n\n TimePicker.prototype.nextTick = function (f) {\n // XXX: use setTimeout due to async focus/blur events in IE, and missing relatedTarget prop.\n // XXX: https://github.com/facebook/react/issues/3751\n clearTimeout(this.nextTickId);\n this.nextTickId = setTimeout(function () {\n return f();\n });\n };\n\n TimePicker.prototype.mergeTime = function (value) {\n return this.value && value ? setTime(this.value, value) : value;\n };\n /**\n * @hidden\n */\n\n\n TimePicker.propTypes = {\n className: PropTypes.string,\n cancelButton: PropTypes.bool,\n nowButton: PropTypes.bool,\n defaultShow: PropTypes.bool,\n defaultValue: PropTypes.instanceOf(Date),\n disabled: PropTypes.bool,\n format: PropTypes.string,\n formatPlaceholder: PropTypes.oneOfType([PropTypes.oneOf(['wide', 'narrow', 'short', 'formatPattern']), 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 id: 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 steps: PropTypes.shape({\n hour: PropTypes.number,\n minute: PropTypes.number,\n second: PropTypes.number\n }),\n smoothScroll: PropTypes.bool,\n tabIndex: PropTypes.number,\n title: PropTypes.string,\n value: PropTypes.instanceOf(Date),\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\n TimePicker.defaultProps = {\n defaultShow: false,\n defaultValue: null,\n disabled: false,\n format: 't',\n max: MAX_TIME,\n min: MIN_TIME,\n popupSettings: {},\n title: '',\n tabIndex: 0,\n steps: {},\n required: false,\n validityStyles: true\n };\n return TimePicker;\n}(React.Component);\n\nexport { TimePicker };\nregisterForLocalization(TimePicker);","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport { Header } from './Header';\nimport { View } from './View';\nimport { CalendarViewEnum } from '../models';\nimport { classNames } from '@progress/kendo-react-common';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { MAX_DATE, MIN_DATE } from '../../defaults';\nvar DEFAULT_FETCH_MONTHS_COUNT = 2;\n/**\n * @hidden\n */\n\nvar HorizontalViewList =\n/** @class */\nfunction (_super) {\n __extends(HorizontalViewList, _super);\n\n function HorizontalViewList(props) {\n var _this = _super.call(this, props) || this;\n\n _this.isActive = false;\n\n _this.focusActiveDate = function () {\n if (!_this._element) {\n return;\n }\n\n var focusedCell = _this._element.querySelector(\"td.k-state-focused\");\n\n var nextActiveCell = _this._element.querySelector('.k-state-pending-focus');\n\n if (focusedCell && focusedCell[0]) {\n focusedCell[0].classList.remove('k-state-focused');\n }\n\n if (nextActiveCell) {\n nextActiveCell.classList.add('k-state-focused');\n }\n\n _this.isActive = true;\n };\n\n _this.blurActiveDate = function () {\n if (!_this._element) {\n return;\n }\n\n var focusedCell = _this._element.querySelector(\"td.k-state-focused\");\n\n if (focusedCell) {\n focusedCell.classList.remove('k-state-focused');\n }\n\n _this.isActive = false;\n };\n\n _this.rotateSelectionRange = function (selectionRange) {\n if (selectionRange.start === null || selectionRange.end === null) {\n return selectionRange;\n }\n\n var needRotate = selectionRange.end < selectionRange.start;\n return {\n start: needRotate ? selectionRange.end : selectionRange.start,\n end: needRotate ? selectionRange.start : selectionRange.end\n };\n };\n\n _this.handleTodayClick = function (event) {\n _this.handleDateChange.call(undefined, event, true);\n };\n\n _this.handleDateChange = function (event, isTodayClick) {\n if (isTodayClick === void 0) {\n isTodayClick = false;\n }\n\n var onChange = _this.props.onChange;\n\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\n _this.lastView = props.activeView;\n return _this;\n }\n\n Object.defineProperty(HorizontalViewList.prototype, \"element\", {\n get: function get() {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HorizontalViewList.prototype, \"weekNumber\", {\n get: function get() {\n return Boolean(this.props.showWeekNumbers && this.props.activeView === CalendarViewEnum.month);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HorizontalViewList.prototype, \"min\", {\n get: function get() {\n return this.props.min !== undefined ? this.props.min : HorizontalViewList.defaultProps.min;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HorizontalViewList.prototype, \"max\", {\n get: function get() {\n return this.props.max !== undefined ? this.props.max : HorizontalViewList.defaultProps.max;\n },\n enumerable: true,\n configurable: true\n });\n\n HorizontalViewList.prototype.componentDidUpdate = function () {\n if (this.isActive) {\n this.focusActiveDate();\n }\n\n this.lastView = this.props.activeView;\n this.lastViewsCount = this.props.views || HorizontalViewList.defaultProps.views;\n };\n\n HorizontalViewList.prototype.render = function () {\n var _this = this;\n\n var didViewChange = this.lastView !== this.props.activeView;\n var isDateInList = this.dates && this.props.service.isInArray(this.props.focusedDate, this.dates);\n var didViewsCountChange = this.lastViewsCount !== this.props.views;\n\n if (!isDateInList || didViewChange || didViewsCountChange) {\n this.dates = this.props.service.datesList(this.props.focusedDate, this.props.views || HorizontalViewList.defaultProps.views);\n }\n\n var activeDate = cloneDate(this.dates && this.dates[0] ? this.dates[0] : undefined);\n var selectionRange = this.props.allowReverse ? this.rotateSelectionRange(this.props.selectionRange) : this.props.selectionRange;\n var rootClassNames = classNames('k-calendar-view', {\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 return React.createElement(\"div\", {\n ref: function ref(el) {\n _this._element = el;\n },\n className: rootClassNames\n }, React.createElement(Header, {\n key: \".kendo.calendar.header.\" + activeDate.getTime(),\n activeView: this.props.activeView,\n currentDate: activeDate,\n min: this.min,\n max: this.max,\n rangeLength: this.props.views,\n onTodayClick: this.handleTodayClick,\n bus: this.props.bus,\n service: this.props.service,\n headerTitle: this.props.headerTitle\n }), React.createElement(\"table\", {\n className: \"k-content\",\n key: activeDate.getTime()\n }, this.dates.map(function (date) {\n return React.createElement(View, {\n bus: _this.props.bus,\n service: _this.props.service,\n key: date.getTime(),\n direction: \"horizontal\",\n activeView: _this.props.activeView,\n cellUID: _this.props.cellUID,\n viewDate: date,\n min: _this.min,\n max: _this.max,\n focusedDate: _this.props.focusedDate,\n selectionRange: selectionRange,\n selectedDate: _this.props.value,\n showWeekNumbers: _this.weekNumber,\n onChange: _this.handleDateChange,\n onCellEnter: _this.props.onCellEnter,\n cell: _this.props.cell,\n weekCell: _this.props.weekCell\n });\n })));\n };\n\n HorizontalViewList.defaultProps = {\n showWeekNumbers: false,\n views: DEFAULT_FETCH_MONTHS_COUNT,\n take: DEFAULT_FETCH_MONTHS_COUNT,\n allowReverse: true,\n min: MIN_DATE,\n max: MAX_DATE\n };\n return HorizontalViewList;\n}(React.Component);\n\nexport { HorizontalViewList };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { registerForIntl, provideIntlService, registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { classNames, guid, Keys } from '@progress/kendo-react-common';\nimport { cloneDate, isEqualDate, getDate } from '@progress/kendo-date-math';\nimport { Action, CalendarViewEnum, EMPTY_SELECTIONRANGE } from '../models';\nimport { MIN_DATE, MAX_DATE } from '../../defaults';\nimport { messages, prevView, nextView } from '../../messages';\nimport { BusViewService, NavigationService } from '../services';\nimport { dateInRange, isInRange, viewInRange, getToday } from '../../utils';\nimport { HorizontalViewList } from './HorizontalViewList';\n\nvar extractDateFromValue = function extractDateFromValue(min, max, value) {\n if (min === void 0) {\n min = MultiViewCalendar.defaultProps.min;\n }\n\n if (max === void 0) {\n max = MultiViewCalendar.defaultProps.max;\n }\n\n return value instanceof Date && !Array.isArray(value) && isInRange(getDate(value), min, max) ? getDate(value) : null;\n};\n\nvar extractMultipleFromValue = function extractMultipleFromValue(min, max, value) {\n if (min === void 0) {\n min = MultiViewCalendar.defaultProps.min;\n }\n\n if (max === void 0) {\n max = MultiViewCalendar.defaultProps.max;\n }\n\n return Array.isArray(value) ? value.filter(function (date) {\n return isInRange(date, min, max);\n }).map(function (date) {\n return getDate(date);\n }) : null;\n};\n\nvar extractRangeFromValue = function extractRangeFromValue(value) {\n return typeof value === 'object' && !(value instanceof Date) && value !== null && !Array.isArray(value) ? value : EMPTY_SELECTIONRANGE;\n};\n\nvar extractFocusedDate = function extractFocusedDate(single, multiple, range) {\n return single || multiple && multiple[0] || range && range.start;\n};\n\nvar extractActiveRange = function extractActiveRange(range, single) {\n return range.start === null && single === null ? 'start' : range.end === null ? 'end' : 'start';\n};\n\nvar MultiViewCalendar =\n/** @class */\nfunction (_super) {\n __extends(MultiViewCalendar, _super);\n\n function MultiViewCalendar(props) {\n var _this = _super.call(this, props) || this;\n\n _this.selectedDate = null;\n _this.selectedMultiple = null;\n _this.selectedRange = EMPTY_SELECTIONRANGE;\n _this.cellUID = guid();\n _this.activeRangeEnd = 'start';\n _this.wrapperID = guid();\n _this.isActive = false;\n _this.calculateFocusFromValue = true;\n\n _this.clampRange = function (value) {\n return {\n start: value,\n end: null\n };\n };\n\n _this.rangeWithFocused = function (range, focusedDate) {\n return {\n start: range.start,\n end: range.end === null && range.start !== null && _this.isActive ? focusedDate : range.end\n };\n };\n\n _this.generateRange = function (candidate, value) {\n var end = value.end,\n start = value.start;\n var shouldSwap = value.start !== null && candidate.getTime() <= value.start.getTime();\n\n if (!_this.props.allowReverse && shouldSwap) {\n return {\n start: candidate,\n end: _this.selectedRange.start\n };\n }\n\n return _this.activeRange !== 'end' ? {\n start: candidate,\n end: end\n } : {\n start: start || _this.selectedDate,\n end: candidate\n };\n };\n\n _this.canNavigate = function (action) {\n if (!_this.service) {\n return false;\n }\n\n var candidate = _this.service.move(_this.focusedDate, action);\n\n return _this.min <= candidate && candidate <= _this.max || _this.service.isInSameView(candidate, _this.min) || _this.service.isInSameView(candidate, _this.max);\n };\n\n _this.isListInRange = function (list) {\n return _this.min < list[0] && _this.max > list[Math.max(0, (_this.props.views || MultiViewCalendar.defaultProps.views) - 1)];\n };\n\n _this.navigate = function (action) {\n _this.calculateFocusFromValue = false;\n\n var candidate = _this.move(action);\n\n _this.setState({\n focusedDate: candidate\n });\n };\n\n _this.move = function (action) {\n return _this.clampDate(_this.service.move(_this.focusedDate, action));\n };\n\n _this.clampDate = function (value) {\n return dateInRange(value, _this.min, _this.max);\n };\n\n _this.shouldAutoCorrect = function (candidate, value) {\n var end = value.end,\n start = value.start;\n\n if (_this.activeRange !== 'end') {\n return end !== null && candidate > end;\n } else {\n return start !== null && candidate < start;\n }\n };\n\n _this.handleCellEnter = function (value) {\n if (_this.props.mode === 'range') {\n _this.calculateFocusFromValue = false;\n\n _this.setState({\n focusedDate: value\n });\n }\n };\n\n _this.handleMouseDown = function (event) {\n event.preventDefault();\n };\n\n _this.handleClick = function (_) {\n if (!_this._element) {\n return;\n }\n\n _this._element.focus({\n preventScroll: true\n });\n };\n\n _this.handleFocus = function (event) {\n _this.isActive = true;\n\n if (!_this.calendarViewList) {\n return;\n }\n\n _this.calendarViewList.focusActiveDate();\n\n var onFocus = _this.props.onFocus;\n\n if (onFocus) {\n onFocus.call(undefined, event);\n }\n };\n\n _this.handleBlur = function (event) {\n _this.isActive = false;\n\n if (!_this.calendarViewList) {\n return;\n }\n\n _this.calendarViewList.blurActiveDate();\n\n var onBlur = _this.props.onBlur;\n\n if (onBlur) {\n onBlur.call(undefined, event);\n }\n };\n\n _this.handlePrevButtonClick = function () {\n _this.navigate(Action.PrevView);\n };\n\n _this.handleNextButtonClick = function () {\n _this.navigate(Action.NextView);\n };\n\n _this.handleKeyDown = function (event) {\n var keyCode = event.keyCode;\n\n if (keyCode === Keys.enter) {\n var args = {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: _this.focusedDate,\n target: _this\n };\n\n _this.handleDateChange.call(undefined, args);\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\n if (isEqualDate(_this.focusedDate, candidate)) {\n return;\n }\n\n _this.calculateFocusFromValue = false;\n\n _this.setState({\n focusedDate: candidate\n });\n }\n\n event.preventDefault();\n };\n\n _this.handleViewChange = function (_a) {\n var view = _a.view;\n\n _this.setState({\n activeView: view\n });\n };\n\n _this.handleDateChange = function (event) {\n var focusedDate = cloneDate(event.value);\n\n var canNavigateDown = _this.bus.canMoveDown(_this.state.activeView);\n\n if (_this.props.disabled) {\n return;\n }\n\n if (canNavigateDown) {\n if (event.isTodayClick) {\n _this.bus.moveToBottom(_this.state.activeView);\n } else {\n _this.bus.moveDown(_this.state.activeView, event.syntheticEvent);\n\n _this.setState({\n focusedDate: focusedDate\n });\n\n return;\n }\n }\n\n _this.calculateFocusFromValue = true;\n var value;\n\n switch (_this.props.mode) {\n case 'single':\n value = cloneDate(event.value);\n break;\n\n case 'multiple':\n if (Array.isArray(_this.selectedMultiple)) {\n var result = _this.selectedMultiple.slice();\n\n var index_1 = -1;\n result.forEach(function (date, idx) {\n if (isEqualDate(date, event.value)) {\n index_1 = idx;\n }\n });\n index_1 !== -1 ? result.splice(index_1, 1) : result.push(cloneDate(event.value));\n value = result.slice();\n } else {\n if (_this.selectedDate) {\n value = [cloneDate(_this.selectedDate), cloneDate(event.value)];\n } else {\n value = [cloneDate(event.value)];\n }\n }\n\n break;\n\n case 'range':\n var hasSelection = _this.selectedRange.start !== null && _this.selectedRange.end !== null && _this.activeRange === 'start';\n value = hasSelection ? _this.clampRange(event.value) : _this.generateRange(event.value, _this.selectedRange);\n _this.activeRangeEnd = _this.activeRange !== 'end' ? 'end' : 'start';\n break;\n\n default:\n value = cloneDate(event.value);\n break;\n }\n\n _this.valueDuringOnChange = value;\n\n _this.setState({\n value: value,\n focusedDate: focusedDate\n });\n\n _this.valueDuringOnChange = value;\n var onChange = _this.props.onChange;\n\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\n _this.valueDuringOnChange = undefined;\n };\n\n var value = props.value !== undefined ? props.value : props.defaultValue || MultiViewCalendar.defaultProps.defaultValue;\n var selectedDate = extractDateFromValue(_this.min, _this.max, value);\n var selectedMultiple = extractMultipleFromValue(_this.min, _this.max, value);\n var selectedRange = extractRangeFromValue(value);\n var calculatedFocus = extractFocusedDate(selectedDate, selectedMultiple, selectedRange);\n var activeView = viewInRange(CalendarViewEnum[props.defaultActiveView], _this.bottomView, _this.topView);\n var focusedDate = dateInRange(props.focusedDate || calculatedFocus || getToday(), _this.min, _this.max);\n _this.state = {\n value: value,\n activeView: activeView,\n focusedDate: focusedDate\n };\n _this.activeRangeEnd = extractActiveRange(selectedRange, selectedDate);\n _this.bus = new BusViewService(_this.handleViewChange);\n _this.navigation = new NavigationService(_this.bus);\n _this.calculateFocusFromValue = false;\n return _this;\n }\n\n Object.defineProperty(MultiViewCalendar.prototype, \"element\", {\n /**\n * Gets the wrapping element of the MultiViewCalendar component.\n */\n get: function get() {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MultiViewCalendar.prototype, \"value\", {\n /**\n * Gets the value of the MultiViewCalendar.\n */\n get: function get() {\n return this.valueDuringOnChange !== undefined ? this.valueDuringOnChange : this.props.value !== undefined ? this.props.value : this.state.value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MultiViewCalendar.prototype, \"focusedDate\", {\n /**\n * Gets the current focused date of the MultiViewCalendar.\n */\n get: function get() {\n return cloneDate(this._focusedDate);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MultiViewCalendar.prototype, \"min\", {\n get: function get() {\n return getDate(this.props.min !== undefined ? this.props.min : MultiViewCalendar.defaultProps.min);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MultiViewCalendar.prototype, \"max\", {\n get: function get() {\n return getDate(this.props.max !== undefined ? this.props.max : MultiViewCalendar.defaultProps.max);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MultiViewCalendar.prototype, \"bottomView\", {\n get: function get() {\n return CalendarViewEnum[this.props.bottomView !== undefined ? this.props.bottomView : MultiViewCalendar.defaultProps.bottomView];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MultiViewCalendar.prototype, \"topView\", {\n get: function get() {\n return CalendarViewEnum[this.props.topView !== undefined ? this.props.topView : MultiViewCalendar.defaultProps.topView];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MultiViewCalendar.prototype, \"activeRange\", {\n get: function get() {\n return this.props.activeRangeEnd !== undefined ? this.props.activeRangeEnd : this.activeRangeEnd;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n MultiViewCalendar.prototype.componentDidMount = function () {\n this.calculateFocusFromValue = true;\n };\n /**\n * @hidden\n */\n\n\n MultiViewCalendar.prototype.componentDidUpdate = function () {\n if (this.calendarViewList) {\n this.isActive ? this.calendarViewList.focusActiveDate() : this.calendarViewList.blurActiveDate();\n }\n\n this.calculateFocusFromValue = false;\n };\n /**\n * @hidden\n */\n\n\n MultiViewCalendar.prototype.render = function () {\n var _this = this;\n\n this.intl = provideIntlService(this);\n this.localization = provideLocalizationService(this);\n this.bus.configure(this.bottomView, this.topView);\n var activeView = viewInRange(this.state.activeView, this.bottomView, this.topView);\n this.service = this.bus.service(activeView, this.intl);\n this.selectedDate = extractDateFromValue(this.min, this.max, this.value);\n this.selectedMultiple = extractMultipleFromValue(this.min, this.max, this.value);\n this.selectedRange = extractRangeFromValue(this.value);\n var calculatedFocus = extractFocusedDate(this.selectedDate, this.selectedMultiple, this.selectedRange);\n this._focusedDate = dateInRange(this.calculateFocusFromValue && calculatedFocus !== null ? calculatedFocus : this.state.focusedDate, this.min, this.max);\n var wrapperClassName = classNames('k-widget k-calendar k-calendar-infinite k-calendar-range', {\n 'k-state-disabled': this.props.disabled\n }, this.props.className);\n var visualizedRange = this.rangeWithFocused(this.selectedRange, this.focusedDate);\n var wrapperAria = {\n 'aria-disabled': this.props.disabled,\n 'aria-activedescendant': this.cellUID + this.focusedDate.getTime()\n };\n var prevViewTitle = this.localization.toLanguageString(prevView, messages[prevView]);\n var nextViewTittle = this.localization.toLanguageString(nextView, messages[nextView]);\n var isPrevDisabled = !this.canNavigate(Action.PrevView);\n var isNextDisabled = !this.canNavigate(Action.NextView);\n var prevBtnAria = {\n 'aria-disabled': isPrevDisabled\n };\n var nextBtnAria = {\n 'aria-disabled': isNextDisabled\n };\n return React.createElement(\"div\", __assign({\n ref: function ref(el) {\n _this._element = el;\n },\n className: wrapperClassName,\n id: this.props.id || this.wrapperID,\n role: 'grid',\n tabIndex: !this.props.disabled ? this.props.tabIndex : undefined,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onMouseDown: this.handleMouseDown,\n onClick: this.handleClick,\n onKeyDown: this.handleKeyDown\n }, wrapperAria), React.createElement(\"button\", __assign({\n className: \"k-button k-prev-view\",\n title: prevViewTitle,\n disabled: isPrevDisabled,\n onClick: this.handlePrevButtonClick\n }, prevBtnAria), React.createElement(\"span\", {\n className: \"k-icon k-i-arrow-chevron-left\"\n })), React.createElement(HorizontalViewList, {\n ref: function ref(el) {\n _this.calendarViewList = el;\n },\n activeView: activeView,\n focusedDate: this.focusedDate,\n min: this.min,\n max: this.max,\n bus: this.bus,\n service: this.service,\n selectionRange: visualizedRange,\n value: this.selectedMultiple || this.selectedDate,\n cellUID: this.cellUID,\n views: this.props.views,\n onChange: this.handleDateChange,\n showWeekNumbers: this.props.weekNumber,\n onCellEnter: this.handleCellEnter,\n cell: this.props.cell,\n weekCell: this.props.weekCell,\n headerTitle: this.props.headerTitle\n }), React.createElement(\"button\", __assign({\n className: \"k-button k-next-view\",\n title: nextViewTittle,\n disabled: isNextDisabled,\n onClick: this.handleNextButtonClick\n }, nextBtnAria), React.createElement(\"span\", {\n className: \"k-icon k-i-arrow-chevron-right\"\n })));\n };\n /**\n * @hidden\n */\n\n\n MultiViewCalendar.propTypes = {\n activeRangeEnd: PropTypes.oneOf(['start', 'end']),\n allowReverse: PropTypes.bool,\n bottomView: PropTypes.oneOf(['month', 'year', 'decade', 'century']),\n className: PropTypes.string,\n defaultActiveView: PropTypes.oneOf(['month', 'year', 'decade', 'century']),\n defaultValue: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.arrayOf(PropTypes.instanceOf(Date)), PropTypes.shape({\n start: PropTypes.instanceOf(Date),\n end: PropTypes.instanceOf(Date)\n })]),\n disabled: PropTypes.bool,\n focusedDate: PropTypes.instanceOf(Date),\n id: PropTypes.string,\n max: PropTypes.instanceOf(Date),\n min: PropTypes.instanceOf(Date),\n mode: PropTypes.oneOf(['single', 'multiple', 'range']),\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n tabIndex: PropTypes.number,\n topView: PropTypes.oneOf(['month', 'year', 'decade', 'century']),\n value: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.arrayOf(PropTypes.instanceOf(Date)), PropTypes.shape({\n start: PropTypes.instanceOf(Date),\n end: PropTypes.instanceOf(Date)\n })]),\n views: function views(props, propName, componentName) {\n var views = props[propName];\n\n if (views !== undefined && views < 1) {\n return new Error(\"Invalid prop '\" + propName + \"' supplied to\" + (\"'\" + componentName + \"'. The '\" + propName + \"' property cannot be less than 1'\"));\n }\n },\n weekNumber: PropTypes.bool\n };\n /**\n * @hidden\n */\n\n MultiViewCalendar.defaultProps = {\n disabled: false,\n min: MIN_DATE,\n max: MAX_DATE,\n navigation: true,\n defaultActiveView: 'month',\n defaultValue: null,\n topView: 'century',\n tabIndex: 0,\n bottomView: 'month',\n views: 2,\n allowReverse: false\n };\n return MultiViewCalendar;\n}(React.Component);\n\nexport { MultiViewCalendar };\nregisterForIntl(MultiViewCalendar);\nregisterForLocalization(MultiViewCalendar);","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { guid, classNames, Keys } from '@progress/kendo-react-common';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { DateInput } from '../dateinput/DateInput';\nimport { MultiViewCalendar } from '../calendar/components/MultiViewCalendar';\nimport { EMPTY_SELECTIONRANGE } from '../calendar/models';\nimport { MIN_DATE, MAX_DATE } from '../defaults';\nimport { swapStartEnd, start, end, separator, messages } from '../messages';\nvar WRAPPER_STYLES = {\n display: 'inline-block'\n};\n\nvar DateRangePicker =\n/** @class */\nfunction (_super) {\n __extends(DateRangePicker, _super);\n\n function DateRangePicker(props) {\n var _this = _super.call(this, props) || this;\n\n _this._element = null;\n _this._wrapper = null;\n _this._calendar = null;\n _this._popupId = guid();\n _this._startInputId = guid();\n _this._endInputId = guid();\n _this.shouldFocusDateInput = false;\n _this.shouldFocusCalendar = false;\n\n _this.setStartDateInputRef = function (dateInput) {\n _this._startDateInput = dateInput;\n };\n\n _this.setEndDateInputRef = function (dateInput) {\n _this._endDateInput = dateInput;\n };\n\n _this.setCalendarRef = function (calendar) {\n _this._calendar = calendar;\n };\n\n _this.focusCalendarElement = function () {\n if (_this._calendar && _this._calendar.element) {\n _this._calendar.element.focus({\n preventScroll: true\n });\n }\n };\n\n _this.calculateValue = function (props, state) {\n var value = props.value !== undefined ? props.value : state.value;\n return value || EMPTY_SELECTIONRANGE;\n };\n\n _this.calculateShow = function (nextProps, nextState) {\n return nextProps.show !== undefined ? nextProps.show : nextState.show;\n };\n\n _this.handleReverseClick = function (event) {\n var value = {\n start: _this.value.end,\n end: _this.value.start\n };\n var args = {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent\n };\n\n _this.handleChange(value, args);\n };\n\n _this.handleReverseMouseDown = function (event) {\n event.preventDefault();\n };\n\n _this.handleFocus = function (event) {\n clearTimeout(_this.nextTickId);\n\n if (!_this.shouldFocusDateInput) {\n _this.setShow(true);\n }\n\n if (_this._startDateInput && _this._startDateInput.element) {\n _this._startDateInput.element.classList.add('k-state-focused');\n }\n\n if (_this._endDateInput && _this._endDateInput.element) {\n _this._endDateInput.element.classList.add('k-state-focused');\n }\n\n var onFocus = _this.props.onFocus;\n\n if (onFocus) {\n onFocus.call(undefined, event);\n }\n };\n\n _this.handleBlur = function (event) {\n _this.nextTick(function () {\n if (_this._startDateInput && _this._startDateInput.element) {\n _this._startDateInput.element.classList.remove('k-state-focused');\n }\n\n if (_this._endDateInput && _this._endDateInput.element) {\n _this._endDateInput.element.classList.remove('k-state-focused');\n }\n\n _this.setShow(false);\n });\n\n var onBlur = _this.props.onBlur;\n\n if (onBlur) {\n onBlur.call(undefined, event);\n }\n };\n\n _this.handleEndChange = function (event) {\n var value = {\n start: _this.value.start,\n end: cloneDate(event.value || undefined)\n };\n\n _this.handleChange(value, event);\n };\n\n _this.handleStartChange = function (event) {\n var value = {\n start: cloneDate(event.value || undefined),\n end: _this.value.end\n };\n\n _this.handleChange(value, event);\n };\n\n _this.extractRangeFromValue = function (event) {\n if (!Array.isArray(event.value) && !(event.value instanceof Date)) {\n return event.value || EMPTY_SELECTIONRANGE;\n }\n\n var candidate = Array.isArray(event.value) ? event.value[0] : event.value;\n return {\n start: _this.value.end !== null ? candidate : _this.value.start,\n end: _this.value.start !== null ? candidate : _this.value.end\n };\n };\n\n _this.handleCalendarChange = function (event) {\n var value = _this.extractRangeFromValue(event);\n\n _this.handleChange(value, event);\n };\n\n _this.handleKeyDown = function (event) {\n var keyCode = event.keyCode,\n altKey = event.altKey;\n\n if (keyCode === Keys.esc) {\n event.preventDefault();\n _this.shouldFocusDateInput = true;\n\n _this.setShow(false);\n } else if (altKey && keyCode === Keys.down) {\n event.preventDefault();\n _this.shouldFocusCalendar = true;\n\n _this.setShow(true);\n } else if (keyCode === Keys.tab && _this.show && _this._calendar && _this._calendar.element && _this._endDateInput && _this._endDateInput.element && document && document.activeElement === _this._endDateInput.element) {\n event.preventDefault();\n\n _this.focusCalendarElement();\n }\n };\n\n _this.handleChange = function (value, event) {\n _this.setState({\n value: value\n });\n\n _this.valueDuringOnChange = value;\n var onChange = _this.props.onChange;\n\n if (onChange) {\n var args = {\n syntheticEvent: event.syntheticEvent,\n nativeEvent: event.nativeEvent,\n value: _this.value,\n show: _this.show,\n target: _this\n };\n onChange.call(undefined, args);\n }\n\n _this.valueDuringOnChange = undefined;\n };\n\n _this.state = {\n show: _this.props.show || _this.props.defaultShow || DateRangePicker.defaultProps.defaultShow,\n value: _this.props.value || _this.props.defaultValue || DateRangePicker.defaultProps.defaultValue\n };\n _this.nextTick = _this.nextTick.bind(_this);\n _this.setShow = _this.setShow.bind(_this);\n _this.focusCalendarElement = _this.focusCalendarElement.bind(_this);\n _this.focusDateInputElement = _this.focusDateInputElement.bind(_this);\n return _this;\n }\n\n Object.defineProperty(DateRangePicker.prototype, \"element\", {\n /**\n * Gets the wrapping element of the DateRangePicker.\n */\n get: function get() {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateRangePicker.prototype, \"calendar\", {\n /**\n * Gets the MultiVieCalendar inside the DateRangePicker.\n */\n get: function get() {\n return this._calendar;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateRangePicker.prototype, \"value\", {\n /**\n * Gets the value of the DateRangePicker.\n */\n get: function get() {\n var value = this.valueDuringOnChange !== undefined ? this.valueDuringOnChange : this.props.value !== undefined ? this.props.value : this.state.value;\n return value || EMPTY_SELECTIONRANGE;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateRangePicker.prototype, \"show\", {\n /**\n * Gets the popup state of the DateRangePicker.\n */\n get: function get() {\n return this.showDuringOnChange !== undefined ? this.showDuringOnChange : this.props.show !== undefined ? this.props.show : this.state.show;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateRangePicker.prototype, \"min\", {\n get: function get() {\n return this.props.min !== undefined ? this.props.min : DateRangePicker.defaultProps.min;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateRangePicker.prototype, \"max\", {\n get: function get() {\n return this.props.max !== undefined ? this.props.max : DateRangePicker.defaultProps.max;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n DateRangePicker.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 if (this._startDateInput && this._startDateInput.element && this._endDateInput && this._endDateInput.element) {\n this._startDateInput.element.setAttribute('aria-expanded', \"\" + this.show);\n\n this._endDateInput.element.setAttribute('aria-expanded', \"\" + this.show);\n }\n };\n /**\n * @hidden\n */\n\n\n DateRangePicker.prototype.componentDidUpdate = function () {\n if (this._startDateInput && this._startDateInput.element && this._endDateInput && this._endDateInput.element) {\n this._startDateInput.element.setAttribute('aria-expanded', \"\" + this.show);\n\n this._endDateInput.element.setAttribute('aria-expanded', \"\" + this.show);\n }\n\n if (this.shouldFocusCalendar) {\n this.focusCalendarElement();\n }\n\n if (this.shouldFocusDateInput) {\n this.focusDateInputElement();\n }\n\n this.shouldFocusCalendar = false;\n this.shouldFocusDateInput = false;\n };\n /**\n * @hidden\n */\n\n\n DateRangePicker.prototype.componentWillUnmount = function () {\n clearTimeout(this.nextTickId);\n };\n /**\n * @hidden\n */\n\n\n DateRangePicker.prototype.render = function () {\n var _this = this;\n\n var value = this.value || EMPTY_SELECTIONRANGE;\n var startDateInputId = (this.props.startDateInputSettings || {}).id || this._startInputId;\n var endDateInputId = (this.props.endDateInputSettings || {}).id || this._endInputId;\n var rootClassName = classNames('k-daterangepicker', {\n 'k-state-disabled': this.props.disabled\n }, this.props.className);\n var localizationService = provideLocalizationService(this);\n var startMessage = localizationService.toLanguageString(start, messages[start]);\n var endMessage = localizationService.toLanguageString(end, messages[end]);\n var separatorMessage = localizationService.toLanguageString(separator, messages[separator]);\n\n var startDateInputProps = __assign({\n label: startMessage,\n format: this.props.format,\n min: this.min,\n max: this.max,\n id: this._startInputId,\n disabled: this.props.disabled\n }, this.props.startDateInputSettings, {\n value: value.start,\n onChange: this.handleStartChange\n });\n\n var endDateInputProps = __assign({\n label: endMessage,\n format: this.props.format,\n min: this.min,\n max: this.max,\n id: this._endInputId,\n disabled: this.props.disabled\n }, this.props.endDateInputSettings, {\n value: value.end,\n onChange: this.handleEndChange\n });\n\n var popupProps = __assign({\n animate: this._wrapper !== null,\n anchor: this._wrapper || undefined,\n id: this._popupId,\n anchorAlign: {\n horizontal: 'left',\n vertical: 'bottom'\n },\n popupAlign: {\n horizontal: 'left',\n vertical: 'top'\n }\n }, this.props.popupSettings, {\n show: this.show\n });\n\n var calendarProps = __assign({\n min: this.min,\n max: this.max,\n allowReverse: this.props.allowReverse,\n mode: 'range',\n focusedDate: this.props.focusedDate,\n disabled: this.props.disabled\n }, this.props.calendarSettings, {\n value: value,\n onChange: this.handleCalendarChange\n });\n\n var calendar = this.props.calendar ? React.createElement(this.props.calendar, __assign({}, calendarProps)) : React.createElement(MultiViewCalendar, __assign({}, calendarProps, {\n ref: this.setCalendarRef\n }));\n var reverseButton = React.createElement(\"span\", __assign({\n role: \"button\",\n className: \"k-select k-button k-flat\",\n title: provideLocalizationService(this).toLanguageString(swapStartEnd, messages[swapStartEnd]),\n onMouseDown: this.handleReverseMouseDown,\n onClick: this.handleReverseClick\n }, {\n 'aria-controls': startDateInputId + ' ' + endDateInputId,\n 'aria-label': provideLocalizationService(this).toLanguageString(swapStartEnd, messages[swapStartEnd])\n }), React.createElement(\"span\", {\n style: {\n transform: 'rotate(90deg)'\n },\n className: \"k-icon k-i-arrows-swap\"\n }));\n return React.createElement(\"span\", {\n ref: function ref(span) {\n _this._element = span;\n },\n className: rootClassName,\n style: this.props.style,\n id: this.props.id,\n tabIndex: this.props.tabIndex,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyDown: this.handleKeyDown\n }, React.createElement(\"span\", {\n ref: function ref(span) {\n _this._wrapper = span;\n },\n className: \"k-daterangepicker-wrap\",\n style: WRAPPER_STYLES\n }, this.props.startDateInput ? React.createElement(this.props.startDateInput, __assign({}, startDateInputProps)) : React.createElement(DateInput, __assign({}, startDateInputProps, {\n ref: this.setStartDateInputRef\n })), (this.props.allowReverse || this.props.calendarSettings && this.props.calendarSettings.allowReverse) && this.props.swapButton ? reverseButton : separatorMessage, this.props.endDateInput ? React.createElement(this.props.endDateInput, __assign({}, endDateInputProps)) : React.createElement(DateInput, __assign({}, endDateInputProps, {\n ref: this.setEndDateInputRef\n }))), this.props.popup ? React.createElement(this.props.popup, __assign({}, popupProps), calendar) : React.createElement(Popup, __assign({}, popupProps), calendar));\n };\n\n DateRangePicker.prototype.focusDateInputElement = function () {\n if (!document || !this._startDateInput || !this._startDateInput.element || !this._endDateInput || !this._endDateInput.element) {\n return;\n }\n\n if ((this.value.start === null || this.value.end !== null) && document.activeElement !== this._endDateInput.element) {\n this._startDateInput.element.focus({\n preventScroll: true\n });\n } else if (document.activeElement !== this._startDateInput.element) {\n this._endDateInput.element.focus({\n preventScroll: true\n });\n }\n };\n\n DateRangePicker.prototype.nextTick = function (f) {\n // XXX: use 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 = setTimeout(function () {\n return f();\n });\n };\n\n DateRangePicker.prototype.setShow = function (show) {\n if (this.show === show) {\n return;\n }\n\n this.setState({\n show: show\n });\n };\n /**\n * @hidden\n */\n\n\n DateRangePicker.propTypes = {\n allowReverse: PropTypes.bool,\n calendarSettings: PropTypes.any,\n className: PropTypes.string,\n defaultShow: PropTypes.bool,\n defaultValue: PropTypes.shape({\n start: PropTypes.instanceOf(Date),\n end: PropTypes.instanceOf(Date)\n }),\n disabled: PropTypes.bool,\n endDateInputSettings: PropTypes.shape(DateInput.propTypes),\n focusedDate: PropTypes.instanceOf(Date),\n format: PropTypes.string,\n id: PropTypes.string,\n max: PropTypes.instanceOf(Date),\n min: PropTypes.instanceOf(Date),\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n popupSettings: PropTypes.any,\n show: PropTypes.bool,\n startDateInputSettings: PropTypes.any,\n style: PropTypes.any,\n swapButton: PropTypes.any,\n tabIndex: PropTypes.number,\n value: PropTypes.shape({\n start: PropTypes.instanceOf(Date),\n end: PropTypes.instanceOf(Date)\n })\n };\n /**\n * @hidden\n */\n\n DateRangePicker.defaultProps = {\n allowReverse: false,\n defaultShow: false,\n defaultValue: EMPTY_SELECTIONRANGE,\n disabled: false,\n format: 'd',\n max: MAX_DATE,\n min: MIN_DATE,\n swapButton: false\n };\n return DateRangePicker;\n}(React.Component);\n\nexport { DateRangePicker };\nregisterForLocalization(DateRangePicker);","/**\n * @hidden\n */\nexport var classNames = function classNames() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return args.filter(function (arg) {\n return arg !== true && !!arg;\n }).map(function (arg) {\n return Array.isArray(arg) ? classNames.apply(void 0, arg) : typeof arg === 'object' ? Object.keys(arg).map(function (key, idx) {\n return arg[idx] || arg[key] && key || null;\n }).filter(function (el) {\n return el !== null;\n }).join(' ') : arg;\n }).filter(function (arg) {\n return !!arg;\n }).join(' ');\n};","/* tslint:disable:no-bitwise */\n\n/**\n * @hidden\n */\nvar guid = function guid() {\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);\n }\n\n return id;\n};\n\nexport { guid };","/**\n * @hidden\n */\nvar 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};\nexport { Keys };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from './classNames';\n/**\n * @hidden\n */\n\nvar FloatingLabel =\n/** @class */\nfunction (_super) {\n __extends(FloatingLabel, _super);\n\n function FloatingLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.state = {\n focused: false\n };\n\n _this.handleFocus = function (_) {\n _this.setState({\n focused: true\n });\n };\n\n _this.handleBlur = function (_) {\n _this.setState({\n focused: false\n });\n };\n\n return _this;\n }\n\n FloatingLabel.prototype.render = function () {\n var _a = this.props,\n label = _a.label,\n id = _a.id,\n className = _a.className,\n value = _a.value,\n placeholder = _a.placeholder,\n valid = _a.valid,\n style = _a.style;\n var childClassNames = classNames({\n 'k-textbox-container': true,\n 'k-state-focused': this.state.focused,\n 'k-state-empty': !(value || placeholder),\n 'k-state-invalid': !valid && valid !== undefined,\n 'k-rtl': this.props.dir === 'rtl'\n }, className);\n return React.createElement(\"span\", {\n className: childClassNames,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n style: style,\n dir: this.props.dir\n }, this.props.children, label ? id ? React.createElement(\"label\", {\n htmlFor: id,\n className: \"k-label\"\n }, label) : React.createElement(\"span\", {\n className: \"k-label\"\n }, label) : null);\n };\n\n FloatingLabel.propTypes = {\n label: PropTypes.string,\n id: PropTypes.string,\n value: PropTypes.string,\n placeholder: PropTypes.string,\n valid: PropTypes.bool\n };\n return FloatingLabel;\n}(React.Component);\n\nexport default FloatingLabel;","/**\n * @hidden\n * Dispatches a new event bsed 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 default 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 * @hidden\n */\nvar isServerRendering = function isServerRendering() {\n return typeof window === 'undefined';\n};\n\nexport { isServerRendering };","var proxy = function proxy(a, b) {\n return function (e) {\n return b(a(e));\n };\n};\n\nvar bind = function bind(el, event, callback) {\n return el.addEventListener && el.addEventListener(event, callback);\n};\n\nvar unbind = function unbind(el, event, callback) {\n return el && el.removeEventListener && el.removeEventListener(event, callback);\n};\n\nvar noop = function noop() {\n /* empty */\n};\n\nvar preventDefault = function preventDefault(e) {\n return e.preventDefault();\n};\n\nvar touchRegExp = /touch/; // 300ms is the usual mouse interval;\n// // However, an underpowered mobile device under a heavy load may queue mouse events for a longer period.\n\nvar IGNORE_MOUSE_TIMEOUT = 2000;\n\nfunction normalizeEvent(e) {\n if (e.type.match(touchRegExp)) {\n return {\n pageX: e.changedTouches[0].pageX,\n pageY: e.changedTouches[0].pageY,\n clientX: e.changedTouches[0].clientX,\n clientY: e.changedTouches[0].clientY,\n type: e.type,\n originalEvent: e,\n isTouch: true\n };\n }\n\n return {\n pageX: e.pageX,\n pageY: e.pageY,\n clientX: e.clientX,\n clientY: e.clientY,\n offsetX: e.offsetX,\n offsetY: e.offsetY,\n type: e.type,\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey,\n altKey: e.altKey,\n originalEvent: e\n };\n}\n\nexport var Draggable = function Draggable(ref) {\n var this$1 = this;\n var press = ref.press;\n if (press === void 0) press = noop;\n var drag = ref.drag;\n if (drag === void 0) drag = noop;\n var release = ref.release;\n if (release === void 0) release = noop;\n var mouseOnly = ref.mouseOnly;\n if (mouseOnly === void 0) mouseOnly = false;\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._ignoreMouse = false;\n this._mouseOnly = mouseOnly;\n this._touchAction;\n\n this._touchstart = function (e) {\n if (e.touches.length === 1) {\n this$1._pressHandler(e);\n }\n };\n\n this._touchmove = function (e) {\n if (e.touches.length === 1) {\n this$1._dragHandler(e);\n }\n };\n\n this._touchend = function (e) {\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 if (e.touches.length === 0 && e.changedTouches.length === 1) {\n this$1._releaseHandler(e);\n\n this$1._ignoreMouse = true;\n setTimeout(this$1._restoreMouse, IGNORE_MOUSE_TIMEOUT);\n }\n };\n\n this._restoreMouse = function () {\n this$1._ignoreMouse = false;\n };\n\n this._mousedown = function (e) {\n var which = e.which;\n\n if (which && which > 1 || this$1._ignoreMouse) {\n return;\n }\n\n bind(document, \"mousemove\", this$1._mousemove);\n bind(document, \"mouseup\", this$1._mouseup);\n\n this$1._pressHandler(e);\n };\n\n this._mousemove = function (e) {\n this$1._dragHandler(e);\n };\n\n this._mouseup = function (e) {\n unbind(document, \"mousemove\", this$1._mousemove);\n unbind(document, \"mouseup\", this$1._mouseup);\n\n this$1._releaseHandler(e);\n };\n\n this._pointerdown = function (e) {\n if (e.isPrimary && e.button === 0) {\n bind(document, \"pointermove\", this$1._pointermove);\n bind(document, \"pointerup\", this$1._pointerup);\n bind(document, \"pointercancel\", this$1._pointerup);\n bind(document, \"contextmenu\", preventDefault);\n this$1._touchAction = e.target.style.touchAction;\n e.target.style.touchAction = \"none\";\n\n this$1._pressHandler(e);\n }\n };\n\n this._pointermove = function (e) {\n if (e.isPrimary) {\n this$1._dragHandler(e);\n }\n };\n\n this._pointerup = function (e) {\n if (e.isPrimary) {\n unbind(document, \"pointermove\", this$1._pointermove);\n unbind(document, \"pointerup\", this$1._pointerup);\n unbind(document, \"pointercancel\", this$1._pointerup);\n unbind(document, \"contextmenu\", preventDefault);\n e.target.style.touchAction = this$1._touchAction;\n\n this$1._releaseHandler(e);\n }\n };\n};\n\nDraggable.supportPointerEvent = function supportPointerEvent() {\n return typeof window !== 'undefined' && window.PointerEvent;\n};\n\nDraggable.prototype.bindTo = function bindTo(element) {\n if (element === this._element) {\n return;\n }\n\n if (this._element) {\n this._unbindFromCurrent();\n }\n\n this._element = element;\n\n this._bindToCurrent();\n};\n\nDraggable.prototype._bindToCurrent = function _bindToCurrent() {\n var element = this._element;\n\n if (this._usePointers()) {\n bind(element, \"pointerdown\", this._pointerdown);\n return;\n }\n\n bind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n bind(element, \"touchstart\", this._touchstart);\n bind(element, \"touchmove\", this._touchmove);\n bind(element, \"touchend\", this._touchend);\n }\n};\n\nDraggable.prototype._unbindFromCurrent = function _unbindFromCurrent() {\n var element = this._element;\n\n if (this._usePointers()) {\n unbind(element, \"pointerdown\", this._pointerdown);\n unbind(document, \"pointermove\", this._pointermove);\n unbind(document, \"pointerup\", this._pointerup);\n unbind(document, \"contextmenu\", preventDefault);\n unbind(document, \"pointercancel\", this._pointerup);\n return;\n }\n\n unbind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n unbind(element, \"touchstart\", this._touchstart);\n unbind(element, \"touchmove\", this._touchmove);\n unbind(element, \"touchend\", this._touchend);\n }\n};\n\nDraggable.prototype._usePointers = function _usePointers() {\n return !this._mouseOnly && Draggable.supportPointerEvent();\n};\n\nDraggable.prototype.destroy = function destroy() {\n this._unbindFromCurrent();\n\n this._element = null;\n}; // Re-export as \"default\" field to address a bug\n// where the ES Module is imported by CommonJS code.\n//\n// See https://github.com/telerik/kendo-angular/issues/1314\n\n\nDraggable.default = Draggable; // Rollup won't output exports['default'] otherwise\n\nexport default Draggable;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport KendoDraggable from '@telerik/kendo-draggable';\n/**\n * @hidden\n */\n\nvar Draggable =\n/** @class */\nfunction (_super) {\n __extends(Draggable, _super);\n\n function Draggable() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n\n\n _this.element = null;\n _this.draggable = new KendoDraggable({\n press: function press(event) {\n if (_this.element && _this.props.onPress) {\n _this.props.onPress.call(undefined, {\n target: _this,\n event: event,\n element: _this.element\n });\n }\n },\n drag: function drag(event) {\n if (_this.element && _this.props.onDrag) {\n _this.props.onDrag.call(undefined, {\n target: _this,\n event: event,\n element: _this.element\n });\n }\n },\n release: function release(event) {\n if (_this.element && _this.props.onRelease) {\n _this.props.onRelease.call(undefined, {\n target: _this,\n event: event\n });\n }\n }\n });\n\n _this.assingRef = function (element) {\n _this.element = element;\n };\n\n return _this;\n }\n\n Draggable.prototype.componentDidMount = function () {\n if (this.element) {\n this.draggable.bindTo(this.element);\n }\n };\n\n Draggable.prototype.componentWillUnmount = function () {\n this.draggable.destroy();\n };\n\n Draggable.prototype.render = function () {\n return React.cloneElement(React.Children.only(this.props.children), {\n ref: this.assingRef\n });\n };\n\n Draggable.propTypes = {\n children: PropTypes.element.isRequired\n };\n return Draggable;\n}(React.Component);\n\nexport { Draggable };","import { FIELD_REGEX } from './constants';\nvar getterCache = {};\n\ngetterCache.undefined = function () {\n return undefined;\n};\n/**\n * @hidden\n */\n\n\nexport 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, fieldName) {\n fields.push(index !== undefined ? index : indexAccessor || fieldName);\n });\n\n getterCache[field] = function (obj) {\n var result = obj;\n\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}","import { FIELD_REGEX } from './constants';\nvar setterCache = {};\n\nsetterCache.undefined = function (obj) {\n return obj;\n};\n/**\n * @hidden\n */\n\n\nexport function setter(field) {\n if (setterCache[field]) {\n return setterCache[field];\n }\n\n var fields = [];\n field.replace(FIELD_REGEX, function (_match, index, indexAccessor, fieldName) {\n fields.push(index !== undefined ? index : indexAccessor || fieldName);\n });\n\n setterCache[field] = function (obj, value) {\n var root = obj;\n var depth = fields.length - 1;\n\n for (var idx = 0; idx < depth && root; idx++) {\n root = root[fields[idx]] = root[fields[idx]] || {};\n }\n\n root[fields[depth]] = value;\n };\n\n return setterCache[field];\n}","/**\n * @hidden\n */\nvar styles = {\n button: 'k-button',\n 'bare': 'k-bare',\n 'flat': 'k-flat',\n 'outline': 'k-outline',\n 'primary': 'k-primary',\n 'state-active': 'k-state-active',\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};\n/**\n * @hidden\n */\n\nexport default {\n styles: styles\n};","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport util from './util';\nvar styles = util.styles;\n/**\n * @hidden\n */\n\nfunction iconElement(_a) {\n var imageUrl = _a.imageUrl,\n icon = _a.icon,\n iconClass = _a.iconClass,\n imageAlt = _a.imageAlt;\n\n if (imageUrl) {\n return React.createElement(\"img\", {\n role: \"presentation\",\n className: 'k-image',\n alt: imageAlt,\n src: imageUrl\n });\n } else if (icon) {\n var iconClasses = classNames('k-icon', 'k-i-' + icon);\n return React.createElement(\"span\", {\n role: \"presentation\",\n className: iconClasses\n });\n } else if (iconClass) {\n return React.createElement(\"span\", {\n role: \"presentation\",\n className: iconClass\n });\n }\n\n return null;\n}\n\nvar Button =\n/** @class */\nfunction (_super) {\n __extends(Button, _super);\n\n function Button(props) {\n var _this = _super.call(this, props) || this;\n\n _this._element = null;\n\n _this.handleClick = function (event) {\n _this.toggleIfApplicable();\n\n if (_this.props.onClick) {\n _this.props.onClick.call(undefined, event);\n }\n };\n\n _this.state = {\n active: _this.props.togglable === true && _this.props.selected === true\n };\n return _this;\n }\n\n Object.defineProperty(Button.prototype, \"element\", {\n /**\n * Gets the DOM element of the Button component.\n */\n get: function get() {\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 get() {\n return this._activeTemp !== undefined ? this._activeTemp : this.state.active;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n Button.getDerivedStateFromProps = function (props, state) {\n if (props.togglable && props.selected !== undefined && props.selected !== state.active) {\n return {\n active: props.selected\n };\n }\n\n return null;\n };\n /**\n * @hidden\n */\n\n\n Button.prototype.render = function () {\n var _this = this;\n\n var _a;\n\n var _b = this.props,\n children = _b.children,\n look = _b.look,\n primary = _b.primary,\n togglable = _b.togglable,\n icon = _b.icon,\n iconClass = _b.iconClass,\n imageUrl = _b.imageUrl,\n imageAlt = _b.imageAlt,\n className = _b.className,\n onClick = _b.onClick,\n htmlAttributes = __rest(_b, [\"children\", \"look\", \"primary\", \"togglable\", \"icon\", \"iconClass\", \"imageUrl\", \"imageAlt\", \"className\", \"onClick\"]);\n\n var hasIcon = icon !== undefined || iconClass !== undefined || imageUrl !== undefined;\n var hasChildren = children !== undefined;\n var buttonClasses = classNames([styles.button], (_a = {}, _a[styles[\"\" + look]] = look !== 'default', _a[styles.primary] = primary, _a[styles['state-disabled']] = this.props.disabled, _a[styles['state-active']] = this.state.active, _a[styles['button-icon']] = !hasChildren && hasIcon, _a[styles['button-icontext']] = hasChildren && hasIcon, _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.active : 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, {\n ref: function ref(button) {\n return _this._element = button;\n }\n }), iconEl, children);\n };\n\n Button.prototype.toggleIfApplicable = function () {\n var _this = this;\n\n if (this.props.togglable && this.props.selected === undefined) {\n var active = !this.state.active;\n this._activeTemp = active;\n this.setState({\n active: active\n }, function () {\n return _this._activeTemp = undefined;\n });\n }\n };\n /**\n * @hidden\n */\n\n\n Button.propTypes = {\n children: PropTypes.node,\n look: PropTypes.oneOf(['default', 'bare', 'flat', 'outline']),\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\n Button.defaultProps = {\n look: 'default',\n primary: false,\n togglable: false\n };\n return Button;\n}(React.Component);\n\nexport default Button;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport util from './util';\nvar styles = util.styles;\n\nvar ButtonGroup =\n/** @class */\nfunction (_super) {\n __extends(ButtonGroup, _super);\n\n function ButtonGroup() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this._element = null;\n return _this;\n }\n /**\n * @hidden\n */\n\n\n ButtonGroup.prototype.render = function () {\n var _this = this;\n\n var _a;\n\n var buttons = this.mapButtons(this.props.children);\n var groupClasses = classNames([styles['button-group']], (_a = {}, _a[styles['state-disabled']] = this.props.disabled, _a[styles['button-group-stretched']] = !!this.props.width, _a), this.props.className);\n var groupProps = {\n className: groupClasses,\n style: {\n 'width': \"\" + this.props.width\n },\n dir: this.props.dir,\n // Accessibility properties\n role: 'group',\n 'aria-disabled': this.props.disabled,\n 'aria-multiselectable': true\n };\n return React.createElement(\"div\", __assign({\n ref: function ref(div) {\n _this._element = div;\n }\n }, groupProps, {\n className: groupClasses\n }), buttons);\n };\n\n ButtonGroup.prototype.mapButtons = function (children) {\n var _this = this;\n\n var count = React.Children.count(children);\n var rtl = this.props.dir !== undefined ? this.props.dir === 'rtl' : this._element && getComputedStyle(this._element).direction === 'rtl' || false;\n return React.Children.map(children, function (child, index) {\n if (React.isValidElement(child)) {\n return _this.renderButton(child, index, index === count - 1, rtl);\n }\n\n return child;\n });\n };\n\n ButtonGroup.prototype.renderButton = function (child, index, isLast, isRtl) {\n var _a;\n\n var className = classNames(child.props.className, (_a = {}, _a[styles['group-start']] = isRtl ? isLast : index === 0, _a[styles['group-end']] = isRtl ? index === 0 : isLast, _a));\n\n var style = __assign({}, this.props.width ? {\n width: this.props.width\n } : {}, child.props.style || {});\n\n var disabled = this.props.disabled || child.props.disabled;\n\n var buttonProps = __assign({}, child.props, className ? {\n className: className\n } : {}, Object.keys(style).length ? {\n style: style\n } : {}, disabled !== undefined ? {\n disabled: disabled\n } : {});\n\n return React.Children.count(child.props.children) > 0 ? React.cloneElement(child, buttonProps, child.props.children) : React.cloneElement(child, buttonProps);\n };\n /**\n * @hidden\n */\n\n\n ButtonGroup.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.element), PropTypes.element]),\n className: PropTypes.string,\n disabled: PropTypes.bool,\n width: PropTypes.string,\n dir: PropTypes.string\n };\n return ButtonGroup;\n}(React.Component);\n\nexport default ButtonGroup;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\n\nvar ButtonItem =\n/** @class */\nfunction (_super) {\n __extends(ButtonItem, _super);\n\n function ButtonItem() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.onClick = function (event) {\n return _this.props.onClick(event, _this.props.index);\n };\n\n return _this;\n }\n\n ButtonItem.prototype.render = function () {\n var _a = this.props,\n dataItem = _a.dataItem,\n focused = _a.focused,\n id = _a.id,\n onDown = _a.onDown;\n return React.createElement(\"li\", {\n id: id,\n className: classNames('k-item', {\n 'k-state-focused': focused,\n 'k-state-selected': dataItem.selected,\n 'k-state-disabled': dataItem.disabled\n }),\n onClick: this.onClick,\n onMouseDown: onDown,\n onPointerDown: onDown,\n role: \"menuItem\",\n \"aria-disabled\": dataItem.disabled || undefined\n }, this.renderContent());\n };\n\n ButtonItem.prototype.renderContent = function () {\n var _a = this.props,\n dataItem = _a.dataItem,\n textField = _a.textField,\n index = _a.index;\n var Render = this.props.dataItem.render || this.props.itemRender;\n var text = dataItem.text !== undefined ? dataItem.text : textField ? dataItem[textField] : dataItem;\n var iconClass = dataItem.icon ? \"k-icon k-i-\" + dataItem.icon : dataItem.iconClass;\n return Render && React.createElement(Render, {\n item: dataItem,\n itemIndex: index\n }) || [iconClass && React.createElement(\"span\", {\n className: iconClass,\n role: \"presentation\",\n key: \"icon\"\n }), dataItem.imageUrl && React.createElement(\"img\", {\n className: \"k-image\",\n alt: \"\",\n src: dataItem.imageUrl,\n role: \"presentation\",\n key: \"image\"\n }), text];\n };\n\n return ButtonItem;\n}(React.Component);\n\nexport default ButtonItem;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\n\nvar SplitButtonItem =\n/** @class */\nfunction (_super) {\n __extends(SplitButtonItem, _super);\n\n function SplitButtonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n\n\n SplitButtonItem.prototype.render = function () {\n return null;\n };\n /**\n * @hidden\n */\n\n\n SplitButtonItem.propTypes = {\n text: PropTypes.string,\n icon: PropTypes.string,\n iconClass: PropTypes.string,\n imageUrl: PropTypes.string,\n disabled: PropTypes.bool,\n render: PropTypes.any\n };\n return SplitButtonItem;\n}(React.Component);\n\nexport default SplitButtonItem;","import { Keys } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\n\nvar navigate = function navigate(focusedIndex, keyCode, altKey, total) {\n if (altKey) {\n return focusedIndex;\n }\n\n switch (keyCode) {\n case Keys.enter:\n case Keys.space:\n case Keys.esc:\n return -1;\n\n case Keys.up:\n case Keys.left:\n return Math.max(0, focusedIndex - 1);\n\n case Keys.down:\n case Keys.right:\n return Math.min(total - 1, focusedIndex + 1);\n\n default:\n return focusedIndex;\n }\n};\n\nexport default navigate;","/**\n * @hidden\n */\nexport function getAnchorAlign(isDirectionRightToLeft) {\n var align = {\n horizontal: 'left',\n vertical: 'bottom'\n };\n\n if (isDirectionRightToLeft) {\n align.horizontal = 'right';\n }\n\n return align;\n}\n/**\n * @hidden\n */\n\nexport function getPopupAlign(isDirectionRightToLeft) {\n var align = {\n horizontal: 'left',\n vertical: 'top'\n };\n\n if (isDirectionRightToLeft) {\n align.horizontal = 'right';\n }\n\n return align;\n}","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Button } from './../main';\nimport { classNames, guid, Keys } from '@progress/kendo-react-common';\nimport { dispatchEvent } from '@progress/kendo-react-common';\nimport ButtonItem from './ButtonItem';\nimport SplitButtonItem from './SplitButtonItem';\nimport navigation from './utils/navigation';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { getAnchorAlign, getPopupAlign } from './utils/popup';\n/**\n * Represents the [KendoReact SplitButton component]({% slug overview_splitbutton %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return (\n * \n * \n * \n * \n * \n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\n\nvar SplitButton =\n/** @class */\nfunction (_super) {\n __extends(SplitButton, _super);\n\n function SplitButton() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n\n\n _this.state = {\n focused: false,\n focusedIndex: -1,\n opened: false\n };\n _this.wrapper = null;\n _this.mainButton = null;\n _this.guid = guid();\n _this.buttonsData = [];\n\n _this.onKeyDown = function (event) {\n var _a = _this.state,\n opened = _a.opened,\n focusedIndex = _a.focusedIndex;\n\n if (event.altKey) {\n if (!opened && event.keyCode === Keys.down) {\n _this.dispatchPopupEvent(event, true);\n\n _this.setState({\n focusedIndex: 0,\n opened: true\n });\n } else if (opened && event.keyCode === Keys.up) {\n _this.dispatchPopupEvent(event, false);\n\n _this.setState({\n focusedIndex: -1,\n opened: false\n });\n }\n\n return;\n }\n\n var newState = undefined;\n\n if (event.keyCode === Keys.enter || event.keyCode === Keys.space) {\n // Prevent default because otherwise when an item is selected\n // click on the default button gets emitted which opens the popup again.\n event.preventDefault();\n\n _this.dispatchClickEvent(event, focusedIndex);\n\n if (focusedIndex >= 0) {\n newState = {\n focusedIndex: opened ? -1 : 0,\n opened: !opened\n };\n\n _this.dispatchPopupEvent(event, newState.opened);\n }\n } else if (opened && event.keyCode === Keys.esc) {\n newState = {\n focusedIndex: -1,\n opened: false\n };\n\n _this.dispatchPopupEvent(event, newState.opened);\n }\n\n if (opened) {\n var newFocused = navigation(focusedIndex, event.keyCode, event.altKey, _this.buttonsData.length);\n\n if (newFocused !== focusedIndex) {\n newState = newState || {};\n newState.focusedIndex = newFocused;\n }\n\n var arrowKey = event.keyCode === Keys.up || event.keyCode === Keys.down || event.keyCode === Keys.left || event.keyCode === Keys.right;\n\n if (!event.altKey && arrowKey) {\n // Needed to notify the parent listeners that event is handled.\n event.preventDefault();\n }\n }\n\n if (newState) {\n _this.setState(newState);\n }\n };\n\n _this.onFocus = function (event) {\n dispatchEvent(_this.props.onFocus, event, _this, undefined);\n\n _this.setState({\n focused: true,\n focusedIndex: -1\n });\n };\n\n _this.onItemClick = function (event, clickedItemIndex) {\n var opened = _this.state.opened;\n\n if (opened) {\n _this.setState({\n focusedIndex: 0,\n opened: false\n });\n }\n\n _this.dispatchClickEvent(event, clickedItemIndex);\n\n if (opened) {\n _this.dispatchPopupEvent(event, false);\n }\n };\n\n _this.onBlur = function (event) {\n _this.setState({\n focused: false,\n focusedIndex: -1,\n opened: false\n });\n\n dispatchEvent(_this.props.onBlur, event, _this, undefined);\n\n if (_this.state.opened) {\n _this.dispatchPopupEvent(event, false);\n }\n };\n\n _this.onSplitPartClick = function (event) {\n if (_this.buttonsData.length) {\n var opened = _this.state.opened;\n var toOpen = !opened;\n\n _this.dispatchPopupEvent(event, toOpen);\n\n _this.setState({\n focusedIndex: toOpen ? 0 : -1,\n opened: toOpen,\n focused: true\n });\n }\n };\n\n _this.onDownSplitPart = function (event) {\n event.preventDefault();\n\n if (_this.element && document.activeElement !== _this.element) {\n _this.element.focus();\n }\n };\n\n _this.onItemDown = function (event) {\n if (document.activeElement === _this.element) {\n event.preventDefault();\n }\n };\n\n _this.dispatchPopupEvent = function (dispatchedEvent, open) {\n dispatchEvent(open ? _this.props.onOpen : _this.props.onClose, dispatchedEvent, _this, undefined);\n };\n\n return _this;\n }\n /**\n * @hidden\n */\n\n\n SplitButton.prototype.render = function () {\n var _this = this;\n\n this.buttonsData = this.props.items || React.Children.toArray(this.props.children).filter(function (child) {\n return child && child.type === SplitButtonItem;\n }).map(function (child) {\n return child.props;\n });\n var rtl = this.isRtl();\n var dir = rtl ? 'rtl' : undefined;\n var _a = this.props,\n tabIndex = _a.tabIndex,\n disabled = _a.disabled;\n var focusedIndex = this.state.focusedIndex;\n return React.createElement(\"div\", {\n className: classNames('k-widget', 'k-split-button', 'k-button-group', this.props.className, {\n 'k-state-focused': this.state.focused\n }),\n onKeyDown: this.onKeyDown,\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n dir: dir,\n ref: function ref(el) {\n return _this.wrapper = el;\n }\n }, React.createElement(Button, {\n onClick: function onClick(event) {\n return _this.onItemClick(event, -1);\n },\n disabled: disabled || undefined,\n tabIndex: tabIndex,\n accessKey: this.props.accessKey,\n className: this.props.buttonClass,\n icon: this.props.icon,\n iconClass: this.props.iconClass,\n imageUrl: this.props.imageUrl,\n look: this.props.look,\n dir: dir,\n \"aria-disabled\": disabled,\n \"aria-haspopup\": true,\n \"aria-expanded\": this.state.opened,\n \"aria-label\": this.props.text + \" splitbutton\",\n ref: function ref(el) {\n return _this.mainButton = el && el.element;\n },\n \"aria-owns\": this.guid,\n \"aria-activedescendant\": focusedIndex >= 0 ? this.guid + \"-\" + focusedIndex : undefined\n }, this.props.text), React.createElement(Button, {\n icon: \"arrow-s\",\n disabled: disabled || undefined,\n tabIndex: -1,\n look: this.props.look,\n onClick: this.onSplitPartClick,\n onMouseDown: this.onDownSplitPart,\n onPointerDown: this.onDownSplitPart,\n dir: dir,\n \"aria-label\": \"menu toggling button\"\n }), this.renderPopup(rtl));\n };\n /**\n * @hidden\n */\n\n\n SplitButton.prototype.componentDidMount = function () {\n if (this.props.dir === undefined && this.isRtl()) {\n this.forceUpdate();\n }\n };\n\n Object.defineProperty(SplitButton.prototype, \"element\", {\n /**\n * The DOM element of main button.\n */\n get: function get() {\n return this.mainButton;\n },\n enumerable: true,\n configurable: true\n });\n\n SplitButton.prototype.dispatchClickEvent = function (dispatchedEvent, clickedItemIndex) {\n if (!this.isItemDisabled(clickedItemIndex)) {\n if (clickedItemIndex === -1) {\n dispatchEvent(this.props.onButtonClick, dispatchedEvent, this, undefined);\n } else {\n dispatchEvent(this.props.onItemClick, dispatchedEvent, this, {\n item: this.buttonsData[clickedItemIndex],\n itemIndex: clickedItemIndex\n });\n }\n }\n };\n\n SplitButton.prototype.renderPopup = function (rtl) {\n var _a = this.props.popupSettings,\n popupSettings = _a === void 0 ? {} : _a;\n return React.createElement(Popup, {\n anchor: this.wrapper || undefined,\n show: this.state.opened,\n animate: popupSettings.animate,\n popupClass: classNames('k-list-container k-reset k-group', popupSettings.popupClass),\n anchorAlign: popupSettings.anchorAlign || getAnchorAlign(rtl),\n popupAlign: popupSettings.popupAlign || getPopupAlign(rtl),\n style: rtl ? {\n direction: 'rtl'\n } : undefined\n }, React.createElement(\"ul\", {\n className: \"k-list k-reset\",\n role: \"menu\",\n id: this.guid\n }, this.renderChildItems()));\n };\n\n SplitButton.prototype.renderChildItems = function () {\n var _this = this;\n\n var _a = this.props,\n itemRender = _a.itemRender,\n textField = _a.textField;\n return this.buttonsData.length > 0 ? this.buttonsData.map(function (item, index) {\n return React.createElement(ButtonItem, {\n dataItem: item,\n textField: textField,\n focused: _this.state.focusedIndex === index,\n onClick: _this.onItemClick,\n onDown: _this.onItemDown,\n itemRender: itemRender,\n key: index,\n index: index,\n id: _this.guid + \"-\" + index\n });\n }) : null;\n };\n\n SplitButton.prototype.isItemDisabled = function (index) {\n return this.buttonsData[index] ? this.buttonsData[index].disabled : this.props.disabled;\n };\n\n SplitButton.prototype.isRtl = function () {\n return this.props.dir !== undefined ? this.props.dir === 'rtl' : !!this.wrapper && getComputedStyle(this.wrapper).direction === 'rtl';\n };\n /**\n * @hidden\n */\n\n\n SplitButton.propTypes = {\n accessKey: PropTypes.string,\n onButtonClick: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onItemClick: PropTypes.func,\n onOpen: PropTypes.func,\n onClose: PropTypes.func,\n text: PropTypes.string,\n items: PropTypes.arrayOf(PropTypes.any),\n textField: PropTypes.string,\n tabIndex: PropTypes.number,\n disabled: PropTypes.bool,\n icon: PropTypes.string,\n iconClass: PropTypes.string,\n imageUrl: PropTypes.string,\n popupSettings: PropTypes.object,\n itemRender: PropTypes.any,\n look: PropTypes.string,\n className: PropTypes.string,\n buttonClass: PropTypes.string,\n dir: PropTypes.string\n };\n return SplitButton;\n}(React.Component);\n\nexport default SplitButton;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\n\nvar DropDownButtonItem =\n/** @class */\nfunction (_super) {\n __extends(DropDownButtonItem, _super);\n\n function DropDownButtonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n\n\n DropDownButtonItem.prototype.render = function () {\n return null;\n };\n /**\n * @hidden\n */\n\n\n DropDownButtonItem.propTypes = {\n text: PropTypes.string,\n icon: PropTypes.string,\n iconClass: PropTypes.string,\n imageUrl: PropTypes.string,\n selected: PropTypes.bool,\n disabled: PropTypes.bool,\n render: PropTypes.any\n };\n return DropDownButtonItem;\n}(React.Component);\n\nexport default DropDownButtonItem;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Button } from './../main';\nimport { classNames, guid, Keys } from '@progress/kendo-react-common';\nimport { dispatchEvent } from '@progress/kendo-react-common';\nimport navigation from './utils/navigation';\nimport DropDownButtonItem from './DropDownButtonItem';\nimport ButtonItem from './ButtonItem';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { getAnchorAlign, getPopupAlign } from './utils/popup';\n/**\n * Represents the [KendoReact DropDownButton component]({% slug overview_dropdownbutton %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return (\n * \n * \n * \n * \n * \n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\n\nvar DropDownButton =\n/** @class */\nfunction (_super) {\n __extends(DropDownButton, _super);\n\n function DropDownButton() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n\n\n _this.state = {\n opened: false,\n focused: false,\n focusedIndex: -1\n };\n _this.wrapper = null;\n _this.mainButton = null;\n _this.guid = guid();\n _this.buttonsData = [];\n\n _this.onKeyDown = function (event) {\n var _a = _this.state,\n opened = _a.opened,\n focusedIndex = _a.focusedIndex;\n\n if (event.altKey) {\n if (!opened && event.keyCode === Keys.down) {\n _this.dispatchPopupEvent(event, true);\n\n _this.setState({\n focusedIndex: 0,\n opened: true\n });\n } else if (opened && event.keyCode === Keys.up) {\n _this.dispatchPopupEvent(event, false);\n\n _this.setState({\n focusedIndex: -1,\n opened: false\n });\n }\n\n return;\n }\n\n var newState = undefined;\n\n if (event.keyCode === Keys.enter || event.keyCode === Keys.space) {\n if (focusedIndex >= 0) {\n _this.dispatchClickEvent(event, focusedIndex);\n } // Prevent default because otherwise when an item is selected\n // click on the default button gets emitted which opens the popup again.\n\n\n event.preventDefault();\n newState = {\n focusedIndex: opened ? -1 : 0,\n opened: !opened\n };\n\n _this.dispatchPopupEvent(event, newState.opened);\n } else if (opened && event.keyCode === Keys.esc) {\n newState = {\n focusedIndex: -1,\n opened: false\n };\n\n _this.dispatchPopupEvent(event, newState.opened);\n }\n\n if (opened) {\n var newFocused = navigation(focusedIndex, event.keyCode, event.altKey, _this.buttonsData.length);\n\n if (newFocused !== focusedIndex) {\n newState = newState || {};\n newState.focusedIndex = newFocused;\n }\n\n var arrowKey = event.keyCode === Keys.up || event.keyCode === Keys.down || event.keyCode === Keys.left || event.keyCode === Keys.right;\n\n if (!event.altKey && arrowKey) {\n // Needed to notify the parent listeners that event is handled.\n event.preventDefault();\n }\n }\n\n if (newState) {\n _this.setState(newState);\n }\n };\n\n _this.onFocus = function (event) {\n _this.setState({\n focused: true,\n focusedIndex: _this.state.opened ? 0 : -1\n });\n\n dispatchEvent(_this.props.onFocus, event, _this, undefined);\n };\n\n _this.onBlur = function (event) {\n _this.setState({\n focused: false,\n opened: false,\n focusedIndex: -1\n });\n\n dispatchEvent(_this.props.onBlur, event, _this, undefined);\n var fireCloseEvent = _this.state.opened;\n\n if (fireCloseEvent) {\n _this.dispatchPopupEvent(event, false);\n }\n };\n\n _this.onItemClick = function (event, clickedItemIndex) {\n _this.setState({\n focusedIndex: -1,\n opened: false\n });\n\n _this.dispatchClickEvent(event, clickedItemIndex);\n\n _this.dispatchPopupEvent(event, false);\n };\n\n _this.onItemDown = function (event) {\n if (document.activeElement === _this.element) {\n event.preventDefault();\n }\n };\n\n _this.mouseDown = function (event) {\n event.preventDefault();\n };\n\n _this.onClickMainButton = function (event) {\n if (!_this.buttonsData.length) {\n return;\n }\n\n var opened = _this.state.opened;\n var toOpen = !opened;\n\n _this.setState({\n opened: toOpen,\n focused: true,\n focusedIndex: toOpen ? 0 : -1\n });\n\n _this.dispatchPopupEvent(event, toOpen);\n };\n\n _this.dispatchPopupEvent = function (dispatchedEvent, open) {\n dispatchEvent(open ? _this.props.onOpen : _this.props.onClose, dispatchedEvent, _this, undefined);\n };\n\n return _this;\n }\n /**\n * @hidden\n */\n\n\n DropDownButton.prototype.render = function () {\n var _this = this;\n\n var rtl = this.isRtl();\n var dir = rtl ? 'rtl' : undefined;\n var _a = this.props,\n tabIndex = _a.tabIndex,\n disabled = _a.disabled;\n var focusedIndex = this.state.focusedIndex;\n this.buttonsData = this.props.items || React.Children.toArray(this.props.children).filter(function (child) {\n return child && child.type === DropDownButtonItem;\n }).map(function (child) {\n return child.props;\n });\n return React.createElement(\"div\", {\n className: classNames('k-widget', 'k-dropdown-button', this.props.className, {\n 'k-state-focused': this.state.focused\n }),\n onKeyDown: this.onKeyDown,\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n dir: dir,\n ref: function ref(el) {\n return _this.wrapper = el;\n }\n }, React.createElement(Button, {\n onClick: this.onClickMainButton,\n onMouseDown: this.mouseDown,\n disabled: disabled || undefined,\n tabIndex: tabIndex,\n accessKey: this.props.accessKey,\n icon: this.props.icon,\n iconClass: this.props.iconClass,\n className: this.props.buttonClass,\n imageUrl: this.props.imageUrl,\n look: this.props.look,\n primary: this.props.primary,\n dir: dir,\n \"aria-disabled\": disabled,\n \"aria-haspopup\": true,\n \"aria-expanded\": this.state.opened,\n \"aria-label\": this.props.text + \" dropdownbutton\",\n ref: function ref(btn) {\n return _this.mainButton = btn && btn.element;\n },\n \"aria-owns\": this.guid,\n \"aria-activedescendant\": focusedIndex >= 0 ? this.guid + \"-\" + focusedIndex : undefined\n }, this.props.text), this.renderPopup(rtl));\n };\n /**\n * @hidden\n */\n\n\n DropDownButton.prototype.componentDidMount = function () {\n if (this.props.dir === undefined && this.isRtl()) {\n this.forceUpdate();\n }\n };\n /**\n * @hidden\n */\n\n\n DropDownButton.prototype.componentDidUpdate = function () {\n if (this.state.focused && this.element) {\n // firefox in mac does not focus on mouse-down, next line fixes this\n this.element.focus();\n }\n };\n\n Object.defineProperty(DropDownButton.prototype, \"element\", {\n /**\n * The DOM element of main button.\n */\n get: function get() {\n return this.mainButton;\n },\n enumerable: true,\n configurable: true\n });\n\n DropDownButton.prototype.dispatchClickEvent = function (dispatchedEvent, index) {\n if (!this.isItemDisabled(index)) {\n dispatchEvent(this.props.onItemClick, dispatchedEvent, this, {\n item: this.buttonsData[index],\n itemIndex: index\n });\n }\n };\n\n DropDownButton.prototype.renderPopup = function (rtl) {\n var _a = this.props.popupSettings,\n popupSettings = _a === void 0 ? {} : _a;\n return React.createElement(Popup, {\n anchor: this.wrapper || undefined,\n show: this.state.opened,\n animate: popupSettings.animate,\n popupClass: classNames('k-list-container k-reset k-group', popupSettings.popupClass),\n anchorAlign: popupSettings.anchorAlign || getAnchorAlign(rtl),\n popupAlign: popupSettings.popupAlign || getPopupAlign(rtl),\n style: rtl ? {\n direction: 'rtl'\n } : undefined\n }, React.createElement(\"ul\", {\n className: \"k-list k-reset\",\n role: \"menu\",\n id: this.guid\n }, this.renderChildItems()));\n };\n\n DropDownButton.prototype.renderChildItems = function () {\n var _this = this;\n\n var _a = this.props,\n itemRender = _a.itemRender,\n textField = _a.textField;\n return this.buttonsData.length > 0 ? this.buttonsData.map(function (item, index) {\n return React.createElement(ButtonItem, {\n dataItem: item,\n textField: textField,\n focused: _this.state.focusedIndex === index,\n onClick: _this.onItemClick,\n onDown: _this.onItemDown,\n itemRender: itemRender,\n index: index,\n key: index,\n id: _this.guid + \"-\" + index\n });\n }) : null;\n };\n\n DropDownButton.prototype.isItemDisabled = function (index) {\n return this.buttonsData[index] ? this.buttonsData[index].disabled : this.props.disabled;\n };\n\n DropDownButton.prototype.isRtl = function () {\n return this.props.dir !== undefined ? this.props.dir === 'rtl' : !!this.wrapper && getComputedStyle(this.wrapper).direction === 'rtl';\n };\n /**\n * @hidden\n */\n\n\n DropDownButton.propTypes = {\n accessKey: PropTypes.string,\n primary: PropTypes.bool,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onItemClick: PropTypes.func,\n onOpen: PropTypes.func,\n onClose: PropTypes.func,\n text: PropTypes.string,\n items: PropTypes.arrayOf(PropTypes.any),\n textField: PropTypes.string,\n tabIndex: PropTypes.number,\n disabled: PropTypes.bool,\n icon: PropTypes.string,\n iconClass: PropTypes.string,\n imageUrl: PropTypes.string,\n popupSettings: PropTypes.object,\n itemRender: PropTypes.any,\n look: PropTypes.string,\n className: PropTypes.string,\n buttonClass: PropTypes.string,\n dir: PropTypes.string\n };\n return DropDownButton;\n}(React.Component);\n\nexport default DropDownButton;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\n/**\n * Represents the KendoReact ToolbarItem component.\n * To add a tool to the Toolbar, wrap it inside a ToolbarItem component\n * ([see example]({% slug content_toolbar %})).\n */\n\nvar ToolbarItem =\n/** @class */\nfunction (_super) {\n __extends(ToolbarItem, _super);\n\n function ToolbarItem() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this._element = null;\n return _this;\n }\n\n Object.defineProperty(ToolbarItem.prototype, \"element\", {\n /**\n * Returns the HTML element of the ToolbarItem component.\n */\n get: function get() {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n ToolbarItem.prototype.render = function () {\n var _this = this;\n\n return React.createElement(\"span\", {\n className: this.props.className,\n style: {\n display: 'inline-block'\n },\n ref: function ref(e) {\n return _this._element = e;\n }\n }, this.props.children);\n };\n /**\n * @hidden\n */\n\n\n ToolbarItem.propTypes = {\n className: PropTypes.string\n };\n return ToolbarItem;\n}(React.PureComponent);\n\nexport default ToolbarItem;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport { findDOMNode } from 'react-dom';\n/**\n * @hidden\n */\n\nvar ToolbarButton =\n/** @class */\nfunction (_super) {\n __extends(ToolbarButton, _super);\n\n function ToolbarButton(props) {\n var _this = _super.call(this, props) || this;\n\n _this._element = null;\n _this.state = {\n tabIndex: props.tabIndex\n };\n return _this;\n }\n\n Object.defineProperty(ToolbarButton.prototype, \"button\", {\n get: function get() {\n var element = findDOMNode(this);\n\n if (element && element.nodeName !== 'BUTTON') {\n return element.querySelector('button');\n }\n\n return element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ToolbarButton.prototype, \"tabIndex\", {\n get: function get() {\n return this.state.tabIndex;\n },\n set: function set(value) {\n if (this.state.tabIndex !== value) {\n this.setState({\n tabIndex: value\n });\n }\n },\n enumerable: true,\n configurable: true\n });\n\n ToolbarButton.prototype.focus = function () {\n var button = this.element;\n\n if (button) {\n button.focus();\n }\n };\n\n Object.defineProperty(ToolbarButton.prototype, \"element\", {\n get: function get() {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n\n ToolbarButton.prototype.componentDidMount = function () {\n this._element = this.button;\n this.adjustTabIndex();\n };\n\n ToolbarButton.prototype.componentWillUnmount = function () {\n this._element = null;\n };\n\n ToolbarButton.prototype.componentDidUpdate = function () {\n this._element = this.button;\n this.adjustTabIndex();\n };\n\n ToolbarButton.prototype.render = function () {\n var button = this.props.button;\n return React.cloneElement(button, __assign({}, button.props, {\n tabIndex: this.state.tabIndex\n }), button.props.children);\n };\n\n ToolbarButton.prototype.adjustTabIndex = function () {\n var button = this.element;\n var tabIndex = this.state.tabIndex;\n\n if (button && button.tabIndex !== tabIndex) {\n button.tabIndex = tabIndex;\n }\n };\n\n return ToolbarButton;\n}(React.Component);\n\nexport default ToolbarButton;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport ToolbarItem from './tools/ToolbarItem';\nimport ToolbarButton from './tools/ToolbarButton';\nimport ButtonGroup from '../ButtonGroup';\nimport { classNames, Keys } from '@progress/kendo-react-common';\n/**\n * Represents the [KendoReact Toolbar component]({% slug overview_toolbar %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return (\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\n\nvar Toolbar =\n/** @class */\nfunction (_super) {\n __extends(Toolbar, _super);\n\n function Toolbar() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this._element = null;\n _this.buttons = [];\n _this.focusedIndex = 0;\n _this.counter = 0;\n _this.offsetHeight = 0;\n _this.offsetWidth = 0;\n\n _this.mapToolbarChild = function (toolbarItem) {\n if (toolbarItem && toolbarItem.type === ToolbarItem) {\n return React.cloneElement(toolbarItem, toolbarItem.props, React.Children.map(toolbarItem.props.children, _this.mapItemChildren));\n }\n\n return toolbarItem;\n };\n\n _this.mapItemChildren = function (tool) {\n if (tool.type === ButtonGroup) {\n return React.cloneElement(tool, tool.props, React.Children.map(tool.props.children, _this.mapButton));\n }\n\n return _this.mapButton(tool);\n };\n\n _this.mapButton = function (button) {\n var index = _this.counter;\n _this.counter++;\n return React.createElement(ToolbarButton, {\n ref: function ref(b) {\n return _this.buttonRef(b, index);\n },\n tabIndex: _this.focusedIndex === index ? _this.props.tabIndex || Toolbar.defaultProps.tabIndex : -1,\n button: button\n });\n };\n\n _this.buttonRef = function (button, index) {\n _this.buttons[index] = button;\n\n if (!button && !_this.buttons.find(function (b) {\n return b !== null;\n })) {\n _this.buttons.length = 0;\n }\n };\n\n _this.onKeyDown = function (event) {\n var target = event.target;\n var _a = _this,\n focusedIndex = _a.focusedIndex,\n buttons = _a.buttons;\n var arrowKey = event.keyCode === Keys.left || event.keyCode === Keys.right;\n\n if (!arrowKey || event.defaultPrevented || buttons.findIndex(function (b) {\n return b !== null && b.element === target;\n }) === -1) {\n return;\n }\n\n if (event.keyCode === Keys.left) {\n _this.focusButton(focusedIndex, focusedIndex - 1);\n } else {\n _this.focusButton(focusedIndex, focusedIndex + 1);\n }\n };\n\n _this.onWindowResize = function (event) {\n var element = _this.element;\n\n if (!element) {\n return;\n }\n\n var offsetWidth = element.offsetWidth;\n var offsetHeight = element.offsetHeight;\n\n if (_this.offsetWidth !== offsetWidth || _this.offsetHeight !== offsetHeight) {\n _this.offsetWidth = offsetWidth;\n _this.offsetHeight = offsetHeight;\n var newSizes = {\n offsetWidth: _this.offsetWidth,\n offsetHeight: _this.offsetHeight\n };\n\n if (_this.props.onResize) {\n _this.props.onResize.call(undefined, __assign({\n target: _this\n }, newSizes, {\n nativeEvent: event\n }));\n }\n }\n };\n\n return _this;\n }\n\n Object.defineProperty(Toolbar.prototype, \"element\", {\n /**\n * Returns the HTML element of the Toolbar component.\n */\n get: function get() {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n Toolbar.prototype.componentDidMount = function () {\n window.addEventListener('resize', this.onWindowResize);\n var element = this.element;\n\n if (element) {\n this.offsetWidth = element.offsetWidth;\n this.offsetHeight = element.offsetHeight;\n }\n };\n /**\n * @hidden\n */\n\n\n Toolbar.prototype.componentDidUpdate = function () {\n var _this = this;\n\n var element = this.element;\n\n if (!element) {\n return;\n }\n\n var focused = element.querySelector('button:focus');\n var prevFocusedIndex = this.focusedIndex;\n\n if (!focused) {\n this.focusedIndex = 0;\n } else {\n var focusedIndex = this.buttons.findIndex(function (b) {\n return b !== null && b.element === focused;\n });\n\n if (focusedIndex !== -1 && focusedIndex !== this.focusedIndex) {\n this.focusedIndex = focusedIndex;\n }\n }\n\n if (prevFocusedIndex !== this.focusedIndex) {\n var _a = this.props.tabIndex,\n tabIndex_1 = _a === void 0 ? Toolbar.defaultProps.tabIndex : _a;\n this.buttons.forEach(function (button, index) {\n if (button) {\n button.tabIndex = index === _this.focusedIndex && button.tabIndex === -1 ? tabIndex_1 : -1;\n }\n });\n }\n };\n /**\n * @hidden\n */\n\n\n Toolbar.prototype.componentWillUnmount = function () {\n window.removeEventListener('resize', this.onWindowResize);\n };\n /**\n * @hidden\n */\n\n\n Toolbar.prototype.render = function () {\n var _this = this;\n\n this.counter = 0;\n return React.createElement(\"div\", {\n className: classNames('k-widget k-toolbar', this.props.className),\n style: this.props.style,\n role: \"toolbar\",\n dir: this.props.dir,\n ref: function ref(element) {\n return _this._element = element;\n },\n onKeyDown: this.onKeyDown\n }, React.Children.map(this.props.children, this.mapToolbarChild));\n };\n\n Toolbar.prototype.focusButton = function (prevIndex, index) {\n var toolbarButton = this.buttons[index];\n\n if (toolbarButton) {\n var newFocused = toolbarButton.element;\n var currentFocused = this.element && this.element.querySelector('button:focus');\n var _a = this.props.tabIndex,\n tabIndex = _a === void 0 ? Toolbar.defaultProps.tabIndex : _a;\n this.focusedIndex = index;\n\n if (currentFocused !== newFocused) {\n toolbarButton.tabIndex = tabIndex;\n toolbarButton.focus();\n var prevButton = this.buttons[prevIndex];\n\n if (prevButton) {\n prevButton.tabIndex = -1;\n }\n }\n }\n };\n /**\n * @hidden\n */\n\n\n Toolbar.propTypes = {\n tabIndex: PropTypes.number,\n dir: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n onResize: PropTypes.func\n };\n /**\n * @hidden\n */\n\n Toolbar.defaultProps = {\n tabIndex: 0\n };\n return Toolbar;\n}(React.Component);\n\nexport default Toolbar;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport ToolbarItem from './ToolbarItem';\n/**\n * Represents the KendoReact Toolbar Separator component.\n */\n\nvar ToolbarSeparator =\n/** @class */\nfunction (_super) {\n __extends(ToolbarSeparator, _super);\n\n function ToolbarSeparator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n\n\n ToolbarSeparator.prototype.render = function () {\n return React.createElement(ToolbarItem, {\n className: \"k-separator\"\n });\n };\n\n return ToolbarSeparator;\n}(React.PureComponent);\n\nexport default ToolbarSeparator;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, date, time, dateTimePickerCancel as cancel, dateTimePickerSet as set } from '../messages';\nimport { Button, ButtonGroup } from '@progress/kendo-react-buttons';\nimport { Calendar } from '../calendar/components/Calendar';\nimport { TimePart } from '../timepicker/TimePart';\nimport { setTime, getToday, MIN_TIME, MAX_TIME } from '../utils';\nimport { isEqualDate } from '@progress/kendo-date-math';\nimport { Keys, classNames } from '@progress/kendo-react-common';\nimport { MIDNIGHT_DATE } from '../defaults';\nimport { getNow } from '../timepicker/utils';\n/**\n * @hidden\n */\n\nvar DateTimeSelector =\n/** @class */\nfunction (_super) {\n __extends(DateTimeSelector, _super);\n\n function DateTimeSelector(props) {\n var _this = _super.call(this, props) || this;\n\n _this.focus = function (args) {\n // Async to avoid stealing the focus from the DateInput on close\n Promise.resolve().then(function () {\n if (_this.state.tab === 'time' && _this._timePart) {\n _this._timePart.focus(args);\n }\n\n if (_this.state.tab === 'date' && _this._calendar && _this._calendar.element) {\n _this._calendar.element.focus(args);\n }\n });\n };\n\n _this.move = function (direction) {\n if (direction === 'right' && _this.state.tab === 'time') {\n return;\n }\n\n if (direction === 'left' && _this.state.tab === 'date') {\n return;\n }\n\n var nextPart = direction === 'left' ? 'date' : 'time';\n _this.shouldFocusPart = true;\n\n _this.setState({\n tab: nextPart\n });\n };\n\n _this.handleReject = function () {\n _this.setState({\n dateValue: _this.props.value,\n timeValue: _this.props.value || MIDNIGHT_DATE\n });\n };\n\n _this.handleAccept = function (event, timeOverride) {\n if (!_this.state.dateValue || !_this.state.timeValue || !_this.hasDateValue) {\n return;\n }\n\n var value = _this.mergeDate(_this.state.dateValue, timeOverride || _this.state.timeValue);\n\n _this.props.onChange.call(undefined, {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: value,\n target: _this\n });\n };\n\n _this.handleNowClick = function (event) {\n _this.setState({\n timeValue: getNow()\n });\n\n _this.handleAccept(event, getNow());\n };\n\n _this.handleCalendarValueChange = function (event) {\n event.syntheticEvent.stopPropagation();\n\n _this.setState({\n dateValue: event.value,\n tab: 'time'\n });\n\n _this.shouldFocusPart = true;\n };\n\n _this.handleTimeListContainerChange = function (candidate) {\n _this.setState({\n timeValue: candidate\n });\n };\n\n _this.handleDateClick = function (event) {\n event.stopPropagation();\n\n _this.move('left');\n };\n\n _this.handleTimeClick = function (event) {\n event.stopPropagation();\n\n _this.move('right');\n };\n\n _this.handleKeyDown = function (event) {\n var keyCode = event.keyCode,\n altKey = event.altKey;\n\n switch (keyCode) {\n case Keys.enter:\n if (!_this.hasActiveButton() && _this.hasDateValue) {\n _this.handleAccept(event);\n }\n\n return;\n\n case Keys.left:\n if (!altKey) {\n return;\n }\n\n _this.move('left');\n\n return;\n\n case Keys.right:\n if (!altKey) {\n return;\n }\n\n _this.move('right');\n\n return;\n\n default:\n return;\n }\n };\n\n _this.handleTimePartMount = function (value) {\n _this.setState({\n timeValue: value\n });\n };\n\n _this.state = {\n tab: 'date',\n dateValue: _this.props.value,\n timeValue: _this.props.value || MIDNIGHT_DATE\n };\n return _this;\n }\n\n Object.defineProperty(DateTimeSelector.prototype, \"calendar\", {\n get: function get() {\n return this._calendar;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateTimeSelector.prototype, \"timePart\", {\n get: function get() {\n return this._timePart;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateTimeSelector.prototype, \"hasDateValue\", {\n get: function get() {\n return this.state.dateValue !== null;\n },\n enumerable: true,\n configurable: true\n });\n\n DateTimeSelector.prototype.componentDidUpdate = function () {\n if (this.shouldFocusPart) {\n this.focus({\n preventScroll: true\n });\n }\n\n this.shouldFocusPart = false;\n };\n\n DateTimeSelector.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n disabled = _a.disabled,\n cancelButton = _a.cancelButton,\n min = _a.min,\n max = _a.max,\n weekNumber = _a.weekNumber,\n focusedDate = _a.focusedDate,\n format = _a.format;\n var rootClassName = classNames({\n 'k-date-tab': this.state.tab === 'date',\n 'k-time-tab': this.state.tab === 'time',\n 'k-state-disabled': disabled\n }, 'k-datetime-wrap');\n var setButtonClassName = classNames({\n 'k-state-disabled': !this.hasDateValue\n }, 'k-time-accept k-button k-primary');\n var localizationService = provideLocalizationService(this);\n var dateMessage = localizationService.toLanguageString(date, messages[date]);\n var timeMessage = localizationService.toLanguageString(time, messages[time]);\n var cancelMessage = localizationService.toLanguageString(cancel, messages[cancel]);\n var setMessage = localizationService.toLanguageString(set, messages[set]);\n return React.createElement(\"div\", {\n onKeyDown: this.handleKeyDown,\n className: rootClassName,\n tabIndex: -1\n }, React.createElement(\"div\", {\n className: \"k-datetime-buttongroup\"\n }, React.createElement(ButtonGroup, {\n width: \"100%\"\n }, React.createElement(Button, {\n selected: this.state.tab === 'date',\n togglable: true,\n onClick: this.handleDateClick\n }, dateMessage), React.createElement(Button, {\n selected: this.state.tab === 'time',\n togglable: true,\n onClick: this.handleTimeClick\n }, timeMessage))), React.createElement(\"div\", {\n className: \"k-datetime-selector\"\n }, React.createElement(\"div\", {\n className: \"k-datetime-calendar-wrap\"\n }, React.createElement(Calendar, {\n key: 0,\n disabled: disabled || this.state.tab !== 'date',\n ref: function ref(calendar) {\n _this._calendar = calendar;\n },\n value: this.state.dateValue,\n min: min,\n max: max,\n weekNumber: weekNumber,\n focusedDate: focusedDate,\n onChange: this.handleCalendarValueChange,\n navigation: false\n })), React.createElement(\"div\", {\n className: \"k-datetime-time-wrap\"\n }, React.createElement(TimePart, {\n key: 1,\n onNowClick: this.handleNowClick,\n disabled: disabled || this.state.tab !== 'time',\n ref: function ref(timePart) {\n _this._timePart = timePart;\n },\n min: this.minTime || MIN_TIME,\n max: this.maxTime || MAX_TIME,\n value: this.state.timeValue,\n format: format,\n onChange: this.handleTimeListContainerChange,\n onMount: this.handleTimePartMount\n }))), React.createElement(\"div\", {\n className: \"k-datetime-footer k-action-buttons\"\n }, cancelButton && React.createElement(\"button\", __assign({\n ref: function ref(btn) {\n _this._cancelButton = btn;\n },\n className: \"k-button k-time-cancel\",\n onClick: this.handleReject,\n title: cancelMessage\n }, {\n 'aria-label': cancelMessage\n }), cancelMessage), React.createElement(\"button\", __assign({\n ref: function ref(btn) {\n _this._acceptButton = btn;\n },\n className: setButtonClassName,\n onClick: this.handleAccept,\n title: setMessage\n }, {\n 'aria-label': setMessage\n }), setMessage)));\n };\n\n Object.defineProperty(DateTimeSelector.prototype, \"minTime\", {\n get: function get() {\n return this.props.minTime !== undefined ? this.props.minTime : this.normalizeRange(this.props.min, this.state.dateValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateTimeSelector.prototype, \"maxTime\", {\n get: function get() {\n return this.props.maxTime !== undefined ? this.props.maxTime : this.normalizeRange(this.props.max, this.state.dateValue);\n },\n enumerable: true,\n configurable: true\n });\n\n DateTimeSelector.prototype.normalizeRange = function (candidate, value) {\n return isEqualDate(candidate, value || getToday()) ? candidate : null;\n };\n\n DateTimeSelector.prototype.hasActiveButton = function () {\n if (!this._acceptButton) {\n return false;\n }\n\n return document.activeElement === this._acceptButton || document.activeElement === this._cancelButton;\n };\n\n DateTimeSelector.prototype.mergeTime = function (current, candidate) {\n return current && candidate ? setTime(candidate, current) : candidate;\n };\n\n DateTimeSelector.prototype.mergeDate = function (candidate, value) {\n return candidate ? setTime(candidate || getToday(), value) : value;\n };\n\n return DateTimeSelector;\n}(React.Component);\n\nexport { DateTimeSelector };\nregisterForLocalization(DateTimeSelector);","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { classNames, guid, Keys } from '@progress/kendo-react-common';\nimport { DateInput } from '../dateinput/DateInput';\nimport { MIN_DATE, MAX_DATE, isInDateRange, MAX_TIME } from '../utils';\nimport { messages, toggleDateTimeSelector } from '../messages';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { DateTimeSelector } from './DateTimeSelector';\nimport { isInTimeRange } from '../timepicker/utils';\nimport { MIN_TIME } from '../defaults';\n\nvar DateTimePicker =\n/** @class */\nfunction (_super) {\n __extends(DateTimePicker, _super);\n\n function DateTimePicker(props) {\n var _this = _super.call(this, props) || this;\n\n _this._popupId = guid();\n _this._element = null;\n _this._wrapper = null;\n _this._dateInput = null;\n _this._dateTimeSelector = null;\n _this.shouldFocusDateInput = false;\n\n _this.handleValueChange = function (event) {\n _this.setState({\n value: cloneDate(event.value || undefined),\n show: false\n });\n\n _this.valueDuringOnChange = event.value;\n _this.showDuringOnChange = false;\n _this.shouldFocusDateInput = true;\n var onChange = _this.props.onChange;\n\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\n _this.valueDuringOnChange = undefined;\n _this.showDuringOnChange = undefined;\n };\n\n _this.handleFocus = function (event) {\n clearTimeout(_this.nextTickId);\n\n if (_this._wrapper) {\n _this._wrapper.classList.add('k-state-focused');\n }\n\n var onFocus = _this.props.onFocus;\n\n if (onFocus) {\n onFocus.call(undefined, event);\n }\n };\n\n _this.handleBlur = function (event) {\n _this.nextTick(function () {\n if (_this._wrapper) {\n _this._wrapper.classList.remove('k-state-focused');\n }\n\n _this.setShow(false);\n });\n\n var onBlur = _this.props.onBlur;\n\n if (onBlur) {\n onBlur.call(undefined, event);\n }\n };\n\n _this.handleDateIconClick = function () {\n if (_this.props.disabled) {\n return;\n }\n\n _this.shouldFocusDateInput = true;\n\n _this.setShow(!_this.show);\n };\n\n _this.handleIconMouseDown = function (event) {\n event.preventDefault();\n };\n\n _this.handleKeyDown = function (event) {\n var altKey = event.altKey,\n keyCode = event.keyCode;\n\n if (keyCode === Keys.esc) {\n _this.setShow(false);\n\n return;\n }\n\n if (altKey && (keyCode === Keys.up || keyCode === Keys.down)) {\n event.preventDefault();\n event.stopPropagation();\n _this.shouldFocusDateInput = keyCode === Keys.up;\n\n _this.setShow(keyCode === Keys.down);\n }\n };\n\n _this.state = {\n value: _this.props.defaultValue || DateTimePicker.defaultProps.defaultValue,\n show: _this.props.defaultShow || DateTimePicker.defaultProps.defaultShow\n };\n return _this;\n }\n\n Object.defineProperty(DateTimePicker.prototype, \"element\", {\n /**\n * Gets the wrapping element of the DateTimePicker.\n */\n get: function get() {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateTimePicker.prototype, \"dateInput\", {\n /**\n * Gets the DateInput component inside the DateTimePicker component.\n */\n get: function get() {\n return this._dateInput;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateTimePicker.prototype, \"value\", {\n /**\n * Gets the value of the DateTimePicker.\n */\n get: function get() {\n var value = this.valueDuringOnChange !== undefined ? this.valueDuringOnChange : this.props.value !== undefined ? this.props.value : this.state.value;\n return value !== null ? cloneDate(value) : null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateTimePicker.prototype, \"show\", {\n /**\n * Gets the popup state of the DateTimePicker.\n */\n get: function get() {\n return this.showDuringOnChange !== undefined ? this.showDuringOnChange : this.props.show !== undefined ? this.props.show : this.state.show;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateTimePicker.prototype, \"name\", {\n /**\n * Gets the `name` property of the DateTimePicker.\n */\n get: function get() {\n return this.props.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateTimePicker.prototype, \"min\", {\n get: function get() {\n return this.props.min !== undefined ? this.props.min : DateTimePicker.defaultProps.min;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateTimePicker.prototype, \"max\", {\n get: function get() {\n return this.props.max !== undefined ? this.props.max : DateTimePicker.defaultProps.max;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateTimePicker.prototype, \"validity\", {\n /**\n * Represents the validity state into which the DateTimePicker is set.\n */\n get: function get() {\n var inRange = isInDateRange(this.value, this.min, this.max) && isInTimeRange(this.value, this.props.minTime || MIN_TIME, this.props.maxTime || MAX_TIME);\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(DateTimePicker.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function get() {\n return this.props.validityStyles !== undefined ? this.props.validityStyles : DateTimePicker.defaultProps.validityStyles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateTimePicker.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function get() {\n return this.props.required !== undefined ? this.props.required : DateTimePicker.defaultProps.required;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n DateTimePicker.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 if (this._dateInput && this._dateInput.element) {\n this._dateInput.element.setAttribute('aria-haspopup', 'true');\n\n this._dateInput.element.setAttribute('aria-expanded', \"\" + this.show);\n }\n };\n /**\n * @hidden\n */\n\n\n DateTimePicker.prototype.componentDidUpdate = function (prevProps) {\n if (this._dateInput && this._dateInput.element) {\n this._dateInput.element.setAttribute('aria-expanded', \"\" + this.show);\n }\n\n if (this._dateTimeSelector && this.show && !prevProps.show) {\n this._dateTimeSelector.focus({\n preventScroll: true\n });\n }\n\n if (this._dateInput && this._dateInput.element && !this.show && this.shouldFocusDateInput) {\n this._dateInput.element.focus({\n preventScroll: true\n });\n }\n\n this.shouldFocusDateInput = false;\n };\n /**\n * @hidden\n */\n\n\n DateTimePicker.prototype.componentWillUnmount = function () {\n clearTimeout(this.nextTickId);\n };\n /**\n * @hidden\n */\n\n\n DateTimePicker.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n disabled = _a.disabled,\n tabIndex = _a.tabIndex,\n title = _a.title,\n id = _a.id,\n format = _a.format,\n formatPlaceholder = _a.formatPlaceholder,\n min = _a.min,\n max = _a.max,\n weekNumber = _a.weekNumber,\n focusedDate = _a.focusedDate,\n className = _a.className,\n width = _a.width,\n name = _a.name,\n validationMessage = _a.validationMessage,\n required = _a.required,\n validityStyles = _a.validityStyles,\n cancelButton = _a.cancelButton,\n minTime = _a.minTime,\n maxTime = _a.maxTime;\n var isValid = !this.validityStyles || this.validity.valid;\n var rootClassName = classNames('k-widget k-datetimepicker', {\n 'k-state-invalid': !isValid\n }, className);\n var wrapperClassNames = classNames('k-picker-wrap', {\n 'k-state-default': !disabled,\n 'k-state-disabled': disabled\n });\n return React.createElement(\"div\", {\n ref: function ref(div) {\n _this._element = div;\n },\n className: rootClassName,\n onKeyDown: this.handleKeyDown,\n style: {\n width: width\n },\n onFocus: this.handleFocus,\n onBlur: this.handleBlur\n }, React.createElement(\"div\", {\n ref: function ref(span) {\n _this._wrapper = span;\n },\n className: wrapperClassNames\n }, React.createElement(DateInput, {\n ref: function ref(dateInput) {\n _this._dateInput = dateInput;\n },\n id: id,\n format: format,\n formatPlaceholder: formatPlaceholder,\n disabled: disabled,\n tabIndex: !this.show ? tabIndex : -1,\n title: title,\n valid: this.validity.valid,\n validityStyles: validityStyles,\n validationMessage: validationMessage,\n required: required,\n min: min,\n max: max,\n minTime: minTime,\n maxTime: maxTime,\n value: this.value,\n onChange: this.handleValueChange,\n name: name\n }), React.createElement(\"span\", __assign({\n role: \"button\",\n onMouseDown: this.handleIconMouseDown,\n onClick: this.handleDateIconClick,\n title: provideLocalizationService(this).toLanguageString(toggleDateTimeSelector, messages[toggleDateTimeSelector]),\n className: \"k-select\"\n }, {\n 'aria-controls': this._popupId,\n 'aria-label': provideLocalizationService(this).toLanguageString(toggleDateTimeSelector, messages[toggleDateTimeSelector])\n }), React.createElement(\"span\", {\n className: \"k-link k-link-date\"\n }, React.createElement(\"span\", {\n className: \"k-icon k-i-calendar\"\n })))), React.createElement(Popup, {\n show: this.show,\n animate: this._wrapper !== null,\n anchor: this._wrapper || undefined,\n className: \"k-datetime-container k-group k-reset\",\n id: this._popupId,\n anchorAlign: {\n horizontal: 'left',\n vertical: 'bottom'\n },\n popupAlign: {\n horizontal: 'left',\n vertical: 'top'\n }\n }, React.createElement(DateTimeSelector, {\n ref: function ref(dateTimeSelector) {\n _this._dateTimeSelector = dateTimeSelector;\n },\n cancelButton: cancelButton,\n value: this.value,\n onChange: this.handleValueChange,\n disabled: disabled,\n weekNumber: weekNumber,\n min: this.min,\n max: this.max,\n minTime: minTime,\n maxTime: maxTime,\n focusedDate: focusedDate,\n format: format\n })));\n };\n\n DateTimePicker.prototype.setShow = function (show) {\n if (this.show === show) {\n return;\n }\n\n this.setState({\n show: show\n });\n };\n\n DateTimePicker.prototype.nextTick = function (f) {\n // XXX: use 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 = setTimeout(function () {\n return f();\n });\n };\n /**\n * @hidden\n */\n\n\n DateTimePicker.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.string,\n formatPlaceholder: PropTypes.oneOfType([PropTypes.oneOf(['wide', 'narrow', 'short', 'formatPattern']), 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 id: 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 cancelButton: PropTypes.bool\n };\n /**\n * @hidden\n */\n\n DateTimePicker.defaultProps = {\n defaultShow: false,\n defaultValue: null,\n disabled: false,\n format: 'g',\n max: MAX_DATE,\n min: MIN_DATE,\n popupSettings: {},\n tabIndex: 0,\n title: '',\n weekNumber: false,\n required: false,\n validityStyles: true,\n cancelButton: true\n };\n return DateTimePicker;\n}(React.Component);\n\nexport { DateTimePicker };\nregisterForLocalization(DateTimePicker);","import { Calendar } from './calendar/components/Calendar';\nimport { DateInput } from './dateinput/DateInput';\nimport { DatePicker } from './datepicker/DatePicker';\nimport { TimePicker } from './timepicker/TimePicker';\nimport { MultiViewCalendar } from './calendar/components/MultiViewCalendar';\nimport { DateRangePicker } from './daterangepicker/DateRangePicker';\nimport { CalendarCell } from './calendar/components/CalendarCell';\nimport { CalendarWeekCell } from './calendar/components/CalendarWeekCell';\nimport { CalendarHeaderTitle } from './calendar/components/CalendarHeaderTitle';\nimport { CalendarNavigationItem } from './calendar/components/CalendarNavigationItem';\nimport { CalendarViewEnum } from './calendar/models';\nimport { DateTimePicker } from './datetimepicker/DateTimePicker';\nexport { Calendar, CalendarViewEnum, CalendarCell, CalendarWeekCell, CalendarHeaderTitle, CalendarNavigationItem, DateInput, DatePicker, TimePicker, MultiViewCalendar, DateRangePicker, DateTimePicker };","import * as React from 'react';\n/**\n * @hidden\n */\n\nexport var DialogTitleBar = function DialogTitleBar(_a) {\n var children = _a.children,\n onCloseButtonClick = _a.onCloseButtonClick,\n id = _a.id,\n closeIcon = _a.closeIcon;\n return React.createElement(\"div\", {\n className: \"k-window-titlebar k-dialog-titlebar k-header\",\n id: id\n }, React.createElement(\"div\", {\n className: \"k-window-title k-dialog-title\"\n }, children), React.createElement(\"div\", {\n className: \"k-window-actions k-dialog-actions\"\n }, closeIcon && React.createElement(\"a\", {\n href: \"#\",\n role: \"button\",\n \"aria-label\": \"Close\",\n onClick: onCloseButtonClick,\n className: \"k-button k-bare k-button-icon k-window-action k-dialog-action k-dialog-close\"\n }, React.createElement(\"span\", {\n className: \"k-icon k-i-x\"\n }))));\n};","import * as React from 'react';\n/**\n * Returns the action bar of the Dialog.\n * @returns React.ReactElement\n */\n\nexport var DialogActionsBar = function DialogActionsBar(_a) {\n var children = _a.children;\n return React.createElement(\"div\", {\n className: \"k-dialog-buttongroup k-dialog-button-layout-stretched\"\n }, children);\n};","/**\n * @hidden\n */\nexport var classNames = function classNames() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return args.filter(function (arg) {\n return arg !== true && !!arg;\n }).map(function (arg) {\n return Array.isArray(arg) ? classNames.apply(void 0, arg) : typeof arg === 'object' ? Object.keys(arg).map(function (key, idx) {\n return arg[idx] || arg[key] && key || null;\n }).filter(function (el) {\n return el !== null;\n }).join(' ') : arg;\n }).filter(function (arg) {\n return !!arg;\n }).join(' ');\n};","/**\n * @hidden\n */\nvar 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};\nexport { Keys };","/**\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 default 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 * @hidden\n */\nvar canUseDOM = Boolean( // from fbjs\ntypeof window !== 'undefined' && window.document && window.document.createElement);\nexport { canUseDOM };","var proxy = function proxy(a, b) {\n return function (e) {\n return b(a(e));\n };\n};\n\nvar bind = function bind(el, event, callback) {\n return el.addEventListener && el.addEventListener(event, callback);\n};\n\nvar unbind = function unbind(el, event, callback) {\n return el && el.removeEventListener && el.removeEventListener(event, callback);\n};\n\nvar noop = function noop() {\n /* empty */\n};\n\nvar preventDefault = function preventDefault(e) {\n return e.preventDefault();\n};\n\nvar touchRegExp = /touch/; // 300ms is the usual mouse interval;\n// // However, an underpowered mobile device under a heavy load may queue mouse events for a longer period.\n\nvar IGNORE_MOUSE_TIMEOUT = 2000;\n\nfunction normalizeEvent(e) {\n if (e.type.match(touchRegExp)) {\n return {\n pageX: e.changedTouches[0].pageX,\n pageY: e.changedTouches[0].pageY,\n clientX: e.changedTouches[0].clientX,\n clientY: e.changedTouches[0].clientY,\n type: e.type,\n originalEvent: e,\n isTouch: true\n };\n }\n\n return {\n pageX: e.pageX,\n pageY: e.pageY,\n clientX: e.clientX,\n clientY: e.clientY,\n offsetX: e.offsetX,\n offsetY: e.offsetY,\n type: e.type,\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey,\n altKey: e.altKey,\n originalEvent: e\n };\n}\n\nexport var Draggable = function Draggable(ref) {\n var this$1 = this;\n var press = ref.press;\n if (press === void 0) press = noop;\n var drag = ref.drag;\n if (drag === void 0) drag = noop;\n var release = ref.release;\n if (release === void 0) release = noop;\n var mouseOnly = ref.mouseOnly;\n if (mouseOnly === void 0) mouseOnly = false;\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._ignoreMouse = false;\n this._mouseOnly = mouseOnly;\n\n this._touchstart = function (e) {\n if (e.touches.length === 1) {\n this$1._pressHandler(e);\n }\n };\n\n this._touchmove = function (e) {\n if (e.touches.length === 1) {\n this$1._dragHandler(e);\n }\n };\n\n this._touchend = function (e) {\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 if (e.touches.length === 0 && e.changedTouches.length === 1) {\n this$1._releaseHandler(e);\n\n this$1._ignoreMouse = true;\n setTimeout(this$1._restoreMouse, IGNORE_MOUSE_TIMEOUT);\n }\n };\n\n this._restoreMouse = function () {\n this$1._ignoreMouse = false;\n };\n\n this._mousedown = function (e) {\n var which = e.which;\n\n if (which && which > 1 || this$1._ignoreMouse) {\n return;\n }\n\n bind(this$1.document, \"mousemove\", this$1._mousemove);\n bind(this$1.document, \"mouseup\", this$1._mouseup);\n\n this$1._pressHandler(e);\n };\n\n this._mousemove = function (e) {\n this$1._dragHandler(e);\n };\n\n this._mouseup = function (e) {\n unbind(this$1.document, \"mousemove\", this$1._mousemove);\n unbind(this$1.document, \"mouseup\", this$1._mouseup);\n\n this$1._releaseHandler(e);\n };\n\n this._pointerdown = function (e) {\n if (e.isPrimary && e.button === 0) {\n bind(this$1.document, \"pointermove\", this$1._pointermove);\n bind(this$1.document, \"pointerup\", this$1._pointerup);\n bind(this$1.document, \"pointercancel\", this$1._pointerup);\n bind(this$1.document, \"contextmenu\", preventDefault);\n\n this$1._pressHandler(e);\n }\n };\n\n this._pointermove = function (e) {\n if (e.isPrimary) {\n this$1._dragHandler(e);\n }\n };\n\n this._pointerup = function (e) {\n if (e.isPrimary) {\n unbind(this$1.document, \"pointermove\", this$1._pointermove);\n unbind(this$1.document, \"pointerup\", this$1._pointerup);\n unbind(this$1.document, \"pointercancel\", this$1._pointerup);\n unbind(this$1.document, \"contextmenu\", preventDefault);\n\n this$1._releaseHandler(e);\n }\n };\n};\nvar prototypeAccessors = {\n document: {\n configurable: true\n }\n};\n\nDraggable.supportPointerEvent = function supportPointerEvent() {\n return typeof window !== 'undefined' && window.PointerEvent;\n};\n\nprototypeAccessors.document.get = function () {\n return this._element ? this._element.ownerDocument : document;\n};\n\nDraggable.prototype.bindTo = function bindTo(element) {\n if (element === this._element) {\n return;\n }\n\n if (this._element) {\n this._unbindFromCurrent();\n }\n\n this._element = element;\n\n this._bindToCurrent();\n};\n\nDraggable.prototype._bindToCurrent = function _bindToCurrent() {\n var element = this._element;\n\n if (this._usePointers()) {\n bind(element, \"pointerdown\", this._pointerdown);\n return;\n }\n\n bind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n bind(element, \"touchstart\", this._touchstart);\n bind(element, \"touchmove\", this._touchmove);\n bind(element, \"touchend\", this._touchend);\n }\n};\n\nDraggable.prototype._unbindFromCurrent = function _unbindFromCurrent() {\n var element = this._element;\n\n if (this._usePointers()) {\n unbind(element, \"pointerdown\", this._pointerdown);\n unbind(this.document, \"pointermove\", this._pointermove);\n unbind(this.document, \"pointerup\", this._pointerup);\n unbind(this.document, \"contextmenu\", preventDefault);\n unbind(this.document, \"pointercancel\", this._pointerup);\n return;\n }\n\n unbind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n unbind(element, \"touchstart\", this._touchstart);\n unbind(element, \"touchmove\", this._touchmove);\n unbind(element, \"touchend\", this._touchend);\n }\n};\n\nDraggable.prototype._usePointers = function _usePointers() {\n return !this._mouseOnly && Draggable.supportPointerEvent();\n};\n\nDraggable.prototype.update = function update(ref) {\n var press = ref.press;\n if (press === void 0) press = noop;\n var drag = ref.drag;\n if (drag === void 0) drag = noop;\n var release = ref.release;\n if (release === void 0) release = noop;\n var mouseOnly = ref.mouseOnly;\n if (mouseOnly === void 0) mouseOnly = false;\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._mouseOnly = mouseOnly;\n};\n\nDraggable.prototype.destroy = function destroy() {\n this._unbindFromCurrent();\n\n this._element = null;\n};\n\nObject.defineProperties(Draggable.prototype, prototypeAccessors); // Re-export as \"default\" field to address a bug\n// where the ES Module is imported by CommonJS code.\n//\n// See https://github.com/telerik/kendo-angular/issues/1314\n\nDraggable.default = Draggable; // Rollup won't output exports['default'] otherwise\n\nexport default Draggable;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport KendoDraggable from '@telerik/kendo-draggable';\n/**\n * @hidden\n */\n\nvar Draggable =\n/** @class */\nfunction (_super) {\n __extends(Draggable, _super);\n\n function Draggable() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n\n\n _this.element = null;\n _this.draggable = new KendoDraggable({\n press: function press(event) {\n if (_this.element && _this.props.onPress) {\n _this.props.onPress.call(undefined, {\n target: _this,\n event: event,\n element: _this.element\n });\n }\n },\n drag: function drag(event) {\n if (_this.element && _this.props.onDrag) {\n _this.props.onDrag.call(undefined, {\n target: _this,\n event: event,\n element: _this.element\n });\n }\n },\n release: function release(event) {\n if (_this.element && _this.props.onRelease) {\n _this.props.onRelease.call(undefined, {\n target: _this,\n event: event\n });\n }\n }\n });\n\n _this.assingRef = function (element) {\n _this.element = element;\n };\n\n return _this;\n }\n\n Draggable.prototype.componentDidMount = function () {\n if (this.element) {\n this.draggable.bindTo(this.element);\n }\n };\n\n Draggable.prototype.componentWillUnmount = function () {\n this.draggable.destroy();\n };\n\n Draggable.prototype.render = function () {\n return React.cloneElement(React.Children.only(this.props.children), {\n ref: this.assingRef\n });\n };\n\n Draggable.propTypes = {\n children: PropTypes.element.isRequired\n };\n return Draggable;\n}(React.Component);\n\nexport { Draggable };","import { fieldList } from './fieldList';\nvar getterCache = {};\n\ngetterCache.undefined = function () {\n return undefined;\n};\n/**\n * Can be used for getting value from object using field path. For example `users[index].name`.\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 */\n\n\nexport function getter(field) {\n if (getterCache[field]) {\n return getterCache[field];\n }\n\n var fields = fieldList(field);\n\n getterCache[field] = function (obj) {\n var result = obj;\n\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}","/**\n * @hidden\n */\nvar DISABLED_TABINDEX = -1;\n/**\n * @hidden\n */\n\nvar DEFAULT_TABINDEX = 0;\n/**\n * @hidden\n */\n\nexport var getTabIndex = function getTabIndex(tabIndex, disabled, useDefaultTabIndexWhenDisabled) {\n var parsedTabIndex = typeof tabIndex === 'string' ? parseInt(tabIndex, undefined) : tabIndex;\n\n if (parsedTabIndex === NaN) {\n return undefined;\n }\n\n return parsedTabIndex !== undefined ? parsedTabIndex : disabled ? useDefaultTabIndexWhenDisabled ? undefined : DISABLED_TABINDEX : DEFAULT_TABINDEX;\n};","/**\n * @hidden\n */\nexport var SIZE_CLASSES = {\n 'default': '',\n 'xsmall': 'k-icon-xs',\n 'small': 'k-icon-sm',\n 'medium': 'k-icon-md',\n 'large': 'k-icon-lg',\n 'xlarge': 'k-icon-xl'\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '../classNames';\nimport { SIZE_CLASSES } from './constants';\n/**\n * Represents the [KendoReact Icon component]({% slug overview_icon %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n * return (\n * \n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\n\nexport var Icon = React.forwardRef(function (props, ref) {\n var className = props.className,\n name = props.name,\n themeColor = props.themeColor,\n size = props.size,\n flip = props.flip,\n style = props.style,\n others = __rest(props, [\"className\", \"name\", \"themeColor\", \"size\", \"flip\", \"style\"]);\n\n var elementRef = React.useRef(null);\n React.useImperativeHandle(ref, function () {\n return {\n element: elementRef.current\n };\n });\n var themeColorProp = React.useMemo(function () {\n return themeColor || defaultProps.themeColor;\n }, [themeColor]);\n var sizeProp = React.useMemo(function () {\n return size || defaultProps.size;\n }, [size]);\n var flipProp = React.useMemo(function () {\n return flip || defaultProps.flip;\n }, [flip]);\n var fontClassNames = React.useMemo(function () {\n return classNames('k-icon', 'k-i-' + name, 'k-color-' + themeColorProp, {\n 'k-flip-h': flipProp === 'horizontal' || flipProp === 'both',\n 'k-flip-v': flipProp === 'vertical' || flipProp === 'both'\n }, SIZE_CLASSES[sizeProp], className);\n }, [name, themeColorProp, sizeProp, flipProp, className]);\n return React.createElement(\"span\", __assign({\n className: fontClassNames,\n style: style,\n ref: elementRef,\n role: \"presentation\"\n }, others));\n});\nIcon.propTypes = {\n style: PropTypes.object,\n classNames: PropTypes.string,\n name: PropTypes.string,\n themeColor: PropTypes.oneOf(['inherit', 'primary', 'secondary', 'tertiary', 'info', 'success', 'error', 'warning', 'dark', 'light', 'inverse']),\n size: PropTypes.oneOf(['default', 'xsmall', 'small', 'medium', 'large', 'xlarge']),\n flip: PropTypes.oneOf(['default', 'horizontal', 'vertical', 'both'])\n};\nvar defaultProps = {\n size: 'default',\n themeColor: 'inherit',\n flip: 'default'\n};\nIcon.displayName = 'KendoIcon';","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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '../classNames';\nimport { SIZE_CLASSES } from './constants';\n/**\n * Represents the [KendoReact SvgIcon component]({% slug overview_svgicon %}).\n *\n * @example\n * ```jsx\n * import { accessibility } from '@progress/kendo-svg-icons';\n *\n * const App = () => {\n * return (\n * \n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\n\nexport var SvgIcon = React.forwardRef(function (props, ref) {\n var children = props.children,\n className = props.className,\n svgClassName = props.svgClassName,\n icon = props.icon,\n flip = props.flip,\n size = props.size,\n style = props.style,\n svgStyle = props.svgStyle,\n themeColor = props.themeColor,\n viewBox = props.viewBox,\n others = __rest(props, [\"children\", \"className\", \"svgClassName\", \"icon\", \"flip\", \"size\", \"style\", \"svgStyle\", \"themeColor\", \"viewBox\"]);\n\n var elementRef = React.useRef(null);\n React.useImperativeHandle(ref, function () {\n return {\n element: elementRef.current\n };\n });\n var iconNameProp = React.useMemo(function () {\n return icon ? icon.name : defaultProps.icon;\n }, [icon]);\n var themeColorProp = React.useMemo(function () {\n return themeColor || defaultProps.themeColor;\n }, [themeColor]);\n var sizeProp = React.useMemo(function () {\n return size || defaultProps.size;\n }, [size]);\n var flipProp = React.useMemo(function () {\n return flip || defaultProps.flip;\n }, [flip]);\n var viewBoxProp = React.useMemo(function () {\n return viewBox || defaultProps.viewBox;\n }, [viewBox]);\n var elementClassNames = React.useMemo(function () {\n return classNames('k-svg-icon', 'k-color-' + themeColorProp, 'k-svg-i-' + iconNameProp, {\n 'k-flip-h': flipProp === 'horizontal' || flipProp === 'both',\n 'k-flip-v': flipProp === 'vertical' || flipProp === 'both'\n }, SIZE_CLASSES[sizeProp], className);\n }, [iconNameProp, themeColorProp, sizeProp, flipProp, className]);\n var elementStyle = React.useMemo(function () {\n if (props.width && props.height) {\n return __assign({\n width: props.width,\n height: props.height\n }, style);\n } else if (props.width) {\n return __assign({\n width: props.width,\n height: props.width\n }, style);\n } else if (props.height) {\n return __assign({\n width: props.height,\n height: props.height\n }, style);\n } else {\n return __assign({}, style);\n }\n }, [props.width, props.height, style]);\n return React.createElement(\"span\", {\n className: elementClassNames,\n style: elementStyle,\n ref: elementRef\n }, React.createElement(\"svg\", __assign({\n className: svgClassName,\n style: svgStyle,\n \"aria-hidden\": true,\n focusable: \"false\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: icon ? icon.viewBox : viewBoxProp,\n dangerouslySetInnerHTML: icon ? {\n __html: icon.content\n } : undefined\n }, others), icon ? undefined : children));\n});\nSvgIcon.propTypes = {\n style: PropTypes.object,\n classNames: PropTypes.string,\n children: PropTypes.any,\n icon: PropTypes.object,\n themeColor: PropTypes.oneOf(['inherit', 'primary', 'secondary', 'tertiary', 'info', 'success', 'error', 'warning', 'dark', 'light', 'inverse']),\n size: PropTypes.oneOf(['default', 'xsmall', 'small', 'medium', 'large', 'xlarge']),\n flip: PropTypes.oneOf(['default', 'horizontal', 'vertical', 'both'])\n};\nvar defaultProps = {\n size: 'default',\n themeColor: 'inherit',\n flip: 'default',\n icon: '',\n viewBox: '0 0 24 24'\n};\nSvgIcon.displayName = 'KendoSvgIcon';","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { DialogTitleBar } from './DialogTitleBar';\nimport { DialogActionsBar } from './DialogActionsBar';\nimport { guid, dispatchEvent, Keys } from '@progress/kendo-react-common'; // tslint:enable:max-line-length\n\nvar Dialog =\n/** @class */\nfunction (_super) {\n __extends(Dialog, _super);\n\n function Dialog() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n\n\n _this.DialogRef = React.createRef();\n _this.titleId = _this.generateTitleId();\n\n _this.handleCloseDialog = function (event) {\n event.preventDefault();\n dispatchEvent(_this.props.onClose, event, _this, undefined);\n };\n\n _this.handleKeyDown = function (event) {\n if (event.keyCode === Keys.esc && _this.props.onClose) {\n event.preventDefault();\n\n _this.handleCloseDialog(event);\n }\n\n if (event.keyCode === Keys.tab) {\n var focusableElements = 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n var modal = document.querySelector('.k-dialog');\n\n if (modal !== null) {\n var firstFocusableElement = modal.querySelectorAll(focusableElements)[0];\n var focusableContent = modal.querySelectorAll(focusableElements);\n var lastFocusableElement = focusableContent[focusableContent.length - 1];\n\n if (event.shiftKey) {\n if (document.activeElement === firstFocusableElement) {\n lastFocusableElement.focus();\n event.preventDefault();\n }\n } else {\n if (document.activeElement === lastFocusableElement) {\n firstFocusableElement.focus();\n event.preventDefault();\n }\n }\n }\n }\n };\n\n return _this;\n }\n /**\n * @hidden\n */\n\n\n Dialog.prototype.componentDidMount = function () {\n if (this.DialogRef.current && this.props.autoFocus) {\n this.DialogRef.current.focus();\n }\n };\n /**\n * @hidden\n */\n\n\n Dialog.prototype.render = function () {\n var id = this.props.id !== undefined ? this.props.id : this.titleId;\n var _a = this.props,\n title = _a.title,\n width = _a.width,\n height = _a.height,\n children = _a.children,\n minWidth = _a.minWidth,\n dir = _a.dir,\n style = _a.style,\n contentStyle = _a.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 return React.createElement(\"div\", {\n className: 'k-dialog-wrapper' + (this.props.className ? ' ' + this.props.className : ''),\n onKeyDown: this.handleKeyDown,\n tabIndex: 0,\n dir: dir,\n style: style,\n ref: this.DialogRef\n }, React.createElement(\"div\", {\n className: \"k-overlay\"\n }), React.createElement(\"div\", __assign({}, aria, {\n className: \"k-widget k-window k-dialog\",\n role: \"dialog\",\n style: {\n width: width,\n height: height,\n minWidth: minWidth\n }\n }), this.props.title && React.createElement(DialogTitleBar, {\n closeIcon: closeIcon,\n onCloseButtonClick: this.handleCloseDialog,\n id: id\n }, title), React.createElement(\"div\", {\n className: \"k-content k-window-content k-dialog-content\",\n style: contentStyle\n }, content), actions));\n };\n\n Dialog.prototype.getActionBar = function (children) {\n return children.filter(function (child) {\n return child && child.type === DialogActionsBar;\n });\n };\n\n Dialog.prototype.getContent = function (children) {\n return children.filter(function (child) {\n return child && child.type !== DialogActionsBar;\n });\n };\n\n Dialog.prototype.generateTitleId = function () {\n return 'dialog-title' + guid();\n };\n /**\n * @hidden\n */\n\n\n Dialog.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\n Dialog.defaultProps = {\n autoFocus: false\n };\n return Dialog;\n}(React.Component);\n\nexport { Dialog };","export var windowStage;\n\n(function (windowStage) {\n windowStage[\"DEFAULT\"] = \"DEFAULT\";\n windowStage[\"FULLSCREEN\"] = \"FULLSCREEN\";\n windowStage[\"MINIMIZED\"] = \"MINIMIZED\";\n})(windowStage || (windowStage = {}));","/* tslint:disable:no-bitwise */\n\n/**\n * @hidden\n */\nvar guid = function guid() {\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);\n }\n\n return id;\n};\n\nexport { guid };","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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport { windowStage } from './StageEnum';\n/**\n * @hidden\n */\n\nvar WindowTitleBarComponent = function WindowTitleBarComponent(props) {\n var children = props.children,\n onCloseButtonClick = props.onCloseButtonClick,\n onMinimizeButtonClick = props.onMinimizeButtonClick,\n onFullScreenButtonClick = props.onFullScreenButtonClick,\n onRestoreButtonClick = props.onRestoreButtonClick,\n onDoubleClick = props.onDoubleClick,\n stage = props.stage,\n forwardedRef = props.forwardedRef;\n var minimizeButtonRender = props.minimizeButton ? React.createElement(props.minimizeButton, {\n onClick: onMinimizeButtonClick,\n stage: stage\n }) : React.createElement(\"button\", {\n className: \"k-button-icon k-button k-bare\",\n onClick: onMinimizeButtonClick\n }, React.createElement(\"span\", {\n className: \"k-icon k-i-window-minimize\",\n role: \"presentation\"\n }));\n var maximizeButtonRender = props.maximizeButton ? React.createElement(props.maximizeButton, {\n onClick: onFullScreenButtonClick,\n stage: stage\n }) : React.createElement(\"button\", {\n className: \"k-button-icon k-button k-bare\",\n onClick: onFullScreenButtonClick\n }, React.createElement(\"span\", {\n className: \"k-icon k-i-window-maximize\",\n role: \"presentation\"\n }));\n var restoreButtonRender = props.restoreButton ? React.createElement(props.restoreButton, {\n onClick: onRestoreButtonClick,\n stage: stage\n }) : React.createElement(\"button\", {\n className: \"k-button-icon k-button k-bare\",\n onClick: onRestoreButtonClick\n }, React.createElement(\"span\", {\n className: \"k-icon k-i-window-restore\",\n role: \"presentation\"\n }));\n var closeButtonRender = props.closeButton ? React.createElement(props.closeButton, {\n onClick: onCloseButtonClick,\n stage: stage\n }) : React.createElement(\"button\", {\n className: \"k-button-icon k-button k-bare\",\n onClick: onCloseButtonClick\n }, React.createElement(\"span\", {\n className: \"k-icon k-i-close\",\n role: \"presentation\"\n }));\n return React.createElement(\"div\", {\n className: \"k-window-titlebar k-dialog-titlebar\",\n style: {\n touchAction: 'none'\n },\n ref: forwardedRef,\n onDoubleClick: onDoubleClick\n }, React.createElement(\"div\", {\n className: \"k-window-title\"\n }, children ? children : ''), React.createElement(\"div\", {\n className: \"k-window-actions\"\n }, stage === windowStage.DEFAULT && minimizeButtonRender, stage === windowStage.DEFAULT && maximizeButtonRender, stage !== windowStage.DEFAULT && restoreButtonRender), closeButtonRender);\n};\n/**\n * @hidden\n */\n\n\nexport var WindowTitleBar = React.forwardRef(function (props, ref) {\n return React.createElement(WindowTitleBarComponent, __assign({}, props, {\n forwardedRef: ref\n }));\n});","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nimport { Draggable } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\n\nvar keys = ['n', 'e', 's', 'w', 'se', 'sw', 'ne', 'nw'];\n/**\n * @hidden\n */\n\nvar ResizeHandlers =\n/** @class */\nfunction (_super) {\n __extends(ResizeHandlers, _super);\n\n function ResizeHandlers() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ResizeHandlers.prototype.render = function () {\n var _this = this;\n\n return React.createElement(\"div\", null, \" \", keys.map(function (key, index) {\n return React.createElement(Draggable, {\n key: index,\n onDrag: function onDrag(data) {\n var event = data.event;\n event.originalEvent.preventDefault();\n\n _this.props.onResize(event, {\n end: false,\n direction: key\n });\n },\n onRelease: function onRelease(data) {\n var event = data.event;\n event.originalEvent.preventDefault();\n\n _this.props.onResize(event, {\n end: true,\n direction: key\n });\n }\n }, React.createElement(\"div\", {\n className: 'k-resize-handle k-resize-' + key,\n style: {\n display: 'block',\n touchAction: 'none'\n }\n }));\n }));\n };\n\n return ResizeHandlers;\n}(React.Component);\n\nexport { ResizeHandlers };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\n/**\n * @hidden\n */\n\nvar MiddleLayerOptimization =\n/** @class */\nfunction (_super) {\n __extends(MiddleLayerOptimization, _super);\n\n function MiddleLayerOptimization() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MiddleLayerOptimization.prototype.shouldComponentUpdate = function (nextProps) {\n return nextProps.shouldUpdateOnDrag || !nextProps.isDragging;\n };\n\n MiddleLayerOptimization.prototype.render = function () {\n return this.props.children;\n };\n\n return MiddleLayerOptimization;\n}(React.Component);\n\nexport { MiddleLayerOptimization };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as PropTypes from 'prop-types';\nimport { WindowTitleBar } from './WindowTitlebar';\nimport { dispatchEvent, Keys, classNames } from '@progress/kendo-react-common';\nimport { Draggable } from '@progress/kendo-react-common';\nimport { ResizeHandlers } from './WindowResizeHandlers';\nimport { MiddleLayerOptimization } from './MiddleLayerOptimization';\nimport { windowStage } from './StageEnum';\nvar DEFAULT_WIDTH = 300;\nvar DEFAULT_HEIGHT = 300;\nvar DEFAULT_MIN_WIDTH = 120;\nvar DEFAULT_MIN_HEIGHT = 100;\nvar DEFAULT_STEP = 5;\n\nvar Window =\n/** @class */\nfunction (_super) {\n __extends(Window, _super);\n\n function Window(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n\n\n _this.onPress = function (data) {\n var e = data.event;\n _this.windowCoordinatesState.differenceLeft = e.pageX - _this.left;\n _this.windowCoordinatesState.differenceTop = e.pageY - _this.top;\n };\n /**\n * @hidden\n */\n\n\n _this.onDrag = function (data) {\n var e = data.event;\n e.originalEvent.preventDefault();\n\n if (_this.windowStage !== windowStage.FULLSCREEN && _this.props.draggable) {\n _this.setState({\n top: Math.max(e.pageY - _this.windowCoordinatesState.differenceTop, 0),\n left: e.pageX - _this.windowCoordinatesState.differenceLeft,\n isDragging: true\n });\n\n if (_this.props.onMove) {\n _this.dispatchMoveEvent(_this.props.onMove, e, true, false);\n }\n }\n };\n /**\n * @hidden\n */\n\n\n _this.onRelease = function (data) {\n var e = data.event;\n\n if (_this.windowStage !== windowStage.FULLSCREEN && _this.props.draggable) {\n if (_this.props.onMove) {\n _this.dispatchMoveEvent(_this.props.onMove, e, true, true);\n }\n }\n\n _this.setState({\n isDragging: false\n });\n }; // Keyboard navigation\n\n\n _this.handleKeyDown = function (event) {\n if (event.target !== event.currentTarget) {\n return;\n }\n\n var minWidth = _this.props.minWidth || DEFAULT_MIN_WIDTH;\n var minHeight = _this.props.minHeight || DEFAULT_MIN_HEIGHT;\n\n if (event.ctrlKey && _this.props.resizable) {\n switch (event.keyCode) {\n case Keys.up:\n event.preventDefault();\n\n if (minHeight <= _this.height - DEFAULT_STEP) {\n _this.setState({\n height: _this.height - DEFAULT_STEP\n });\n }\n\n break;\n\n case Keys.down:\n event.preventDefault();\n\n _this.setState({\n height: _this.height + DEFAULT_STEP\n });\n\n break;\n\n case Keys.left:\n if (minWidth <= _this.width - DEFAULT_STEP) {\n _this.setState({\n width: _this.width - DEFAULT_STEP\n });\n }\n\n break;\n\n case Keys.right:\n _this.setState({\n width: _this.width + DEFAULT_STEP\n });\n\n break;\n\n default:\n return;\n }\n\n _this.dispatchMoveEvent(_this.props.onResize, event, false, undefined);\n\n return;\n }\n\n if (event.altKey) {\n switch (event.keyCode) {\n case Keys.up:\n if (_this.windowStage === windowStage.MINIMIZED) {\n _this.handleRestore(event);\n\n dispatchEvent(_this.props.onStageChange, event, _this, {\n state: windowStage.DEFAULT\n });\n } else if (_this.windowStage === windowStage.DEFAULT) {\n _this.handleFullscreen(event);\n\n dispatchEvent(_this.props.onStageChange, event, _this, {\n state: windowStage.FULLSCREEN\n });\n }\n\n break;\n\n case Keys.down:\n if (_this.windowStage === windowStage.FULLSCREEN) {\n _this.handleRestore(event);\n\n dispatchEvent(_this.props.onStageChange, event, _this, {\n state: windowStage.DEFAULT\n });\n } else if (_this.windowStage === windowStage.DEFAULT) {\n _this.handleMinimize(event);\n\n dispatchEvent(_this.props.onStageChange, event, _this, {\n state: windowStage.MINIMIZED\n });\n }\n\n break;\n\n default:\n }\n\n return;\n }\n\n if (!event.ctrlKey) {\n switch (event.keyCode) {\n case Keys.esc:\n if (_this.props.onClose) {\n event.preventDefault();\n\n _this.handleCloseWindow(event);\n\n dispatchEvent(_this.props.onClose, event, _this, {\n state: undefined\n });\n }\n\n return;\n\n case Keys.up:\n _this.setState({\n top: _this.state.top - DEFAULT_STEP\n });\n\n break;\n\n case Keys.down:\n _this.setState({\n top: _this.state.top + DEFAULT_STEP\n });\n\n break;\n\n case Keys.left:\n _this.setState({\n left: _this.state.left - DEFAULT_STEP\n });\n\n break;\n\n case Keys.right:\n _this.setState({\n left: _this.state.left + DEFAULT_STEP\n });\n\n break;\n\n default:\n return;\n }\n }\n\n _this.dispatchMoveEvent(_this.props.onMove, event, false, undefined);\n }; // Get initial coordinates of the Window\n\n\n _this.getInitialTop = function () {\n if (_this.props.top !== undefined) {\n return _this.props.top;\n }\n\n if (_this.props.initialTop !== undefined) {\n return _this.props.initialTop;\n }\n\n var height = DEFAULT_HEIGHT;\n\n if (_this.props.height !== undefined) {\n height = _this.props.height;\n } else if (_this.props.initialHeight !== undefined) {\n height = _this.props.initialHeight;\n }\n\n return window.innerHeight / 2 - height / 2;\n };\n\n _this.getInitialLeft = function () {\n if (_this.props.left !== undefined) {\n return _this.props.left;\n }\n\n if (_this.props.initialLeft !== undefined) {\n return _this.props.initialLeft;\n }\n\n var width = DEFAULT_WIDTH;\n\n if (_this.props.width !== undefined) {\n width = _this.props.width;\n } else if (_this.props.initialWidth !== undefined) {\n width = _this.props.initialWidth;\n }\n\n return window.innerWidth / 2 - width / 2;\n };\n\n _this.getInitialWidth = function () {\n var width = DEFAULT_WIDTH;\n\n if (_this.props.width !== undefined) {\n width = _this.props.width;\n } else if (_this.props.initialWidth !== undefined) {\n width = _this.props.initialWidth;\n }\n\n return width;\n };\n\n _this.getInitialHeight = function () {\n var height = DEFAULT_HEIGHT;\n\n if (_this.props.height !== undefined) {\n height = _this.props.height;\n } else if (_this.props.initialHeight !== undefined) {\n height = _this.props.initialHeight;\n }\n\n return height;\n }; // Handle actions\n\n\n _this.handleMinimize = function (event) {\n event.preventDefault();\n _this.windowCoordinatesState.leftBeforeAction = _this.left;\n _this.windowCoordinatesState.topBeforeAction = _this.top;\n _this.windowCoordinatesState.widthBeforeAction = _this.width;\n _this.windowCoordinatesState.heightBeforeAction = _this.height;\n\n _this.setState({\n stage: windowStage.MINIMIZED,\n height: 0\n });\n\n dispatchEvent(_this.props.onStageChange, event, _this, {\n state: windowStage.MINIMIZED\n });\n };\n\n _this.handleFullscreen = function (event) {\n event.preventDefault();\n _this.windowCoordinatesState.leftBeforeAction = _this.left;\n _this.windowCoordinatesState.topBeforeAction = _this.top;\n _this.windowCoordinatesState.widthBeforeAction = _this.width;\n _this.windowCoordinatesState.heightBeforeAction = _this.height;\n\n _this.setState({\n left: 0,\n top: 0,\n width: window.innerWidth,\n height: window.innerHeight,\n stage: windowStage.FULLSCREEN\n });\n\n dispatchEvent(_this.props.onStageChange, event, _this, {\n state: windowStage.FULLSCREEN\n });\n };\n\n _this.handleRestore = function (event) {\n event.preventDefault();\n\n if (_this.windowStage === windowStage.FULLSCREEN) {\n _this.setState({\n stage: windowStage.DEFAULT,\n left: _this.windowCoordinatesState.leftBeforeAction,\n top: _this.windowCoordinatesState.topBeforeAction,\n width: _this.windowCoordinatesState.widthBeforeAction,\n height: _this.windowCoordinatesState.heightBeforeAction\n });\n } else if (_this.windowStage === windowStage.MINIMIZED) {\n _this.setState({\n stage: windowStage.DEFAULT,\n height: _this.windowCoordinatesState.heightBeforeAction\n });\n }\n\n dispatchEvent(_this.props.onStageChange, event, _this, {\n state: windowStage.DEFAULT\n });\n };\n\n _this.handleCloseWindow = function (event) {\n event.preventDefault();\n dispatchEvent(_this.props.onClose, event, _this, {\n state: undefined\n });\n };\n\n _this.handleDoubleClick = function (e) {\n if (_this.windowStage === windowStage.FULLSCREEN || _this.windowStage === windowStage.MINIMIZED) {\n _this.handleRestore(e);\n } else {\n _this.handleFullscreen(e);\n }\n }; // Handle resizing\n\n\n _this.handleResize = function (event, props) {\n var currentWidth = _this.width;\n var currentHeight = _this.height;\n var minWidth = _this.props.minWidth || DEFAULT_MIN_WIDTH;\n var minHeight = _this.props.minHeight || DEFAULT_MIN_HEIGHT;\n var heightDifference = _this.top - event.pageY;\n var widthDifference = _this.left - event.pageX;\n var newWidth = event.pageX - _this.left;\n var newHeight = event.pageY - _this.top;\n var newState = Object.assign({}, _this.state, {\n isDragging: !props.end\n });\n\n if (props.direction.indexOf('n') >= 0 && minHeight - (currentHeight + heightDifference) < 0) {\n newState.top = event.pageY;\n newState.height = currentHeight + heightDifference;\n }\n\n if (props.direction.indexOf('s') >= 0 && minHeight - newHeight < 0) {\n newState.height = newHeight;\n }\n\n if (props.direction.indexOf('w') >= 0 && minWidth - (currentWidth + widthDifference) < 0) {\n newState.left = event.pageX;\n newState.width = currentWidth + widthDifference;\n }\n\n if (props.direction.indexOf('e') >= 0 && minWidth - newWidth < 0) {\n newState.width = newWidth;\n }\n\n _this.setState(newState);\n\n _this.dispatchMoveEvent(_this.props.onResize, event, true, props.end);\n }; // Dispatcher for the resize and move events\n\n\n _this.dispatchMoveEvent = function (callback, event, drag, end) {\n if (!callback) {\n return;\n }\n\n callback.call(undefined, {\n nativeEvent: event.nativeEvent ? event.nativeEvent : event.originalEvent,\n drag: drag,\n end: end,\n target: _this,\n left: _this.state.left,\n top: _this.state.top,\n width: _this.state.width,\n hight: _this.state.height,\n height: _this.state.height\n });\n };\n\n _this.handleBrowserWindowResize = function () {\n if (_this.windowStage === windowStage.FULLSCREEN) {\n _this.setState({\n width: window.innerWidth,\n height: window.innerHeight\n });\n }\n };\n\n _this.state = {\n stage: _this.props.stage || windowStage.DEFAULT,\n isDragging: false,\n top: _this.getInitialTop(),\n left: _this.getInitialLeft(),\n width: _this.getInitialWidth(),\n height: _this.getInitialHeight()\n };\n _this.windowCoordinatesState = {\n leftBeforeAction: _this.getInitialLeft(),\n topBeforeAction: _this.getInitialTop(),\n widthBeforeAction: _this.getInitialWidth(),\n heightBeforeAction: _this.getInitialHeight()\n };\n return _this;\n }\n /**\n * @hidden\n */\n\n\n Window.prototype.componentDidMount = function () {\n if (window) {\n window.addEventListener('resize', this.handleBrowserWindowResize);\n }\n };\n /**\n * @hidden\n */\n\n\n Window.prototype.componentWillUnmount = function () {\n if (window) {\n window.removeEventListener('resize', this.handleBrowserWindowResize);\n }\n };\n /**\n * @hidden\n */\n\n\n Window.prototype.render = function () {\n var _this = this;\n\n var classNamesWindow = classNames('k-widget', 'k-window', {\n 'k-window-minimized': this.state.stage === 'MINIMIZED'\n });\n var windowElement = React.createElement(React.Fragment, null, this.props.modal && React.createElement(\"div\", {\n className: \"k-overlay\"\n }), React.createElement(\"div\", {\n tabIndex: 0,\n onFocus: function onFocus(e) {\n return e.target.classList.add('k-state-focused');\n },\n onBlur: function onBlur(e) {\n return e.target.classList.remove('k-state-focused');\n },\n onKeyDown: this.handleKeyDown,\n ref: function ref(el) {\n return _this.windowElement = el;\n },\n className: classNamesWindow,\n style: __assign({\n top: this.top,\n left: this.left,\n width: this.width,\n height: this.height || ''\n }, this.props.style)\n }, React.createElement(MiddleLayerOptimization, {\n shouldUpdateOnDrag: this.props.shouldUpdateOnDrag || false,\n isDragging: this.state.isDragging\n }, React.createElement(Draggable, {\n onPress: this.onPress,\n onDrag: this.onDrag,\n onRelease: this.onRelease,\n ref: function ref(component) {\n return _this.draggable = component;\n }\n }, React.createElement(WindowTitleBar, {\n stage: this.windowStage,\n onDoubleClick: this.props.doubleClickStageChange ? this.handleDoubleClick : undefined,\n onMinimizeButtonClick: this.handleMinimize,\n onFullScreenButtonClick: this.handleFullscreen,\n onRestoreButtonClick: this.handleRestore,\n onCloseButtonClick: this.handleCloseWindow,\n closeButton: this.props.closeButton,\n minimizeButton: this.props.minimizeButton,\n maximizeButton: this.props.maximizeButton,\n restoreButton: this.props.restoreButton\n }, this.props.title)), this.windowStage !== windowStage.MINIMIZED ? React.createElement(\"div\", {\n className: \"k-content k-window-content\"\n }, this.props.children) : null, this.windowStage === windowStage.DEFAULT && this.props.resizable ? React.createElement(ResizeHandlers, {\n onResize: this.handleResize\n }) : null)));\n\n if (this.props.appendTo) {\n return ReactDOM.createPortal(windowElement, this.props.appendTo);\n }\n\n return windowElement;\n };\n\n Object.defineProperty(Window.prototype, \"top\", {\n // Getters\n get: function get() {\n if (this.windowStage !== windowStage.FULLSCREEN) {\n return Math.max(this.props.top || this.state.top, 0);\n }\n\n return 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Window.prototype, \"left\", {\n get: function get() {\n if (this.windowStage !== windowStage.FULLSCREEN) {\n return Math.max(this.props.left || this.state.left, 0);\n }\n\n return 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Window.prototype, \"width\", {\n get: function get() {\n var width = this.props.width || this.state.width;\n\n if (this.windowStage === windowStage.FULLSCREEN) {\n width = window.innerWidth;\n }\n\n return width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Window.prototype, \"height\", {\n get: function get() {\n var height = this.props.height || this.state.height;\n\n if (this.windowStage === windowStage.FULLSCREEN) {\n height = window.innerHeight;\n } else if (this.windowStage === windowStage.MINIMIZED) {\n height = 0;\n }\n\n return height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Window.prototype, \"windowStage\", {\n get: function get() {\n return this.props.stage || this.state.stage;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n\n Window.propTypes = {\n id: PropTypes.string,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n left: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n top: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n initialwidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n initialHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n initialLeft: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n initialTop: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n minWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n minHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n resizable: PropTypes.bool,\n draggable: PropTypes.bool,\n title: PropTypes.any,\n shouldUpdateOnDrag: PropTypes.bool,\n stage: PropTypes.oneOf(['DEFAULT', 'MINIMIZED', 'FULLSCREEN'])\n };\n /**\n * @hidden\n */\n\n Window.defaultProps = {\n minWidth: DEFAULT_MIN_WIDTH,\n minHeight: DEFAULT_MIN_HEIGHT,\n resizable: true,\n draggable: true,\n modal: false,\n doubleClickStageChange: true\n };\n return Window;\n}(React.Component);\n\nexport { Window };","import { Dialog } from './Dialog';\nimport { DialogActionsBar } from './DialogActionsBar';\nimport { Window } from './Window';\nexport { Dialog, DialogActionsBar, Window };","/**\n * @hidden\n */\nexport var isPresent = function isPresent(value) {\n return value !== null && value !== undefined;\n};\n/**\n * @hidden\n */\n\nexport var isBlank = function isBlank(value) {\n return value === null || value === undefined;\n};\n/**\n * @hidden\n */\n\nexport var isArray = function isArray(value) {\n return Array.isArray(value);\n};\n/**\n * @hidden\n */\n\nexport var isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n/**\n * @hidden\n */\n\nexport var isString = function isString(value) {\n return typeof value === 'string';\n};\n/**\n * @hidden\n */\n\nexport var isTruthy = function isTruthy(value) {\n return !!value;\n};\n/**\n * @hidden\n */\n\nexport var isNullOrEmptyString = function isNullOrEmptyString(value) {\n return isBlank(value) || value.trim().length === 0;\n};\n/**\n * @hidden\n */\n\nexport var isNotNullOrEmptyString = function isNotNullOrEmptyString(value) {\n return !isNullOrEmptyString(value);\n};\n/**\n * @hidden\n */\n\nexport var isNumeric = function isNumeric(value) {\n return !isNaN(value - parseFloat(value));\n};\n/**\n * @hidden\n */\n\nexport var isDate = function isDate(value) {\n return value && value.getTime;\n};","/**\n * @hidden\n */\nexport var ifElse = function ifElse(predicate, right, left) {\n return function (value) {\n return predicate(value) ? right(value) : left(value);\n };\n};\n/**\n * @hidden\n * Performs the right-to-left function composition. Functions should have a unary.\n */\n\nexport var compose = function compose() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return function (data) {\n return args.reduceRight(function (acc, curr) {\n return curr(acc);\n }, data);\n };\n};\n/**\n * @hidden\n */\n\nexport var constant = function constant(x) {\n return function () {\n return x;\n };\n};\n/**\n * @hidden\n */\n\nexport var identity = function identity(x) {\n return x;\n};","import { isPresent } from '../utils'; // tslint:enable:max-line-length\n\n/**\n * @hidden\n * Type guard for `CompositeFilterDescriptor`.\n */\n\nexport var isCompositeFilterDescriptor = function isCompositeFilterDescriptor(source) {\n return isPresent(source.filters);\n};","import * as tslib_1 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 */\n\nexport var wrapIf = function wrapIf(predicate) {\n return function (str) {\n var args = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n\n return predicate() ? \"\" + str[0] + args[0] + str[1] : args[0];\n };\n};\n/**\n * @hidden\n */\n\nexport var toUTC = function toUTC(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 */\n\nexport var quote = function quote(_a) {\n var field = _a.field,\n value = _a.value,\n ignoreCase = _a.ignoreCase,\n operator = _a.operator;\n return {\n value: \"'\" + value.replace(/'/g, \"''\") + \"'\",\n field: field,\n ignoreCase: ignoreCase,\n operator: operator\n };\n};\n/**\n * @hidden\n */\n\nexport var encodeValue = function encodeValue(_a) {\n var field = _a.field,\n value = _a.value,\n ignoreCase = _a.ignoreCase,\n operator = _a.operator;\n return {\n value: \"\" + encodeURIComponent(value),\n field: field,\n ignoreCase: ignoreCase,\n operator: operator\n };\n};\n/**\n * @hidden\n */\n\nexport var toLower = function toLower(_a) {\n var field = _a.field,\n value = _a.value,\n ignoreCase = _a.ignoreCase,\n operator = _a.operator;\n return {\n field: wrapIf(function () {\n return ignoreCase;\n })(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject([\"tolower(\", \")\"], [\"tolower(\", \")\"])), field),\n value: value,\n ignoreCase: ignoreCase,\n operator: operator\n };\n};\n/**\n * @hidden\n */\n\nexport var normalizeField = function normalizeField(_a) {\n var field = _a.field,\n value = _a.value,\n ignoreCase = _a.ignoreCase,\n 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 */\n\nexport var isStringValue = function isStringValue(x) {\n return isString(x.value);\n};\n/**\n * @hidden\n */\n\nexport var isDateValue = function isDateValue(x) {\n return isDate(x.value);\n};\n/**\n * @hidden\n */\n\nexport var serializeFilters = function serializeFilters(map, join) {\n return function (filter) {\n var brackets = wrapIf(function () {\n return filter.filters.length > 1;\n });\n return brackets(templateObject_2 || (templateObject_2 = tslib_1.__makeTemplateObject([\"(\", \")\"], [\"(\", \")\"])), filter.filters.map(map).join(join(filter)));\n };\n};\nvar templateObject_1, templateObject_2;","import { isPresent } from './utils';\nvar getterCache = {};\nvar FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g; // tslint:disable-next-line:no-string-literal\n\ngetterCache['undefined'] = function (obj) {\n return obj;\n};\n/**\n * @hidden\n */\n\n\nexport var getter = function getter(field, safe) {\n var key = field + safe;\n\n if (getterCache[key]) {\n return getterCache[key];\n }\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\n getterCache[key] = function (obj) {\n var result = obj;\n\n for (var idx = 0; idx < fields.length; idx++) {\n result = result[fields[idx]];\n\n if (!isPresent(result) && safe) {\n return result;\n }\n }\n\n return result;\n };\n\n return getterCache[key];\n};","import * as tslib_1 from \"tslib\";\nimport { isPresent, isNotNullOrEmptyString } from './utils';\nimport { serializeFilter } from './odata-filtering.operators';\nimport { ifElse, constant } from './funcs';\n\nvar serializeSort = function serializeSort(orderby) {\n var str = orderby.filter(function (sort) {\n 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=\" + str : str;\n};\n\nvar emptyString = constant('');\n\nvar concat = function concat(a) {\n return function (b) {\n return a + b;\n };\n};\n\nvar serializeKey = function serializeKey(strings, val) {\n return ifElse(isPresent, concat(strings[0]), emptyString)(val);\n};\n\nvar rules = function rules(settings, state) {\n return function (key) {\n return {\n \"filter\": serializeFilter(state.filter || {}, settings),\n \"skip\": serializeKey(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject([\"$skip=\", \"\"], [\"$skip=\", \"\"])), state.skip),\n \"sort\": serializeSort(state.sort || []),\n \"take\": serializeKey(templateObject_2 || (templateObject_2 = tslib_1.__makeTemplateObject([\"$top=\", \"\"], [\"$top=\", \"\"])), state.take)\n }[key];\n };\n}; // tslint:enable:max-line-length\n\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 */\n\n\nexport var toODataString = function toODataString(state, settings) {\n if (settings === void 0) {\n settings = {};\n }\n\n return Object.keys(state).map(rules(settings, state)).filter(isNotNullOrEmptyString).join('&');\n};\nvar templateObject_1, templateObject_2;","import * as tslib_1 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';\n\nvar toQueryString = function toQueryString(values) {\n return values.reduce(function (acc, _a) {\n var key = _a[0],\n value = _a[1];\n return acc.concat([key + \"=\" + value]);\n }, []);\n};\n\nvar toObject = function toObject(values) {\n return values.reduce(function (acc, _a) {\n var key = _a[0],\n value = _a[1];\n\n var _b;\n\n return tslib_1.__assign({}, acc, (_b = {}, _b[key] = value, _b));\n }, {});\n};\n\nvar pairwise = function pairwise(key) {\n return function (value) {\n return [key, value];\n };\n};\n\nvar empty = function empty() {\n return null;\n};\n\nvar isNotEmptyArray = function isNotEmptyArray(value) {\n return isPresent(value) && isArray(value) && value.length > 0;\n};\n\nvar has = function has(accessor) {\n return function (value) {\n return isPresent(accessor(value));\n };\n};\n\nvar isNotEmpty = function isNotEmpty(accessor) {\n return function (value) {\n return isNotEmptyArray(accessor(value));\n };\n};\n\nvar runOrEmpty = function runOrEmpty(predicate, fn) {\n return ifElse(predicate, fn, empty);\n};\n\nvar calcPage = function calcPage(_a) {\n var skip = _a.skip,\n take = _a.take;\n return Math.floor((skip || 0) / take) + 1;\n};\n\nvar formatDescriptors = function formatDescriptors(accessor, formatter) {\n return function (state) {\n return accessor(state).map(formatter).join(\"~\");\n };\n};\n\nvar removeAfter = function removeAfter(what) {\n return function (str) {\n return str.slice(0, str.indexOf(what));\n };\n};\n\nvar replace = function replace(patterns) {\n return compose.apply(void 0, patterns.map(function (_a) {\n var left = _a[0],\n right = _a[1];\n return function (s) {\n return s.replace(new RegExp(left, \"g\"), right);\n };\n }));\n};\n\nvar sanitizeDateLiterals = replace([[\"\\\"\", \"\"], [\":\", \"-\"]]);\nvar removeAfterDot = removeAfter(\".\");\n\nvar directionFormatter = function directionFormatter(_a) {\n var field = _a.field,\n _b = _a.dir,\n dir = _b === void 0 ? \"asc\" : _b;\n return field + \"-\" + dir;\n};\n\nvar aggregateFormatter = function aggregateFormatter(_a) {\n var field = _a.field,\n aggregate = _a.aggregate;\n return field + \"-\" + aggregate;\n};\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);\n\nvar prefixDateValue = function prefixDateValue(value) {\n return \"datetime'\" + value + \"'\";\n};\n\nvar formatDateValue = compose(prefixDateValue, removeAfterDot, sanitizeDateLiterals, JSON.stringify, toUTC);\n\nvar formatDate = function formatDate(_a) {\n var field = _a.field,\n value = _a.value,\n ignoreCase = _a.ignoreCase,\n operator = _a.operator;\n return {\n value: formatDateValue(value),\n field: field,\n ignoreCase: ignoreCase,\n operator: operator\n };\n};\n\nvar normalizeSort = function normalizeSort(state) {\n return Object.assign({}, state, {\n sort: (sort(state) || []).filter(function (_a) {\n var dir = _a.dir;\n return isNotNullOrEmptyString(dir);\n })\n });\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);\n\nvar hasField = function hasField(_a) {\n var field = _a.field;\n return isNotNullOrEmptyString(field);\n};\n\nvar filterFormatter = function filterFormatter(_a) {\n var field = _a.field,\n operator = _a.operator,\n value = _a.value;\n return field + \"~\" + operator + \"~\" + value;\n};\n\nvar dateFormatter = ifElse(isDateValue, compose(filterFormatter, formatDate), filterFormatter);\n\nvar typedFormatter = function typedFormatter(encode) {\n return runOrEmpty(hasField, ifElse(isStringValue, compose(filterFormatter, quote, encode ? encodeValue : identity), dateFormatter));\n};\n\nvar join = function join(_a) {\n var logic = _a.logic;\n return \"~\" + logic + \"~\";\n};\n\nvar serialize = function serialize(encode) {\n return serializeFilters(function (filter) {\n return ifElse(isCompositeFilterDescriptor, serialize(encode), typedFormatter(encode))(filter);\n }, join);\n};\n\nvar serializeFilter = function serializeFilter(_a, encode) {\n var filter = _a.filter;\n\n if (filter && filter.filters) {\n var filters = serialize(encode)(filter);\n\n if (filters.length) {\n return ['filter', filters];\n }\n }\n\n return null;\n};\n\nvar rules = function rules(state, encode) {\n if (encode === void 0) {\n encode = true;\n }\n\n return function (key) {\n 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/**\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 {DataRequestState} state - The state that will be serialized.\n * @returns {string} - The serialized state.\n *\n * @example\n * {% platform_content angular %}\n * ```ts-no-run\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 {\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 * ({\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-no-run\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 * \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 */\n\n\nexport var toDataSourceRequestString = function toDataSourceRequestString(state) {\n return toQueryString(Object.keys(state).map(rules(state)).filter(isPresent)).join('&');\n};\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 {DataRequestState} state - The state that will be serialized.\n * @returns {any} - The serialized state.\n */\n\nexport var toDataSourceRequest = function toDataSourceRequest(state) {\n return toObject(Object.keys(state).map(rules(state, false)).filter(isPresent));\n};","import { isPresent } from '../utils';\nimport { compose } from '../funcs'; // tslint:enable:max-line-length\n\nvar set = function set(field, target, value) {\n target[field] = value;\n return target;\n};\n\nvar toCamelCase = function toCamelCase(str) {\n return str.replace(/(^[A-Z])/g, function (_, g1) {\n return g1.toLowerCase();\n });\n};\n\nvar prop = function prop(fieldName) {\n return function (obj) {\n var value = obj[fieldName];\n\n if (isPresent(value)) {\n return value;\n }\n\n return obj[toCamelCase(fieldName)];\n };\n};\n\nvar member = prop(\"Member\");\nvar aggregateMethodName = prop(\"AggregateMethodName\");\nvar value = prop(\"Value\");\n\nvar convert = function convert(mapper) {\n return function (values) {\n return Object.keys(values).reduce(mapper.bind(null, values), {});\n };\n};\n\nvar translateAggregate = convert(function (source, acc, field) {\n return set(field.toLowerCase(), acc, source[field]);\n});\nvar translateAggregates = convert(function (source, acc, field) {\n return set(field, acc, translateAggregate(source[field]));\n});\n\nvar valueOrDefault = function valueOrDefault(value, defaultValue) {\n return isPresent(value) ? value : defaultValue;\n};\n\nvar normalizeGroup = function normalizeGroup(group) {\n 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 };\n};\n\nvar translateGroup = compose(function (_a) {\n var field = _a.field,\n hasSubgroups = _a.hasSubgroups,\n value = _a.value,\n aggregates = _a.aggregates,\n 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); // tslint:disable:max-line-length\n\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 */\n\nexport var translateDataSourceResultGroups = function translateDataSourceResultGroups(data) {\n return data.map(translateGroup);\n};\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\n\nexport var translateAggregateResults = function translateAggregateResults(data) {\n return (data || []).reduce(function (acc, x) {\n return set(member(x), acc, set(aggregateMethodName(x).toLowerCase(), acc[member(x)] || {}, value(x)));\n }, {});\n};","import { isPresent, isNumeric, isDate } from './utils';\nimport { getter } from './accessor';\n\nvar valueToString = function valueToString(value) {\n value = isPresent(value) && value.getTime ? value.getTime() : value;\n return value + \"\";\n};\n/**\n * @hidden\n */\n\n\nexport var groupCombinator = function groupCombinator(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] || {\n __position: position++,\n aggregates: {},\n items: [],\n value: groupValue\n };\n values.items.push(value);\n agg[field][key] = values;\n return agg;\n };\n};\n/**\n * @hidden\n */\n\nexport var expandAggregates = function expandAggregates(result) {\n if (result === void 0) {\n result = {};\n }\n\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};\n\nvar aggregatesFuncs = function aggregatesFuncs(name) {\n return {\n average: function average() {\n var value = 0;\n var count = 0;\n return {\n calc: function calc(curr) {\n if (isNumeric(curr)) {\n value += curr;\n count++;\n } else {\n value = curr;\n }\n },\n result: function result() {\n return isNumeric(value) ? value / count : value;\n }\n };\n },\n count: function count() {\n var state = 0;\n return {\n calc: function calc() {\n return state++;\n },\n result: function result() {\n return state;\n }\n };\n },\n max: function max() {\n var state = Number.NEGATIVE_INFINITY;\n return {\n calc: function calc(value) {\n state = isNumeric(state) || isDate(state) ? state : value;\n\n if (state < value && (isNumeric(value) || isDate(value))) {\n state = value;\n }\n },\n result: function result() {\n return state;\n }\n };\n },\n min: function min() {\n var state = Number.POSITIVE_INFINITY;\n return {\n calc: function calc(value) {\n state = isNumeric(state) || isDate(state) ? state : value;\n\n if (state > value && (isNumeric(value) || isDate(value))) {\n state = value;\n }\n },\n result: function result() {\n return state;\n }\n };\n },\n sum: function sum() {\n var state = 0;\n return {\n calc: function calc(value) {\n return state += value;\n },\n result: function result() {\n return state;\n }\n };\n }\n }[name]();\n};\n/**\n * @hidden\n */\n\n\nexport var aggregatesCombinator = function aggregatesCombinator(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) || 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) {\n return functions.reduce(function (agg, calc) {\n return calc(agg, value);\n }, state);\n };\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 */\n\nexport var concat = function concat(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 */\n\nexport var map = function map(transform) {\n return function (reduce) {\n return function (acc, curr, index) {\n return reduce(acc, transform(curr, index));\n };\n };\n};\n/**\n * @hidden\n * Returns a reducer that will filter out items which do not match the `Predicate`.\n */\n\nexport var filter = function filter(predicate) {\n return function (reduce) {\n return function (acc, curr) {\n return predicate(curr) ? reduce(acc, curr) : acc;\n };\n };\n};\n/**\n * @hidden\n */\n\nexport var isTransformerResult = function isTransformerResult(source) {\n return isPresent(source.__value);\n};\n\nvar reduced = function reduced(x) {\n if (isTransformerResult(x)) {\n return x;\n }\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 */\n\n\nexport var take = function take(count) {\n return function (reduce) {\n return function (acc, curr) {\n return count-- > 0 ? reduce(acc, curr) : reduced(acc);\n };\n };\n};\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\n\nexport var takeWhile = function takeWhile(predicate) {\n return function (reduce) {\n return function (acc, curr) {\n return predicate(curr) ? reduce(acc, curr) : reduced(acc);\n };\n };\n};\n/**\n * @hidden\n * Returns a reducer that will skip the specified number of items.\n */\n\nexport var skip = function skip(count) {\n return function (reduce) {\n return function (acc, curr) {\n return count-- <= 0 ? reduce(acc, curr) : acc;\n };\n };\n};\n/**\n * @hidden\n * Transforms the data by applying the supplied transformer.\n */\n\nexport var exec = function exec(transform, initialValue, data) {\n var result = initialValue;\n\n for (var idx = 0, length_1 = data.length; idx < length_1; idx++) {\n result = transform(result, data[idx], idx);\n\n if (isTransformerResult(result)) {\n result = result.__value;\n break;\n }\n }\n\n return result;\n};","import { isPresent, isString, isArray } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\n\nvar operatorMap = function operatorMap(key) {\n 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;\n};\n\nvar normalizeOperator = function normalizeOperator(descriptor) {\n if (descriptor.filters) {\n descriptor.filters = descriptor.filters.map(function (filter) {\n var result = Object.assign({}, filter);\n\n if (!isCompositeFilterDescriptor(filter) && isString(filter.operator)) {\n result.operator = operatorMap(filter.operator);\n }\n\n if (isCompositeFilterDescriptor(filter)) {\n normalizeOperator(result);\n }\n\n return result;\n });\n }\n};\n\nvar normalizeDescriptor = function normalizeDescriptor(descriptor) {\n if (!isCompositeFilterDescriptor(descriptor)) {\n return {\n filters: isArray(descriptor) ? descriptor : [descriptor],\n logic: \"and\"\n };\n }\n\n return Object.assign({}, descriptor);\n}; // tslint:disable:max-line-length\n\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\n\n\nexport var normalizeFilters = function normalizeFilters(descriptor) {\n if (isPresent(descriptor)) {\n descriptor = normalizeDescriptor(descriptor);\n normalizeOperator(descriptor);\n }\n\n return descriptor;\n};","import { exec, map, aggregatesCombinator, expandAggregates } from '../transducers';\nvar identity = map(function (x) {\n return x;\n}); // tslint:disable:max-line-length\n\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-no-run\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\n\nexport var aggregateBy = function aggregateBy(data, descriptors, transformers) {\n if (descriptors === void 0) {\n descriptors = [];\n }\n\n if (transformers === void 0) {\n transformers = identity;\n }\n\n var initialValue = {};\n\n if (!descriptors.length) {\n return initialValue;\n }\n\n var result = exec(transformers(aggregatesCombinator(descriptors)), initialValue, data);\n return expandAggregates(result);\n};","import { isCompositeFilterDescriptor } from \"./filter-descriptor.interface\";\nimport { getter } from \"../accessor\";\nimport { isFunction, isPresent, isDate, isString, isBlank, isNumeric } from \"../utils\";\nvar logic = {\n \"or\": {\n concat: function concat(acc, fn) {\n return function (a) {\n return acc(a) || fn(a);\n };\n },\n identity: function identity() {\n return false;\n }\n },\n \"and\": {\n concat: function concat(acc, fn) {\n return function (a) {\n return acc(a) && fn(a);\n };\n },\n identity: function identity() {\n return true;\n }\n }\n};\nvar operatorsMap = {\n contains: function contains(a, b) {\n return (a || \"\").indexOf(b) >= 0;\n },\n doesnotcontain: function doesnotcontain(a, b) {\n return (a || \"\").indexOf(b) === -1;\n },\n doesnotendwith: function doesnotendwith(a, b) {\n return (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) < 0;\n },\n doesnotstartwith: function doesnotstartwith(a, b) {\n return (a || \"\").lastIndexOf(b, 0) === -1;\n },\n endswith: function endswith(a, b) {\n return (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) >= 0;\n },\n eq: function eq(a, b) {\n return a === b;\n },\n gt: function gt(a, b) {\n return a > b;\n },\n gte: function gte(a, b) {\n return a >= b;\n },\n isempty: function isempty(a) {\n return a === '';\n },\n isnotempty: function isnotempty(a) {\n return a !== '';\n },\n isnotnull: function isnotnull(a) {\n return isPresent(a);\n },\n isnull: function isnull(a) {\n return isBlank(a);\n },\n lt: function lt(a, b) {\n return a < b;\n },\n lte: function lte(a, b) {\n return a <= b;\n },\n neq: function neq(a, b) {\n return a != b;\n },\n startswith: function startswith(a, b) {\n return (a || \"\").lastIndexOf(b, 0) === 0;\n }\n};\nvar dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\n\nvar convertValue = function convertValue(value, ignoreCase) {\n if (value != null && isString(value)) {\n var date = dateRegExp.exec(value);\n\n if (date) {\n return new Date(+date[1]).getTime();\n } else if (ignoreCase) {\n return value.toLowerCase();\n }\n } else if (value != null && isDate(value)) {\n return value.getTime();\n }\n\n return value;\n};\n\nvar typedGetter = function typedGetter(prop, value, ignoreCase) {\n if (!isPresent(value)) {\n return prop;\n }\n\n var acc = prop;\n\n if (isString(value)) {\n var date = dateRegExp.exec(value);\n\n if (date) {\n value = new Date(+date[1]);\n } else {\n acc = function acc(a) {\n var x = prop(a);\n\n if (typeof x === 'string' && ignoreCase) {\n return x.toLowerCase();\n } else {\n return isNumeric(x) ? x + \"\" : x;\n }\n };\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\n return acc;\n};\n\nvar transformFilter = function transformFilter(_a) {\n var field = _a.field,\n ignoreCase = _a.ignoreCase,\n value = _a.value,\n operator = _a.operator;\n field = !isPresent(field) ? function (a) {\n return a;\n } : 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) {\n return op(itemProp(a), value, ignoreCase);\n };\n};\n/**\n * @hidden\n */\n\n\nexport var transformCompositeFilter = function transformCompositeFilter(filter) {\n var combiner = logic[filter.logic];\n return filter.filters.filter(isPresent).map(function (x) {\n return isCompositeFilterDescriptor(x) ? transformCompositeFilter(x) : transformFilter(x);\n }).reduce(combiner.concat, combiner.identity);\n};","import { isPresent } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\nimport { normalizeFilters } from './filter.operators';\nimport { transformCompositeFilter } from \"./filter-no-eval\"; // tslint:disable:max-line-length\n\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-no-run\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\n\nexport var compileFilter = function compileFilter(descriptor) {\n if (!descriptor || descriptor.filters.length === 0) {\n return function () {\n return true;\n };\n }\n\n return transformCompositeFilter(descriptor);\n}; // tslint:disable:max-line-length\n\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-no-run\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\n\nexport var filterBy = function filterBy(data, descriptor) {\n if (!isPresent(descriptor) || isCompositeFilterDescriptor(descriptor) && descriptor.filters.length === 0) {\n return data;\n }\n\n return data.filter(compileFilter(normalizeFilters(descriptor)));\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 */\n\nexport var normalizeGroups = function normalizeGroups(descriptors) {\n descriptors = isArray(descriptors) ? descriptors : [descriptors];\n return descriptors.map(function (x) {\n return Object.assign({\n dir: \"asc\"\n }, x);\n });\n};\nvar identity = map(function (x) {\n return x;\n});\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> | T[])} - The grouped data.\n *\n * @example\n * ```ts-no-run\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 */\n\nexport var groupBy = function groupBy(data, descriptors, transformers, originalData) {\n if (descriptors === void 0) {\n descriptors = [];\n }\n\n if (transformers === void 0) {\n transformers = identity;\n }\n\n if (originalData === void 0) {\n originalData = data;\n }\n\n descriptors = normalizeGroups(descriptors);\n\n if (!descriptors.length) {\n return data;\n }\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\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\n result[group.__position] = {\n aggregates: aggregateResult,\n field: field,\n items: descriptors.length > 1 ? groupBy(group.items, descriptors.slice(1), identity, filteredData) : group.items,\n value: group.value\n };\n });\n });\n return result;\n};","export { isCompositeFilterDescriptor } from './filtering/filter-descriptor.interface';\nexport { toODataString } from './odata.operators';\nexport { toDataSourceRequestString, toDataSourceRequest } from './mvc/operators';\nexport { translateDataSourceResultGroups, translateAggregateResults } from './mvc/deserialization';\nexport { orderBy, process, distinct } from './array.operators';\nexport { getter } from './accessor';\nexport { filterBy, compileFilter } from './filtering/filter-expression.factory';\nexport { groupBy } from './grouping/group.operators';\nexport { composeSortDescriptors } from './sorting/sort-array.operator';\nexport { normalizeFilters } from './filtering/filter.operators';\nexport { normalizeGroups } from './grouping/group.operators';\nexport { aggregateBy } from './grouping/aggregate.operators';","/** @license React v16.11.0\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';\n\nvar h = require(\"object-assign\"),\n n = \"function\" === typeof Symbol && Symbol.for,\n p = n ? Symbol.for(\"react.element\") : 60103,\n q = n ? Symbol.for(\"react.portal\") : 60106,\n r = n ? Symbol.for(\"react.fragment\") : 60107,\n t = n ? Symbol.for(\"react.strict_mode\") : 60108,\n u = n ? Symbol.for(\"react.profiler\") : 60114,\n v = n ? Symbol.for(\"react.provider\") : 60109,\n w = n ? Symbol.for(\"react.context\") : 60110,\n x = n ? Symbol.for(\"react.forward_ref\") : 60112,\n y = n ? Symbol.for(\"react.suspense\") : 60113;\n\nn && Symbol.for(\"react.suspense_list\");\nvar z = n ? Symbol.for(\"react.memo\") : 60115,\n aa = n ? Symbol.for(\"react.lazy\") : 60116;\nn && Symbol.for(\"react.fundamental\");\nn && Symbol.for(\"react.responder\");\nn && Symbol.for(\"react.scope\");\nvar A = \"function\" === typeof Symbol && Symbol.iterator;\n\nfunction B(a) {\n for (var b = \"https://reactjs.org/docs/error-decoder.html?invariant=\" + a, c = 1; c < arguments.length; c++) {\n b += \"&args[]=\" + encodeURIComponent(arguments[c]);\n }\n\n 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.\";\n}\n\nvar C = {\n isMounted: function isMounted() {\n return !1;\n },\n enqueueForceUpdate: function enqueueForceUpdate() {},\n enqueueReplaceState: function enqueueReplaceState() {},\n enqueueSetState: function enqueueSetState() {}\n},\n D = {};\n\nfunction E(a, b, c) {\n this.props = a;\n this.context = b;\n this.refs = D;\n this.updater = c || C;\n}\n\nE.prototype.isReactComponent = {};\n\nE.prototype.setState = function (a, b) {\n if (\"object\" !== typeof a && \"function\" !== typeof a && null != a) throw Error(B(85));\n this.updater.enqueueSetState(this, a, b, \"setState\");\n};\n\nE.prototype.forceUpdate = function (a) {\n this.updater.enqueueForceUpdate(this, a, \"forceUpdate\");\n};\n\nfunction F() {}\n\nF.prototype = E.prototype;\n\nfunction G(a, b, c) {\n this.props = a;\n this.context = b;\n this.refs = D;\n this.updater = c || C;\n}\n\nvar H = G.prototype = new F();\nH.constructor = G;\nh(H, E.prototype);\nH.isPureReactComponent = !0;\nvar I = {\n current: null\n},\n J = {\n current: null\n},\n K = Object.prototype.hasOwnProperty,\n L = {\n key: !0,\n ref: !0,\n __self: !0,\n __source: !0\n};\n\nfunction M(a, b, c) {\n var e,\n d = {},\n g = null,\n l = null;\n if (null != b) for (e in void 0 !== b.ref && (l = b.ref), void 0 !== b.key && (g = \"\" + b.key), b) {\n K.call(b, e) && !L.hasOwnProperty(e) && (d[e] = b[e]);\n }\n var f = arguments.length - 2;\n if (1 === f) d.children = c;else if (1 < f) {\n for (var k = Array(f), m = 0; m < f; m++) {\n k[m] = arguments[m + 2];\n }\n\n d.children = k;\n }\n if (a && a.defaultProps) for (e in f = a.defaultProps, f) {\n void 0 === d[e] && (d[e] = f[e]);\n }\n return {\n $$typeof: p,\n type: a,\n key: g,\n ref: l,\n props: d,\n _owner: J.current\n };\n}\n\nfunction ba(a, b) {\n return {\n $$typeof: p,\n type: a.type,\n key: b,\n ref: a.ref,\n props: a.props,\n _owner: a._owner\n };\n}\n\nfunction N(a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === p;\n}\n\nfunction escape(a) {\n var b = {\n \"=\": \"=0\",\n \":\": \"=2\"\n };\n return \"$\" + (\"\" + a).replace(/[=:]/g, function (a) {\n return b[a];\n });\n}\n\nvar O = /\\/+/g,\n P = [];\n\nfunction Q(a, b, c, e) {\n if (P.length) {\n var d = P.pop();\n d.result = a;\n d.keyPrefix = b;\n d.func = c;\n d.context = e;\n d.count = 0;\n return d;\n }\n\n return {\n result: a,\n keyPrefix: b,\n func: c,\n context: e,\n count: 0\n };\n}\n\nfunction R(a) {\n a.result = null;\n a.keyPrefix = null;\n a.func = null;\n a.context = null;\n a.count = 0;\n 10 > P.length && P.push(a);\n}\n\nfunction S(a, b, c, e) {\n var d = typeof a;\n if (\"undefined\" === d || \"boolean\" === d) a = null;\n var g = !1;\n if (null === a) g = !0;else switch (d) {\n case \"string\":\n case \"number\":\n g = !0;\n break;\n\n case \"object\":\n switch (a.$$typeof) {\n case p:\n case q:\n g = !0;\n }\n\n }\n if (g) return c(e, a, \"\" === b ? \".\" + T(a, 0) : b), 1;\n g = 0;\n b = \"\" === b ? \".\" : b + \":\";\n if (Array.isArray(a)) for (var l = 0; l < a.length; l++) {\n d = a[l];\n var f = b + T(d, l);\n g += S(d, f, c, e);\n } else if (null === a || \"object\" !== typeof a ? f = null : (f = A && a[A] || a[\"@@iterator\"], f = \"function\" === typeof f ? f : null), \"function\" === typeof f) for (a = f.call(a), l = 0; !(d = a.next()).done;) {\n d = d.value, f = b + T(d, l++), g += S(d, f, c, e);\n } else if (\"object\" === d) throw c = \"\" + a, Error(B(31, \"[object Object]\" === c ? \"object with keys {\" + Object.keys(a).join(\", \") + \"}\" : c, \"\"));\n return g;\n}\n\nfunction U(a, b, c) {\n return null == a ? 0 : S(a, \"\", b, c);\n}\n\nfunction T(a, b) {\n return \"object\" === typeof a && null !== a && null != a.key ? escape(a.key) : b.toString(36);\n}\n\nfunction ca(a, b) {\n a.func.call(a.context, b, a.count++);\n}\n\nfunction da(a, b, c) {\n var e = a.result,\n d = a.keyPrefix;\n a = a.func.call(a.context, b, a.count++);\n Array.isArray(a) ? V(a, e, c, function (a) {\n return a;\n }) : null != a && (N(a) && (a = ba(a, d + (!a.key || b && b.key === a.key ? \"\" : (\"\" + a.key).replace(O, \"$&/\") + \"/\") + c)), e.push(a));\n}\n\nfunction V(a, b, c, e, d) {\n var g = \"\";\n null != c && (g = (\"\" + c).replace(O, \"$&/\") + \"/\");\n b = Q(b, g, e, d);\n U(a, da, b);\n R(b);\n}\n\nfunction W() {\n var a = I.current;\n if (null === a) throw Error(B(321));\n return a;\n}\n\nvar X = {\n Children: {\n map: function map(a, b, c) {\n if (null == a) return a;\n var e = [];\n V(a, e, null, b, c);\n return e;\n },\n forEach: function forEach(a, b, c) {\n if (null == a) return a;\n b = Q(null, null, b, c);\n U(a, ca, b);\n R(b);\n },\n count: function count(a) {\n return U(a, function () {\n return null;\n }, null);\n },\n toArray: function toArray(a) {\n var b = [];\n V(a, b, null, function (a) {\n return a;\n });\n return b;\n },\n only: function only(a) {\n if (!N(a)) throw Error(B(143));\n return a;\n }\n },\n createRef: function createRef() {\n return {\n current: null\n };\n },\n Component: E,\n PureComponent: G,\n createContext: function createContext(a, b) {\n void 0 === b && (b = null);\n a = {\n $$typeof: w,\n _calculateChangedBits: b,\n _currentValue: a,\n _currentValue2: a,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n a.Provider = {\n $$typeof: v,\n _context: a\n };\n return a.Consumer = a;\n },\n forwardRef: function forwardRef(a) {\n return {\n $$typeof: x,\n render: a\n };\n },\n lazy: function lazy(a) {\n return {\n $$typeof: aa,\n _ctor: a,\n _status: -1,\n _result: null\n };\n },\n memo: function memo(a, b) {\n return {\n $$typeof: z,\n type: a,\n compare: void 0 === b ? null : b\n };\n },\n useCallback: function useCallback(a, b) {\n return W().useCallback(a, b);\n },\n useContext: function useContext(a, b) {\n return W().useContext(a, b);\n },\n useEffect: function useEffect(a, b) {\n return W().useEffect(a, b);\n },\n useImperativeHandle: function useImperativeHandle(a, b, c) {\n return W().useImperativeHandle(a, b, c);\n },\n useDebugValue: function useDebugValue() {},\n useLayoutEffect: function useLayoutEffect(a, b) {\n return W().useLayoutEffect(a, b);\n },\n useMemo: function useMemo(a, b) {\n return W().useMemo(a, b);\n },\n useReducer: function useReducer(a, b, c) {\n return W().useReducer(a, b, c);\n },\n useRef: function useRef(a) {\n return W().useRef(a);\n },\n useState: function useState(a) {\n return W().useState(a);\n },\n Fragment: r,\n Profiler: u,\n StrictMode: t,\n Suspense: y,\n createElement: M,\n cloneElement: function cloneElement(a, b, c) {\n if (null === a || void 0 === a) throw Error(B(267, a));\n var e = h({}, a.props),\n d = a.key,\n g = a.ref,\n l = a._owner;\n\n if (null != b) {\n void 0 !== b.ref && (g = b.ref, l = J.current);\n void 0 !== b.key && (d = \"\" + b.key);\n if (a.type && a.type.defaultProps) var f = a.type.defaultProps;\n\n for (k in b) {\n K.call(b, k) && !L.hasOwnProperty(k) && (e[k] = void 0 === b[k] && void 0 !== f ? f[k] : b[k]);\n }\n }\n\n var k = arguments.length - 2;\n if (1 === k) e.children = c;else if (1 < k) {\n f = Array(k);\n\n for (var m = 0; m < k; m++) {\n f[m] = arguments[m + 2];\n }\n\n e.children = f;\n }\n return {\n $$typeof: p,\n type: a.type,\n key: d,\n ref: g,\n props: e,\n _owner: l\n };\n },\n createFactory: function createFactory(a) {\n var b = M.bind(null, a);\n b.type = a;\n return b;\n },\n isValidElement: N,\n version: \"16.11.0\",\n __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: {\n ReactCurrentDispatcher: I,\n ReactCurrentBatchConfig: {\n suspense: null\n },\n ReactCurrentOwner: J,\n IsSomeRendererActing: {\n current: !1\n },\n assign: h\n }\n},\n Y = {\n default: X\n},\n Z = Y && X || Y;\nmodule.exports = Z.default || Z;","/** @license React v16.11.0\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/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';\n\nvar aa = require(\"react\"),\n n = require(\"object-assign\"),\n q = require(\"scheduler\");\n\nfunction u(a) {\n for (var b = \"https://reactjs.org/docs/error-decoder.html?invariant=\" + a, c = 1; c < arguments.length; c++) {\n b += \"&args[]=\" + encodeURIComponent(arguments[c]);\n }\n\n 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.\";\n}\n\nif (!aa) throw Error(u(227));\nvar ba = null,\n ca = {};\n\nfunction da() {\n if (ba) for (var a in ca) {\n var b = ca[a],\n c = ba.indexOf(a);\n if (!(-1 < c)) throw Error(u(96, a));\n\n if (!ea[c]) {\n if (!b.extractEvents) throw Error(u(97, a));\n ea[c] = b;\n c = b.eventTypes;\n\n for (var d in c) {\n var e = void 0;\n var f = c[d],\n g = b,\n h = d;\n if (fa.hasOwnProperty(h)) throw Error(u(99, h));\n fa[h] = f;\n var k = f.phasedRegistrationNames;\n\n if (k) {\n for (e in k) {\n k.hasOwnProperty(e) && ha(k[e], g, h);\n }\n\n e = !0;\n } else f.registrationName ? (ha(f.registrationName, g, h), e = !0) : e = !1;\n\n if (!e) throw Error(u(98, d, a));\n }\n }\n }\n}\n\nfunction ha(a, b, c) {\n if (ia[a]) throw Error(u(100, a));\n ia[a] = b;\n ja[a] = b.eventTypes[c].dependencies;\n}\n\nvar ea = [],\n fa = {},\n ia = {},\n ja = {};\n\nfunction ka(a, b, c, d, e, f, g, h, k) {\n var l = Array.prototype.slice.call(arguments, 3);\n\n try {\n b.apply(c, l);\n } catch (m) {\n this.onError(m);\n }\n}\n\nvar la = !1,\n ma = null,\n na = !1,\n oa = null,\n pa = {\n onError: function onError(a) {\n la = !0;\n ma = a;\n }\n};\n\nfunction qa(a, b, c, d, e, f, g, h, k) {\n la = !1;\n ma = null;\n ka.apply(pa, arguments);\n}\n\nfunction ra(a, b, c, d, e, f, g, h, k) {\n qa.apply(this, arguments);\n\n if (la) {\n if (la) {\n var l = ma;\n la = !1;\n ma = null;\n } else throw Error(u(198));\n\n na || (na = !0, oa = l);\n }\n}\n\nvar sa = null,\n ua = null,\n va = null;\n\nfunction wa(a, b, c) {\n var d = a.type || \"unknown-event\";\n a.currentTarget = va(c);\n ra(d, b, void 0, a);\n a.currentTarget = null;\n}\n\nfunction xa(a, b) {\n if (null == b) throw Error(u(30));\n if (null == a) return b;\n\n if (Array.isArray(a)) {\n if (Array.isArray(b)) return a.push.apply(a, b), a;\n a.push(b);\n return a;\n }\n\n return Array.isArray(b) ? [a].concat(b) : [a, b];\n}\n\nfunction ya(a, b, c) {\n Array.isArray(a) ? a.forEach(b, c) : a && b.call(c, a);\n}\n\nvar za = null;\n\nfunction Aa(a) {\n if (a) {\n var b = a._dispatchListeners,\n c = a._dispatchInstances;\n if (Array.isArray(b)) for (var d = 0; d < b.length && !a.isPropagationStopped(); d++) {\n wa(a, b[d], c[d]);\n } else b && wa(a, b, c);\n a._dispatchListeners = null;\n a._dispatchInstances = null;\n a.isPersistent() || a.constructor.release(a);\n }\n}\n\nfunction Ba(a) {\n null !== a && (za = xa(za, a));\n a = za;\n za = null;\n\n if (a) {\n ya(a, Aa);\n if (za) throw Error(u(95));\n if (na) throw a = oa, na = !1, oa = null, a;\n }\n}\n\nvar Ca = {\n injectEventPluginOrder: function injectEventPluginOrder(a) {\n if (ba) throw Error(u(101));\n ba = Array.prototype.slice.call(a);\n da();\n },\n injectEventPluginsByName: function injectEventPluginsByName(a) {\n var b = !1,\n c;\n\n for (c in a) {\n if (a.hasOwnProperty(c)) {\n var d = a[c];\n\n if (!ca.hasOwnProperty(c) || ca[c] !== d) {\n if (ca[c]) throw Error(u(102, c));\n ca[c] = d;\n b = !0;\n }\n }\n }\n\n b && da();\n }\n};\n\nfunction Da(a, b) {\n var c = a.stateNode;\n if (!c) return null;\n var d = sa(c);\n if (!d) return null;\n c = d[b];\n\n a: switch (b) {\n case \"onClick\":\n case \"onClickCapture\":\n case \"onDoubleClick\":\n case \"onDoubleClickCapture\":\n case \"onMouseDown\":\n case \"onMouseDownCapture\":\n case \"onMouseMove\":\n case \"onMouseMoveCapture\":\n case \"onMouseUp\":\n case \"onMouseUpCapture\":\n (d = !d.disabled) || (a = a.type, d = !(\"button\" === a || \"input\" === a || \"select\" === a || \"textarea\" === a));\n a = !d;\n break a;\n\n default:\n a = !1;\n }\n\n if (a) return null;\n if (c && \"function\" !== typeof c) throw Error(u(231, b, typeof c));\n return c;\n}\n\nvar Ea = aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\nEa.hasOwnProperty(\"ReactCurrentDispatcher\") || (Ea.ReactCurrentDispatcher = {\n current: null\n});\nEa.hasOwnProperty(\"ReactCurrentBatchConfig\") || (Ea.ReactCurrentBatchConfig = {\n suspense: null\n});\nvar Fa = /^(.*)[\\\\\\/]/,\n w = \"function\" === typeof Symbol && Symbol.for,\n Ga = w ? Symbol.for(\"react.element\") : 60103,\n Ha = w ? Symbol.for(\"react.portal\") : 60106,\n Ia = w ? Symbol.for(\"react.fragment\") : 60107,\n Ja = w ? Symbol.for(\"react.strict_mode\") : 60108,\n Ka = w ? Symbol.for(\"react.profiler\") : 60114,\n La = w ? Symbol.for(\"react.provider\") : 60109,\n Ma = w ? Symbol.for(\"react.context\") : 60110,\n Na = w ? Symbol.for(\"react.concurrent_mode\") : 60111,\n Oa = w ? Symbol.for(\"react.forward_ref\") : 60112,\n Pa = w ? Symbol.for(\"react.suspense\") : 60113,\n Qa = w ? Symbol.for(\"react.suspense_list\") : 60120,\n Ra = w ? Symbol.for(\"react.memo\") : 60115,\n Sa = w ? Symbol.for(\"react.lazy\") : 60116;\nw && Symbol.for(\"react.fundamental\");\nw && Symbol.for(\"react.responder\");\nw && Symbol.for(\"react.scope\");\nvar Ta = \"function\" === typeof Symbol && Symbol.iterator;\n\nfunction Ua(a) {\n if (null === a || \"object\" !== typeof a) return null;\n a = Ta && a[Ta] || a[\"@@iterator\"];\n return \"function\" === typeof a ? a : null;\n}\n\nfunction Va(a) {\n if (-1 === a._status) {\n a._status = 0;\n var b = a._ctor;\n b = b();\n a._result = b;\n b.then(function (b) {\n 0 === a._status && (b = b.default, a._status = 1, a._result = b);\n }, function (b) {\n 0 === a._status && (a._status = 2, a._result = b);\n });\n }\n}\n\nfunction Wa(a) {\n if (null == a) return null;\n if (\"function\" === typeof a) return a.displayName || a.name || null;\n if (\"string\" === typeof a) return a;\n\n switch (a) {\n case Ia:\n return \"Fragment\";\n\n case Ha:\n return \"Portal\";\n\n case Ka:\n return \"Profiler\";\n\n case Ja:\n return \"StrictMode\";\n\n case Pa:\n return \"Suspense\";\n\n case Qa:\n return \"SuspenseList\";\n }\n\n if (\"object\" === typeof a) switch (a.$$typeof) {\n case Ma:\n return \"Context.Consumer\";\n\n case La:\n return \"Context.Provider\";\n\n case Oa:\n var b = a.render;\n b = b.displayName || b.name || \"\";\n return a.displayName || (\"\" !== b ? \"ForwardRef(\" + b + \")\" : \"ForwardRef\");\n\n case Ra:\n return Wa(a.type);\n\n case Sa:\n if (a = 1 === a._status ? a._result : null) return Wa(a);\n }\n return null;\n}\n\nfunction Xa(a) {\n var b = \"\";\n\n do {\n a: switch (a.tag) {\n case 3:\n case 4:\n case 6:\n case 7:\n case 10:\n case 9:\n var c = \"\";\n break a;\n\n default:\n var d = a._debugOwner,\n e = a._debugSource,\n f = Wa(a.type);\n c = null;\n d && (c = Wa(d.type));\n d = f;\n f = \"\";\n e ? f = \" (at \" + e.fileName.replace(Fa, \"\") + \":\" + e.lineNumber + \")\" : c && (f = \" (created by \" + c + \")\");\n c = \"\\n in \" + (d || \"Unknown\") + f;\n }\n\n b += c;\n a = a.return;\n } while (a);\n\n return b;\n}\n\nvar Ya = !(\"undefined\" === typeof window || \"undefined\" === typeof window.document || \"undefined\" === typeof window.document.createElement),\n Za = null,\n $a = null,\n ab = null;\n\nfunction bb(a) {\n if (a = ua(a)) {\n if (\"function\" !== typeof Za) throw Error(u(280));\n var b = sa(a.stateNode);\n Za(a.stateNode, a.type, b);\n }\n}\n\nfunction cb(a) {\n $a ? ab ? ab.push(a) : ab = [a] : $a = a;\n}\n\nfunction db() {\n if ($a) {\n var a = $a,\n b = ab;\n ab = $a = null;\n bb(a);\n if (b) for (a = 0; a < b.length; a++) {\n bb(b[a]);\n }\n }\n}\n\nfunction eb(a, b) {\n return a(b);\n}\n\nfunction fb(a, b, c, d) {\n return a(b, c, d);\n}\n\nfunction gb() {}\n\nvar hb = eb,\n ib = !1,\n jb = !1;\n\nfunction kb() {\n if (null !== $a || null !== ab) gb(), db();\n}\n\nnew Map();\nvar lb = /^[: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]*$/,\n mb = Object.prototype.hasOwnProperty,\n nb = {},\n ob = {};\n\nfunction pb(a) {\n if (mb.call(ob, a)) return !0;\n if (mb.call(nb, a)) return !1;\n if (lb.test(a)) return ob[a] = !0;\n nb[a] = !0;\n return !1;\n}\n\nfunction qb(a, b, c, d) {\n if (null !== c && 0 === c.type) return !1;\n\n switch (typeof b) {\n case \"function\":\n case \"symbol\":\n return !0;\n\n case \"boolean\":\n if (d) return !1;\n if (null !== c) return !c.acceptsBooleans;\n a = a.toLowerCase().slice(0, 5);\n return \"data-\" !== a && \"aria-\" !== a;\n\n default:\n return !1;\n }\n}\n\nfunction rb(a, b, c, d) {\n if (null === b || \"undefined\" === typeof b || qb(a, b, c, d)) return !0;\n if (d) return !1;\n if (null !== c) switch (c.type) {\n case 3:\n return !b;\n\n case 4:\n return !1 === b;\n\n case 5:\n return isNaN(b);\n\n case 6:\n return isNaN(b) || 1 > b;\n }\n return !1;\n}\n\nfunction B(a, b, c, d, e, f) {\n this.acceptsBooleans = 2 === b || 3 === b || 4 === b;\n this.attributeName = d;\n this.attributeNamespace = e;\n this.mustUseProperty = c;\n this.propertyName = a;\n this.type = b;\n this.sanitizeURL = f;\n}\n\nvar D = {};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function (a) {\n D[a] = new B(a, 0, !1, a, null, !1);\n});\n[[\"acceptCharset\", \"accept-charset\"], [\"className\", \"class\"], [\"htmlFor\", \"for\"], [\"httpEquiv\", \"http-equiv\"]].forEach(function (a) {\n var b = a[0];\n D[b] = new B(b, 1, !1, a[1], null, !1);\n});\n[\"contentEditable\", \"draggable\", \"spellCheck\", \"value\"].forEach(function (a) {\n D[a] = new B(a, 2, !1, a.toLowerCase(), null, !1);\n});\n[\"autoReverse\", \"externalResourcesRequired\", \"focusable\", \"preserveAlpha\"].forEach(function (a) {\n D[a] = new B(a, 2, !1, a, null, !1);\n});\n\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function (a) {\n D[a] = new B(a, 3, !1, a.toLowerCase(), null, !1);\n});\n[\"checked\", \"multiple\", \"muted\", \"selected\"].forEach(function (a) {\n D[a] = new B(a, 3, !0, a, null, !1);\n});\n[\"capture\", \"download\"].forEach(function (a) {\n D[a] = new B(a, 4, !1, a, null, !1);\n});\n[\"cols\", \"rows\", \"size\", \"span\"].forEach(function (a) {\n D[a] = new B(a, 6, !1, a, null, !1);\n});\n[\"rowSpan\", \"start\"].forEach(function (a) {\n D[a] = new B(a, 5, !1, a.toLowerCase(), null, !1);\n});\nvar sb = /[\\-:]([a-z])/g;\n\nfunction tb(a) {\n return a[1].toUpperCase();\n}\n\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) {\n var b = a.replace(sb, tb);\n D[b] = new B(b, 1, !1, a, null, !1);\n});\n\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function (a) {\n var b = a.replace(sb, tb);\n D[b] = new B(b, 1, !1, a, \"http://www.w3.org/1999/xlink\", !1);\n});\n[\"xml:base\", \"xml:lang\", \"xml:space\"].forEach(function (a) {\n var b = a.replace(sb, tb);\n D[b] = new B(b, 1, !1, a, \"http://www.w3.org/XML/1998/namespace\", !1);\n});\n[\"tabIndex\", \"crossOrigin\"].forEach(function (a) {\n D[a] = new B(a, 1, !1, a.toLowerCase(), null, !1);\n});\nD.xlinkHref = new B(\"xlinkHref\", 1, !1, \"xlink:href\", \"http://www.w3.org/1999/xlink\", !0);\n[\"src\", \"href\", \"action\", \"formAction\"].forEach(function (a) {\n D[a] = new B(a, 1, !1, a.toLowerCase(), null, !0);\n});\n\nfunction ub(a) {\n switch (typeof a) {\n case \"boolean\":\n case \"number\":\n case \"object\":\n case \"string\":\n case \"undefined\":\n return a;\n\n default:\n return \"\";\n }\n}\n\nfunction vb(a, b, c, d) {\n var e = D.hasOwnProperty(b) ? D[b] : null;\n 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;\n f || (rb(b, c, e, d) && (c = null), d || null === e ? pb(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))));\n}\n\nfunction wb(a) {\n var b = a.type;\n return (a = a.nodeName) && \"input\" === a.toLowerCase() && (\"checkbox\" === b || \"radio\" === b);\n}\n\nfunction xb(a) {\n var b = wb(a) ? \"checked\" : \"value\",\n c = Object.getOwnPropertyDescriptor(a.constructor.prototype, b),\n d = \"\" + a[b];\n\n if (!a.hasOwnProperty(b) && \"undefined\" !== typeof c && \"function\" === typeof c.get && \"function\" === typeof c.set) {\n var e = c.get,\n f = c.set;\n Object.defineProperty(a, b, {\n configurable: !0,\n get: function get() {\n return e.call(this);\n },\n set: function set(a) {\n d = \"\" + a;\n f.call(this, a);\n }\n });\n Object.defineProperty(a, b, {\n enumerable: c.enumerable\n });\n return {\n getValue: function getValue() {\n return d;\n },\n setValue: function setValue(a) {\n d = \"\" + a;\n },\n stopTracking: function stopTracking() {\n a._valueTracker = null;\n delete a[b];\n }\n };\n }\n}\n\nfunction yb(a) {\n a._valueTracker || (a._valueTracker = xb(a));\n}\n\nfunction zb(a) {\n if (!a) return !1;\n var b = a._valueTracker;\n if (!b) return !0;\n var c = b.getValue();\n var d = \"\";\n a && (d = wb(a) ? a.checked ? \"true\" : \"false\" : a.value);\n a = d;\n return a !== c ? (b.setValue(a), !0) : !1;\n}\n\nfunction Ab(a, b) {\n var c = b.checked;\n return n({}, b, {\n defaultChecked: void 0,\n defaultValue: void 0,\n value: void 0,\n checked: null != c ? c : a._wrapperState.initialChecked\n });\n}\n\nfunction Bb(a, b) {\n var c = null == b.defaultValue ? \"\" : b.defaultValue,\n d = null != b.checked ? b.checked : b.defaultChecked;\n c = ub(null != b.value ? b.value : c);\n a._wrapperState = {\n initialChecked: d,\n initialValue: c,\n controlled: \"checkbox\" === b.type || \"radio\" === b.type ? null != b.checked : null != b.value\n };\n}\n\nfunction Cb(a, b) {\n b = b.checked;\n null != b && vb(a, \"checked\", b, !1);\n}\n\nfunction Eb(a, b) {\n Cb(a, b);\n var c = ub(b.value),\n d = b.type;\n if (null != c) {\n if (\"number\" === d) {\n if (0 === c && \"\" === a.value || a.value != c) a.value = \"\" + c;\n } else a.value !== \"\" + c && (a.value = \"\" + c);\n } else if (\"submit\" === d || \"reset\" === d) {\n a.removeAttribute(\"value\");\n return;\n }\n b.hasOwnProperty(\"value\") ? Fb(a, b.type, c) : b.hasOwnProperty(\"defaultValue\") && Fb(a, b.type, ub(b.defaultValue));\n null == b.checked && null != b.defaultChecked && (a.defaultChecked = !!b.defaultChecked);\n}\n\nfunction Gb(a, b, c) {\n if (b.hasOwnProperty(\"value\") || b.hasOwnProperty(\"defaultValue\")) {\n var d = b.type;\n if (!(\"submit\" !== d && \"reset\" !== d || void 0 !== b.value && null !== b.value)) return;\n b = \"\" + a._wrapperState.initialValue;\n c || b === a.value || (a.value = b);\n a.defaultValue = b;\n }\n\n c = a.name;\n \"\" !== c && (a.name = \"\");\n a.defaultChecked = !a.defaultChecked;\n a.defaultChecked = !!a._wrapperState.initialChecked;\n \"\" !== c && (a.name = c);\n}\n\nfunction Fb(a, b, c) {\n if (\"number\" !== b || a.ownerDocument.activeElement !== a) null == c ? a.defaultValue = \"\" + a._wrapperState.initialValue : a.defaultValue !== \"\" + c && (a.defaultValue = \"\" + c);\n}\n\nfunction Hb(a) {\n var b = \"\";\n aa.Children.forEach(a, function (a) {\n null != a && (b += a);\n });\n return b;\n}\n\nfunction Ib(a, b) {\n a = n({\n children: void 0\n }, b);\n if (b = Hb(b.children)) a.children = b;\n return a;\n}\n\nfunction Jb(a, b, c, d) {\n a = a.options;\n\n if (b) {\n b = {};\n\n for (var e = 0; e < c.length; e++) {\n b[\"$\" + c[e]] = !0;\n }\n\n for (c = 0; c < a.length; c++) {\n e = b.hasOwnProperty(\"$\" + a[c].value), a[c].selected !== e && (a[c].selected = e), e && d && (a[c].defaultSelected = !0);\n }\n } else {\n c = \"\" + ub(c);\n b = null;\n\n for (e = 0; e < a.length; e++) {\n if (a[e].value === c) {\n a[e].selected = !0;\n d && (a[e].defaultSelected = !0);\n return;\n }\n\n null !== b || a[e].disabled || (b = a[e]);\n }\n\n null !== b && (b.selected = !0);\n }\n}\n\nfunction Kb(a, b) {\n if (null != b.dangerouslySetInnerHTML) throw Error(u(91));\n return n({}, b, {\n value: void 0,\n defaultValue: void 0,\n children: \"\" + a._wrapperState.initialValue\n });\n}\n\nfunction Lb(a, b) {\n var c = b.value;\n\n if (null == c) {\n c = b.defaultValue;\n b = b.children;\n\n if (null != b) {\n if (null != c) throw Error(u(92));\n\n if (Array.isArray(b)) {\n if (!(1 >= b.length)) throw Error(u(93));\n b = b[0];\n }\n\n c = b;\n }\n\n null == c && (c = \"\");\n }\n\n a._wrapperState = {\n initialValue: ub(c)\n };\n}\n\nfunction Mb(a, b) {\n var c = ub(b.value),\n d = ub(b.defaultValue);\n null != c && (c = \"\" + c, c !== a.value && (a.value = c), null == b.defaultValue && a.defaultValue !== c && (a.defaultValue = c));\n null != d && (a.defaultValue = \"\" + d);\n}\n\nfunction Nb(a) {\n var b = a.textContent;\n b === a._wrapperState.initialValue && \"\" !== b && null !== b && (a.value = b);\n}\n\nvar Ob = {\n html: \"http://www.w3.org/1999/xhtml\",\n mathml: \"http://www.w3.org/1998/Math/MathML\",\n svg: \"http://www.w3.org/2000/svg\"\n};\n\nfunction Pb(a) {\n switch (a) {\n case \"svg\":\n return \"http://www.w3.org/2000/svg\";\n\n case \"math\":\n return \"http://www.w3.org/1998/Math/MathML\";\n\n default:\n return \"http://www.w3.org/1999/xhtml\";\n }\n}\n\nfunction Qb(a, b) {\n return null == a || \"http://www.w3.org/1999/xhtml\" === a ? Pb(b) : \"http://www.w3.org/2000/svg\" === a && \"foreignObject\" === b ? \"http://www.w3.org/1999/xhtml\" : a;\n}\n\nvar Rb,\n Sb = function (a) {\n return \"undefined\" !== typeof MSApp && MSApp.execUnsafeLocalFunction ? function (b, c, d, e) {\n MSApp.execUnsafeLocalFunction(function () {\n return a(b, c, d, e);\n });\n } : a;\n}(function (a, b) {\n if (a.namespaceURI !== Ob.svg || \"innerHTML\" in a) a.innerHTML = b;else {\n Rb = Rb || document.createElement(\"div\");\n Rb.innerHTML = \"\" + b.valueOf().toString() + \"\";\n\n for (b = Rb.firstChild; a.firstChild;) {\n a.removeChild(a.firstChild);\n }\n\n for (; b.firstChild;) {\n a.appendChild(b.firstChild);\n }\n }\n});\n\nfunction Tb(a, b) {\n if (b) {\n var c = a.firstChild;\n\n if (c && c === a.lastChild && 3 === c.nodeType) {\n c.nodeValue = b;\n return;\n }\n }\n\n a.textContent = b;\n}\n\nfunction Ub(a, b) {\n var c = {};\n c[a.toLowerCase()] = b.toLowerCase();\n c[\"Webkit\" + a] = \"webkit\" + b;\n c[\"Moz\" + a] = \"moz\" + b;\n return c;\n}\n\nvar Vb = {\n animationend: Ub(\"Animation\", \"AnimationEnd\"),\n animationiteration: Ub(\"Animation\", \"AnimationIteration\"),\n animationstart: Ub(\"Animation\", \"AnimationStart\"),\n transitionend: Ub(\"Transition\", \"TransitionEnd\")\n},\n Wb = {},\n Xb = {};\nYa && (Xb = document.createElement(\"div\").style, \"AnimationEvent\" in window || (delete Vb.animationend.animation, delete Vb.animationiteration.animation, delete Vb.animationstart.animation), \"TransitionEvent\" in window || delete Vb.transitionend.transition);\n\nfunction Yb(a) {\n if (Wb[a]) return Wb[a];\n if (!Vb[a]) return a;\n var b = Vb[a],\n c;\n\n for (c in b) {\n if (b.hasOwnProperty(c) && c in Xb) return Wb[a] = b[c];\n }\n\n return a;\n}\n\nvar Zb = Yb(\"animationend\"),\n $b = Yb(\"animationiteration\"),\n ac = Yb(\"animationstart\"),\n bc = Yb(\"transitionend\"),\n dc = \"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \");\n\nfunction ec(a) {\n var b = a,\n c = a;\n if (a.alternate) for (; b.return;) {\n b = b.return;\n } else {\n a = b;\n\n do {\n b = a, 0 !== (b.effectTag & 1026) && (c = b.return), a = b.return;\n } while (a);\n }\n return 3 === b.tag ? c : null;\n}\n\nfunction fc(a) {\n if (13 === a.tag) {\n var b = a.memoizedState;\n null === b && (a = a.alternate, null !== a && (b = a.memoizedState));\n if (null !== b) return b.dehydrated;\n }\n\n return null;\n}\n\nfunction gc(a) {\n if (ec(a) !== a) throw Error(u(188));\n}\n\nfunction hc(a) {\n var b = a.alternate;\n\n if (!b) {\n b = ec(a);\n if (null === b) throw Error(u(188));\n return b !== a ? null : a;\n }\n\n for (var c = a, d = b;;) {\n var e = c.return;\n if (null === e) break;\n var f = e.alternate;\n\n if (null === f) {\n d = e.return;\n\n if (null !== d) {\n c = d;\n continue;\n }\n\n break;\n }\n\n if (e.child === f.child) {\n for (f = e.child; f;) {\n if (f === c) return gc(e), a;\n if (f === d) return gc(e), b;\n f = f.sibling;\n }\n\n throw Error(u(188));\n }\n\n if (c.return !== d.return) c = e, d = f;else {\n for (var g = !1, h = e.child; h;) {\n if (h === c) {\n g = !0;\n c = e;\n d = f;\n break;\n }\n\n if (h === d) {\n g = !0;\n d = e;\n c = f;\n break;\n }\n\n h = h.sibling;\n }\n\n if (!g) {\n for (h = f.child; h;) {\n if (h === c) {\n g = !0;\n c = f;\n d = e;\n break;\n }\n\n if (h === d) {\n g = !0;\n d = f;\n c = e;\n break;\n }\n\n h = h.sibling;\n }\n\n if (!g) throw Error(u(189));\n }\n }\n if (c.alternate !== d) throw Error(u(190));\n }\n\n if (3 !== c.tag) throw Error(u(188));\n return c.stateNode.current === c ? a : b;\n}\n\nfunction ic(a) {\n a = hc(a);\n if (!a) return null;\n\n for (var b = a;;) {\n if (5 === b.tag || 6 === b.tag) return b;\n if (b.child) b.child.return = b, b = b.child;else {\n if (b === a) break;\n\n for (; !b.sibling;) {\n if (!b.return || b.return === a) return null;\n b = b.return;\n }\n\n b.sibling.return = b.return;\n b = b.sibling;\n }\n }\n\n return null;\n}\n\nvar jc,\n kc,\n lc,\n mc = !1,\n nc = [],\n oc = null,\n pc = null,\n qc = null,\n rc = new Map(),\n sc = new Map(),\n tc = [],\n uc = \"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit\".split(\" \"),\n vc = \"focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture\".split(\" \");\n\nfunction wc(a) {\n var b = xc(a);\n uc.forEach(function (c) {\n yc(c, a, b);\n });\n vc.forEach(function (c) {\n yc(c, a, b);\n });\n}\n\nfunction zc(a, b, c, d) {\n return {\n blockedOn: a,\n topLevelType: b,\n eventSystemFlags: c | 32,\n nativeEvent: d\n };\n}\n\nfunction Ac(a, b) {\n switch (a) {\n case \"focus\":\n case \"blur\":\n oc = null;\n break;\n\n case \"dragenter\":\n case \"dragleave\":\n pc = null;\n break;\n\n case \"mouseover\":\n case \"mouseout\":\n qc = null;\n break;\n\n case \"pointerover\":\n case \"pointerout\":\n rc.delete(b.pointerId);\n break;\n\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n sc.delete(b.pointerId);\n }\n}\n\nfunction Bc(a, b, c, d, e) {\n if (null === a || a.nativeEvent !== e) return a = zc(b, c, d, e), null !== b && (b = Cc(b), null !== b && kc(b)), a;\n a.eventSystemFlags |= d;\n return a;\n}\n\nfunction Dc(a, b, c, d) {\n switch (b) {\n case \"focus\":\n return oc = Bc(oc, a, b, c, d), !0;\n\n case \"dragenter\":\n return pc = Bc(pc, a, b, c, d), !0;\n\n case \"mouseover\":\n return qc = Bc(qc, a, b, c, d), !0;\n\n case \"pointerover\":\n var e = d.pointerId;\n rc.set(e, Bc(rc.get(e) || null, a, b, c, d));\n return !0;\n\n case \"gotpointercapture\":\n return e = d.pointerId, sc.set(e, Bc(sc.get(e) || null, a, b, c, d)), !0;\n }\n\n return !1;\n}\n\nfunction Ec(a) {\n var b = Fc(a.target);\n\n if (null !== b) {\n var c = ec(b);\n if (null !== c) if (b = c.tag, 13 === b) {\n if (b = fc(c), null !== b) {\n a.blockedOn = b;\n q.unstable_runWithPriority(a.priority, function () {\n lc(c);\n });\n return;\n }\n } else if (3 === b && c.stateNode.hydrate) {\n a.blockedOn = 3 === c.tag ? c.stateNode.containerInfo : null;\n return;\n }\n }\n\n a.blockedOn = null;\n}\n\nfunction Gc(a) {\n if (null !== a.blockedOn) return !1;\n var b = Hc(a.topLevelType, a.eventSystemFlags, a.nativeEvent);\n\n if (null !== b) {\n var c = Cc(b);\n null !== c && kc(c);\n a.blockedOn = b;\n return !1;\n }\n\n return !0;\n}\n\nfunction Ic(a, b, c) {\n Gc(a) && c.delete(b);\n}\n\nfunction Jc() {\n for (mc = !1; 0 < nc.length;) {\n var a = nc[0];\n\n if (null !== a.blockedOn) {\n a = Cc(a.blockedOn);\n null !== a && jc(a);\n break;\n }\n\n var b = Hc(a.topLevelType, a.eventSystemFlags, a.nativeEvent);\n null !== b ? a.blockedOn = b : nc.shift();\n }\n\n null !== oc && Gc(oc) && (oc = null);\n null !== pc && Gc(pc) && (pc = null);\n null !== qc && Gc(qc) && (qc = null);\n rc.forEach(Ic);\n sc.forEach(Ic);\n}\n\nfunction Kc(a, b) {\n a.blockedOn === b && (a.blockedOn = null, mc || (mc = !0, q.unstable_scheduleCallback(q.unstable_NormalPriority, Jc)));\n}\n\nfunction Lc(a) {\n function b(b) {\n return Kc(b, a);\n }\n\n if (0 < nc.length) {\n Kc(nc[0], a);\n\n for (var c = 1; c < nc.length; c++) {\n var d = nc[c];\n d.blockedOn === a && (d.blockedOn = null);\n }\n }\n\n null !== oc && Kc(oc, a);\n null !== pc && Kc(pc, a);\n null !== qc && Kc(qc, a);\n rc.forEach(b);\n sc.forEach(b);\n\n for (c = 0; c < tc.length; c++) {\n d = tc[c], d.blockedOn === a && (d.blockedOn = null);\n }\n\n for (; 0 < tc.length && (c = tc[0], null === c.blockedOn);) {\n Ec(c), null === c.blockedOn && tc.shift();\n }\n}\n\nfunction Mc(a) {\n a = a.target || a.srcElement || window;\n a.correspondingUseElement && (a = a.correspondingUseElement);\n return 3 === a.nodeType ? a.parentNode : a;\n}\n\nfunction Nc(a) {\n do {\n a = a.return;\n } while (a && 5 !== a.tag);\n\n return a ? a : null;\n}\n\nfunction Oc(a, b, c) {\n if (b = Da(a, c.dispatchConfig.phasedRegistrationNames[b])) c._dispatchListeners = xa(c._dispatchListeners, b), c._dispatchInstances = xa(c._dispatchInstances, a);\n}\n\nfunction Pc(a) {\n if (a && a.dispatchConfig.phasedRegistrationNames) {\n for (var b = a._targetInst, c = []; b;) {\n c.push(b), b = Nc(b);\n }\n\n for (b = c.length; 0 < b--;) {\n Oc(c[b], \"captured\", a);\n }\n\n for (b = 0; b < c.length; b++) {\n Oc(c[b], \"bubbled\", a);\n }\n }\n}\n\nfunction Qc(a, b, c) {\n a && c && c.dispatchConfig.registrationName && (b = Da(a, c.dispatchConfig.registrationName)) && (c._dispatchListeners = xa(c._dispatchListeners, b), c._dispatchInstances = xa(c._dispatchInstances, a));\n}\n\nfunction Rc(a) {\n a && a.dispatchConfig.registrationName && Qc(a._targetInst, null, a);\n}\n\nfunction Sc(a) {\n ya(a, Pc);\n}\n\nfunction Tc() {\n return !0;\n}\n\nfunction Uc() {\n return !1;\n}\n\nfunction E(a, b, c, d) {\n this.dispatchConfig = a;\n this._targetInst = b;\n this.nativeEvent = c;\n a = this.constructor.Interface;\n\n for (var e in a) {\n a.hasOwnProperty(e) && ((b = a[e]) ? this[e] = b(c) : \"target\" === e ? this.target = d : this[e] = c[e]);\n }\n\n this.isDefaultPrevented = (null != c.defaultPrevented ? c.defaultPrevented : !1 === c.returnValue) ? Tc : Uc;\n this.isPropagationStopped = Uc;\n return this;\n}\n\nn(E.prototype, {\n preventDefault: function preventDefault() {\n this.defaultPrevented = !0;\n var a = this.nativeEvent;\n a && (a.preventDefault ? a.preventDefault() : \"unknown\" !== typeof a.returnValue && (a.returnValue = !1), this.isDefaultPrevented = Tc);\n },\n stopPropagation: function stopPropagation() {\n var a = this.nativeEvent;\n a && (a.stopPropagation ? a.stopPropagation() : \"unknown\" !== typeof a.cancelBubble && (a.cancelBubble = !0), this.isPropagationStopped = Tc);\n },\n persist: function persist() {\n this.isPersistent = Tc;\n },\n isPersistent: Uc,\n destructor: function destructor() {\n var a = this.constructor.Interface,\n b;\n\n for (b in a) {\n this[b] = null;\n }\n\n this.nativeEvent = this._targetInst = this.dispatchConfig = null;\n this.isPropagationStopped = this.isDefaultPrevented = Uc;\n this._dispatchInstances = this._dispatchListeners = null;\n }\n});\nE.Interface = {\n type: null,\n target: null,\n currentTarget: function currentTarget() {\n return null;\n },\n eventPhase: null,\n bubbles: null,\n cancelable: null,\n timeStamp: function timeStamp(a) {\n return a.timeStamp || Date.now();\n },\n defaultPrevented: null,\n isTrusted: null\n};\n\nE.extend = function (a) {\n function b() {}\n\n function c() {\n return d.apply(this, arguments);\n }\n\n var d = this;\n b.prototype = d.prototype;\n var e = new b();\n n(e, c.prototype);\n c.prototype = e;\n c.prototype.constructor = c;\n c.Interface = n({}, d.Interface, a);\n c.extend = d.extend;\n Vc(c);\n return c;\n};\n\nVc(E);\n\nfunction Wc(a, b, c, d) {\n if (this.eventPool.length) {\n var e = this.eventPool.pop();\n this.call(e, a, b, c, d);\n return e;\n }\n\n return new this(a, b, c, d);\n}\n\nfunction Xc(a) {\n if (!(a instanceof this)) throw Error(u(279));\n a.destructor();\n 10 > this.eventPool.length && this.eventPool.push(a);\n}\n\nfunction Vc(a) {\n a.eventPool = [];\n a.getPooled = Wc;\n a.release = Xc;\n}\n\nvar Yc = E.extend({\n animationName: null,\n elapsedTime: null,\n pseudoElement: null\n}),\n Zc = E.extend({\n clipboardData: function clipboardData(a) {\n return \"clipboardData\" in a ? a.clipboardData : window.clipboardData;\n }\n}),\n $c = E.extend({\n view: null,\n detail: null\n}),\n ad = $c.extend({\n relatedTarget: null\n});\n\nfunction bd(a) {\n var b = a.keyCode;\n \"charCode\" in a ? (a = a.charCode, 0 === a && 13 === b && (a = 13)) : a = b;\n 10 === a && (a = 13);\n return 32 <= a || 13 === a ? a : 0;\n}\n\nvar cd = {\n Esc: \"Escape\",\n Spacebar: \" \",\n Left: \"ArrowLeft\",\n Up: \"ArrowUp\",\n Right: \"ArrowRight\",\n Down: \"ArrowDown\",\n Del: \"Delete\",\n Win: \"OS\",\n Menu: \"ContextMenu\",\n Apps: \"ContextMenu\",\n Scroll: \"ScrollLock\",\n MozPrintableKey: \"Unidentified\"\n},\n ed = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 12: \"Clear\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 19: \"Pause\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 45: \"Insert\",\n 46: \"Delete\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 224: \"Meta\"\n},\n fd = {\n Alt: \"altKey\",\n Control: \"ctrlKey\",\n Meta: \"metaKey\",\n Shift: \"shiftKey\"\n};\n\nfunction gd(a) {\n var b = this.nativeEvent;\n return b.getModifierState ? b.getModifierState(a) : (a = fd[a]) ? !!b[a] : !1;\n}\n\nfunction hd() {\n return gd;\n}\n\nvar id = $c.extend({\n key: function key(a) {\n if (a.key) {\n var b = cd[a.key] || a.key;\n if (\"Unidentified\" !== b) return b;\n }\n\n return \"keypress\" === a.type ? (a = bd(a), 13 === a ? \"Enter\" : String.fromCharCode(a)) : \"keydown\" === a.type || \"keyup\" === a.type ? ed[a.keyCode] || \"Unidentified\" : \"\";\n },\n location: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n repeat: null,\n locale: null,\n getModifierState: hd,\n charCode: function charCode(a) {\n return \"keypress\" === a.type ? bd(a) : 0;\n },\n keyCode: function keyCode(a) {\n return \"keydown\" === a.type || \"keyup\" === a.type ? a.keyCode : 0;\n },\n which: function which(a) {\n return \"keypress\" === a.type ? bd(a) : \"keydown\" === a.type || \"keyup\" === a.type ? a.keyCode : 0;\n }\n}),\n jd = 0,\n kd = 0,\n ld = !1,\n md = !1,\n nd = $c.extend({\n screenX: null,\n screenY: null,\n clientX: null,\n clientY: null,\n pageX: null,\n pageY: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n getModifierState: hd,\n button: null,\n buttons: null,\n relatedTarget: function relatedTarget(a) {\n return a.relatedTarget || (a.fromElement === a.srcElement ? a.toElement : a.fromElement);\n },\n movementX: function movementX(a) {\n if (\"movementX\" in a) return a.movementX;\n var b = jd;\n jd = a.screenX;\n return ld ? \"mousemove\" === a.type ? a.screenX - b : 0 : (ld = !0, 0);\n },\n movementY: function movementY(a) {\n if (\"movementY\" in a) return a.movementY;\n var b = kd;\n kd = a.screenY;\n return md ? \"mousemove\" === a.type ? a.screenY - b : 0 : (md = !0, 0);\n }\n}),\n od = nd.extend({\n pointerId: null,\n width: null,\n height: null,\n pressure: null,\n tangentialPressure: null,\n tiltX: null,\n tiltY: null,\n twist: null,\n pointerType: null,\n isPrimary: null\n}),\n pd = nd.extend({\n dataTransfer: null\n}),\n qd = $c.extend({\n touches: null,\n targetTouches: null,\n changedTouches: null,\n altKey: null,\n metaKey: null,\n ctrlKey: null,\n shiftKey: null,\n getModifierState: hd\n}),\n rd = E.extend({\n propertyName: null,\n elapsedTime: null,\n pseudoElement: null\n}),\n sd = nd.extend({\n deltaX: function deltaX(a) {\n return \"deltaX\" in a ? a.deltaX : \"wheelDeltaX\" in a ? -a.wheelDeltaX : 0;\n },\n deltaY: function deltaY(a) {\n return \"deltaY\" in a ? a.deltaY : \"wheelDeltaY\" in a ? -a.wheelDeltaY : \"wheelDelta\" in a ? -a.wheelDelta : 0;\n },\n deltaZ: null,\n deltaMode: null\n}),\n td = [[\"blur\", \"blur\", 0], [\"cancel\", \"cancel\", 0], [\"click\", \"click\", 0], [\"close\", \"close\", 0], [\"contextmenu\", \"contextMenu\", 0], [\"copy\", \"copy\", 0], [\"cut\", \"cut\", 0], [\"auxclick\", \"auxClick\", 0], [\"dblclick\", \"doubleClick\", 0], [\"dragend\", \"dragEnd\", 0], [\"dragstart\", \"dragStart\", 0], [\"drop\", \"drop\", 0], [\"focus\", \"focus\", 0], [\"input\", \"input\", 0], [\"invalid\", \"invalid\", 0], [\"keydown\", \"keyDown\", 0], [\"keypress\", \"keyPress\", 0], [\"keyup\", \"keyUp\", 0], [\"mousedown\", \"mouseDown\", 0], [\"mouseup\", \"mouseUp\", 0], [\"paste\", \"paste\", 0], [\"pause\", \"pause\", 0], [\"play\", \"play\", 0], [\"pointercancel\", \"pointerCancel\", 0], [\"pointerdown\", \"pointerDown\", 0], [\"pointerup\", \"pointerUp\", 0], [\"ratechange\", \"rateChange\", 0], [\"reset\", \"reset\", 0], [\"seeked\", \"seeked\", 0], [\"submit\", \"submit\", 0], [\"touchcancel\", \"touchCancel\", 0], [\"touchend\", \"touchEnd\", 0], [\"touchstart\", \"touchStart\", 0], [\"volumechange\", \"volumeChange\", 0], [\"drag\", \"drag\", 1], [\"dragenter\", \"dragEnter\", 1], [\"dragexit\", \"dragExit\", 1], [\"dragleave\", \"dragLeave\", 1], [\"dragover\", \"dragOver\", 1], [\"mousemove\", \"mouseMove\", 1], [\"mouseout\", \"mouseOut\", 1], [\"mouseover\", \"mouseOver\", 1], [\"pointermove\", \"pointerMove\", 1], [\"pointerout\", \"pointerOut\", 1], [\"pointerover\", \"pointerOver\", 1], [\"scroll\", \"scroll\", 1], [\"toggle\", \"toggle\", 1], [\"touchmove\", \"touchMove\", 1], [\"wheel\", \"wheel\", 1], [\"abort\", \"abort\", 2], [Zb, \"animationEnd\", 2], [$b, \"animationIteration\", 2], [ac, \"animationStart\", 2], [\"canplay\", \"canPlay\", 2], [\"canplaythrough\", \"canPlayThrough\", 2], [\"durationchange\", \"durationChange\", 2], [\"emptied\", \"emptied\", 2], [\"encrypted\", \"encrypted\", 2], [\"ended\", \"ended\", 2], [\"error\", \"error\", 2], [\"gotpointercapture\", \"gotPointerCapture\", 2], [\"load\", \"load\", 2], [\"loadeddata\", \"loadedData\", 2], [\"loadedmetadata\", \"loadedMetadata\", 2], [\"loadstart\", \"loadStart\", 2], [\"lostpointercapture\", \"lostPointerCapture\", 2], [\"playing\", \"playing\", 2], [\"progress\", \"progress\", 2], [\"seeking\", \"seeking\", 2], [\"stalled\", \"stalled\", 2], [\"suspend\", \"suspend\", 2], [\"timeupdate\", \"timeUpdate\", 2], [bc, \"transitionEnd\", 2], [\"waiting\", \"waiting\", 2]],\n ud = {},\n vd = {},\n xd = 0;\n\nfor (; xd < td.length; xd++) {\n var yd = td[xd],\n zd = yd[0],\n Ad = yd[1],\n Bd = yd[2],\n Cd = \"on\" + (Ad[0].toUpperCase() + Ad.slice(1)),\n Dd = {\n phasedRegistrationNames: {\n bubbled: Cd,\n captured: Cd + \"Capture\"\n },\n dependencies: [zd],\n eventPriority: Bd\n };\n ud[Ad] = Dd;\n vd[zd] = Dd;\n}\n\nvar Ed = {\n eventTypes: ud,\n getEventPriority: function getEventPriority(a) {\n a = vd[a];\n return void 0 !== a ? a.eventPriority : 2;\n },\n extractEvents: function extractEvents(a, b, c, d) {\n var e = vd[a];\n if (!e) return null;\n\n switch (a) {\n case \"keypress\":\n if (0 === bd(c)) return null;\n\n case \"keydown\":\n case \"keyup\":\n a = id;\n break;\n\n case \"blur\":\n case \"focus\":\n a = ad;\n break;\n\n case \"click\":\n if (2 === c.button) return null;\n\n case \"auxclick\":\n case \"dblclick\":\n case \"mousedown\":\n case \"mousemove\":\n case \"mouseup\":\n case \"mouseout\":\n case \"mouseover\":\n case \"contextmenu\":\n a = nd;\n break;\n\n case \"drag\":\n case \"dragend\":\n case \"dragenter\":\n case \"dragexit\":\n case \"dragleave\":\n case \"dragover\":\n case \"dragstart\":\n case \"drop\":\n a = pd;\n break;\n\n case \"touchcancel\":\n case \"touchend\":\n case \"touchmove\":\n case \"touchstart\":\n a = qd;\n break;\n\n case Zb:\n case $b:\n case ac:\n a = Yc;\n break;\n\n case bc:\n a = rd;\n break;\n\n case \"scroll\":\n a = $c;\n break;\n\n case \"wheel\":\n a = sd;\n break;\n\n case \"copy\":\n case \"cut\":\n case \"paste\":\n a = Zc;\n break;\n\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n case \"pointercancel\":\n case \"pointerdown\":\n case \"pointermove\":\n case \"pointerout\":\n case \"pointerover\":\n case \"pointerup\":\n a = od;\n break;\n\n default:\n a = E;\n }\n\n b = a.getPooled(e, b, c, d);\n Sc(b);\n return b;\n }\n},\n Fd = q.unstable_UserBlockingPriority,\n Gd = q.unstable_runWithPriority,\n Hd = Ed.getEventPriority,\n Id = 10,\n Jd = [];\n\nfunction Kd(a) {\n var b = a.targetInst,\n c = b;\n\n do {\n if (!c) {\n a.ancestors.push(c);\n break;\n }\n\n var d = c;\n if (3 === d.tag) d = d.stateNode.containerInfo;else {\n for (; d.return;) {\n d = d.return;\n }\n\n d = 3 !== d.tag ? null : d.stateNode.containerInfo;\n }\n if (!d) break;\n b = c.tag;\n 5 !== b && 6 !== b || a.ancestors.push(c);\n c = Fc(d);\n } while (c);\n\n for (c = 0; c < a.ancestors.length; c++) {\n b = a.ancestors[c];\n var e = Mc(a.nativeEvent);\n d = a.topLevelType;\n\n for (var f = a.nativeEvent, g = a.eventSystemFlags, h = null, k = 0; k < ea.length; k++) {\n var l = ea[k];\n l && (l = l.extractEvents(d, b, f, e, g)) && (h = xa(h, l));\n }\n\n Ba(h);\n }\n}\n\nvar Ld = !0;\n\nfunction F(a, b) {\n Md(b, a, !1);\n}\n\nfunction Md(a, b, c) {\n switch (Hd(b)) {\n case 0:\n var d = Nd.bind(null, b, 1);\n break;\n\n case 1:\n d = Od.bind(null, b, 1);\n break;\n\n default:\n d = Pd.bind(null, b, 1);\n }\n\n c ? a.addEventListener(b, d, !0) : a.addEventListener(b, d, !1);\n}\n\nfunction Nd(a, b, c) {\n ib || gb();\n var d = Pd,\n e = ib;\n ib = !0;\n\n try {\n fb(d, a, b, c);\n } finally {\n (ib = e) || kb();\n }\n}\n\nfunction Od(a, b, c) {\n Gd(Fd, Pd.bind(null, a, b, c));\n}\n\nfunction Qd(a, b, c, d) {\n if (Jd.length) {\n var e = Jd.pop();\n e.topLevelType = a;\n e.eventSystemFlags = b;\n e.nativeEvent = c;\n e.targetInst = d;\n a = e;\n } else a = {\n topLevelType: a,\n eventSystemFlags: b,\n nativeEvent: c,\n targetInst: d,\n ancestors: []\n };\n\n try {\n if (b = Kd, c = a, jb) b(c, void 0);else {\n jb = !0;\n\n try {\n hb(b, c, void 0);\n } finally {\n jb = !1, kb();\n }\n }\n } finally {\n a.topLevelType = null, a.nativeEvent = null, a.targetInst = null, a.ancestors.length = 0, Jd.length < Id && Jd.push(a);\n }\n}\n\nfunction Pd(a, b, c) {\n if (Ld) if (0 < nc.length && -1 < uc.indexOf(a)) a = zc(null, a, b, c), nc.push(a);else {\n var d = Hc(a, b, c);\n null === d ? Ac(a, c) : -1 < uc.indexOf(a) ? (a = zc(d, a, b, c), nc.push(a)) : Dc(d, a, b, c) || (Ac(a, c), Qd(a, b, c, null));\n }\n}\n\nfunction Hc(a, b, c) {\n var d = Mc(c);\n d = Fc(d);\n\n if (null !== d) {\n var e = ec(d);\n if (null === e) d = null;else {\n var f = e.tag;\n\n if (13 === f) {\n d = fc(e);\n if (null !== d) return d;\n d = null;\n } else if (3 === f) {\n if (e.stateNode.hydrate) return 3 === e.tag ? e.stateNode.containerInfo : null;\n d = null;\n } else e !== d && (d = null);\n }\n }\n\n Qd(a, b, c, d);\n return null;\n}\n\nfunction Rd(a) {\n if (!Ya) return !1;\n a = \"on\" + a;\n var b = a in document;\n b || (b = document.createElement(\"div\"), b.setAttribute(a, \"return;\"), b = \"function\" === typeof b[a]);\n return b;\n}\n\nvar Sd = new (\"function\" === typeof WeakMap ? WeakMap : Map)();\n\nfunction xc(a) {\n var b = Sd.get(a);\n void 0 === b && (b = new Set(), Sd.set(a, b));\n return b;\n}\n\nfunction yc(a, b, c) {\n if (!c.has(a)) {\n switch (a) {\n case \"scroll\":\n Md(b, \"scroll\", !0);\n break;\n\n case \"focus\":\n case \"blur\":\n Md(b, \"focus\", !0);\n Md(b, \"blur\", !0);\n c.add(\"blur\");\n c.add(\"focus\");\n break;\n\n case \"cancel\":\n case \"close\":\n Rd(a) && Md(b, a, !0);\n break;\n\n case \"invalid\":\n case \"submit\":\n case \"reset\":\n break;\n\n default:\n -1 === dc.indexOf(a) && F(a, b);\n }\n\n c.add(a);\n }\n}\n\nvar Td = {\n animationIterationCount: !0,\n borderImageOutset: !0,\n borderImageSlice: !0,\n borderImageWidth: !0,\n boxFlex: !0,\n boxFlexGroup: !0,\n boxOrdinalGroup: !0,\n columnCount: !0,\n columns: !0,\n flex: !0,\n flexGrow: !0,\n flexPositive: !0,\n flexShrink: !0,\n flexNegative: !0,\n flexOrder: !0,\n gridArea: !0,\n gridRow: !0,\n gridRowEnd: !0,\n gridRowSpan: !0,\n gridRowStart: !0,\n gridColumn: !0,\n gridColumnEnd: !0,\n gridColumnSpan: !0,\n gridColumnStart: !0,\n fontWeight: !0,\n lineClamp: !0,\n lineHeight: !0,\n opacity: !0,\n order: !0,\n orphans: !0,\n tabSize: !0,\n widows: !0,\n zIndex: !0,\n zoom: !0,\n fillOpacity: !0,\n floodOpacity: !0,\n stopOpacity: !0,\n strokeDasharray: !0,\n strokeDashoffset: !0,\n strokeMiterlimit: !0,\n strokeOpacity: !0,\n strokeWidth: !0\n},\n Ud = [\"Webkit\", \"ms\", \"Moz\", \"O\"];\nObject.keys(Td).forEach(function (a) {\n Ud.forEach(function (b) {\n b = b + a.charAt(0).toUpperCase() + a.substring(1);\n Td[b] = Td[a];\n });\n});\n\nfunction Vd(a, b, c) {\n return null == b || \"boolean\" === typeof b || \"\" === b ? \"\" : c || \"number\" !== typeof b || 0 === b || Td.hasOwnProperty(a) && Td[a] ? (\"\" + b).trim() : b + \"px\";\n}\n\nfunction Wd(a, b) {\n a = a.style;\n\n for (var c in b) {\n if (b.hasOwnProperty(c)) {\n var d = 0 === c.indexOf(\"--\"),\n e = Vd(c, b[c], d);\n \"float\" === c && (c = \"cssFloat\");\n d ? a.setProperty(c, e) : a[c] = e;\n }\n }\n}\n\nvar Xd = n({\n menuitem: !0\n}, {\n area: !0,\n base: !0,\n br: !0,\n col: !0,\n embed: !0,\n hr: !0,\n img: !0,\n input: !0,\n keygen: !0,\n link: !0,\n meta: !0,\n param: !0,\n source: !0,\n track: !0,\n wbr: !0\n});\n\nfunction Yd(a, b) {\n if (b) {\n if (Xd[a] && (null != b.children || null != b.dangerouslySetInnerHTML)) throw Error(u(137, a, \"\"));\n\n if (null != b.dangerouslySetInnerHTML) {\n if (null != b.children) throw Error(u(60));\n if (!(\"object\" === typeof b.dangerouslySetInnerHTML && \"__html\" in b.dangerouslySetInnerHTML)) throw Error(u(61));\n }\n\n if (null != b.style && \"object\" !== typeof b.style) throw Error(u(62, \"\"));\n }\n}\n\nfunction Zd(a, b) {\n if (-1 === a.indexOf(\"-\")) return \"string\" === typeof b.is;\n\n switch (a) {\n case \"annotation-xml\":\n case \"color-profile\":\n case \"font-face\":\n case \"font-face-src\":\n case \"font-face-uri\":\n case \"font-face-format\":\n case \"font-face-name\":\n case \"missing-glyph\":\n return !1;\n\n default:\n return !0;\n }\n}\n\nfunction $d(a, b) {\n a = 9 === a.nodeType || 11 === a.nodeType ? a : a.ownerDocument;\n var c = xc(a);\n b = ja[b];\n\n for (var d = 0; d < b.length; d++) {\n yc(b[d], a, c);\n }\n}\n\nfunction ae() {}\n\nfunction be(a) {\n a = a || (\"undefined\" !== typeof document ? document : void 0);\n if (\"undefined\" === typeof a) return null;\n\n try {\n return a.activeElement || a.body;\n } catch (b) {\n return a.body;\n }\n}\n\nfunction ce(a) {\n for (; a && a.firstChild;) {\n a = a.firstChild;\n }\n\n return a;\n}\n\nfunction de(a, b) {\n var c = ce(a);\n a = 0;\n\n for (var d; c;) {\n if (3 === c.nodeType) {\n d = a + c.textContent.length;\n if (a <= b && d >= b) return {\n node: c,\n offset: b - a\n };\n a = d;\n }\n\n a: {\n for (; c;) {\n if (c.nextSibling) {\n c = c.nextSibling;\n break a;\n }\n\n c = c.parentNode;\n }\n\n c = void 0;\n }\n\n c = ce(c);\n }\n}\n\nfunction ee(a, b) {\n return a && b ? a === b ? !0 : a && 3 === a.nodeType ? !1 : b && 3 === b.nodeType ? ee(a, b.parentNode) : \"contains\" in a ? a.contains(b) : a.compareDocumentPosition ? !!(a.compareDocumentPosition(b) & 16) : !1 : !1;\n}\n\nfunction fe() {\n for (var a = window, b = be(); b instanceof a.HTMLIFrameElement;) {\n try {\n var c = \"string\" === typeof b.contentWindow.location.href;\n } catch (d) {\n c = !1;\n }\n\n if (c) a = b.contentWindow;else break;\n b = be(a.document);\n }\n\n return b;\n}\n\nfunction ge(a) {\n var b = a && a.nodeName && a.nodeName.toLowerCase();\n return b && (\"input\" === b && (\"text\" === a.type || \"search\" === a.type || \"tel\" === a.type || \"url\" === a.type || \"password\" === a.type) || \"textarea\" === b || \"true\" === a.contentEditable);\n}\n\nvar he = \"$\",\n ie = \"/$\",\n je = \"$?\",\n ke = \"$!\",\n le = null,\n me = null;\n\nfunction ne(a, b) {\n switch (a) {\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n return !!b.autoFocus;\n }\n\n return !1;\n}\n\nfunction oe(a, b) {\n 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;\n}\n\nvar pe = \"function\" === typeof setTimeout ? setTimeout : void 0,\n qe = \"function\" === typeof clearTimeout ? clearTimeout : void 0;\n\nfunction re(a) {\n for (; null != a; a = a.nextSibling) {\n var b = a.nodeType;\n if (1 === b || 3 === b) break;\n }\n\n return a;\n}\n\nfunction se(a) {\n a = a.previousSibling;\n\n for (var b = 0; a;) {\n if (8 === a.nodeType) {\n var c = a.data;\n\n if (c === he || c === ke || c === je) {\n if (0 === b) return a;\n b--;\n } else c === ie && b++;\n }\n\n a = a.previousSibling;\n }\n\n return null;\n}\n\nvar te = Math.random().toString(36).slice(2),\n ue = \"__reactInternalInstance$\" + te,\n ve = \"__reactEventHandlers$\" + te,\n we = \"__reactContainere$\" + te;\n\nfunction Fc(a) {\n var b = a[ue];\n if (b) return b;\n\n for (var c = a.parentNode; c;) {\n if (b = c[we] || c[ue]) {\n c = b.alternate;\n if (null !== b.child || null !== c && null !== c.child) for (a = se(a); null !== a;) {\n if (c = a[ue]) return c;\n a = se(a);\n }\n return b;\n }\n\n a = c;\n c = a.parentNode;\n }\n\n return null;\n}\n\nfunction Cc(a) {\n a = a[ue] || a[we];\n return !a || 5 !== a.tag && 6 !== a.tag && 13 !== a.tag && 3 !== a.tag ? null : a;\n}\n\nfunction xe(a) {\n if (5 === a.tag || 6 === a.tag) return a.stateNode;\n throw Error(u(33));\n}\n\nfunction ye(a) {\n return a[ve] || null;\n}\n\nvar ze = null,\n Ae = null,\n Be = null;\n\nfunction Ce() {\n if (Be) return Be;\n var a,\n b = Ae,\n c = b.length,\n d,\n e = \"value\" in ze ? ze.value : ze.textContent,\n f = e.length;\n\n for (a = 0; a < c && b[a] === e[a]; a++) {\n ;\n }\n\n var g = c - a;\n\n for (d = 1; d <= g && b[c - d] === e[f - d]; d++) {\n ;\n }\n\n return Be = e.slice(a, 1 < d ? 1 - d : void 0);\n}\n\nvar De = E.extend({\n data: null\n}),\n Ee = E.extend({\n data: null\n}),\n Fe = [9, 13, 27, 32],\n Ge = Ya && \"CompositionEvent\" in window,\n He = null;\nYa && \"documentMode\" in document && (He = document.documentMode);\nvar Ie = Ya && \"TextEvent\" in window && !He,\n Je = Ya && (!Ge || He && 8 < He && 11 >= He),\n Ke = String.fromCharCode(32),\n Le = {\n beforeInput: {\n phasedRegistrationNames: {\n bubbled: \"onBeforeInput\",\n captured: \"onBeforeInputCapture\"\n },\n dependencies: [\"compositionend\", \"keypress\", \"textInput\", \"paste\"]\n },\n compositionEnd: {\n phasedRegistrationNames: {\n bubbled: \"onCompositionEnd\",\n captured: \"onCompositionEndCapture\"\n },\n dependencies: \"blur compositionend keydown keypress keyup mousedown\".split(\" \")\n },\n compositionStart: {\n phasedRegistrationNames: {\n bubbled: \"onCompositionStart\",\n captured: \"onCompositionStartCapture\"\n },\n dependencies: \"blur compositionstart keydown keypress keyup mousedown\".split(\" \")\n },\n compositionUpdate: {\n phasedRegistrationNames: {\n bubbled: \"onCompositionUpdate\",\n captured: \"onCompositionUpdateCapture\"\n },\n dependencies: \"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")\n }\n},\n Me = !1;\n\nfunction Ne(a, b) {\n switch (a) {\n case \"keyup\":\n return -1 !== Fe.indexOf(b.keyCode);\n\n case \"keydown\":\n return 229 !== b.keyCode;\n\n case \"keypress\":\n case \"mousedown\":\n case \"blur\":\n return !0;\n\n default:\n return !1;\n }\n}\n\nfunction Oe(a) {\n a = a.detail;\n return \"object\" === typeof a && \"data\" in a ? a.data : null;\n}\n\nvar Pe = !1;\n\nfunction Qe(a, b) {\n switch (a) {\n case \"compositionend\":\n return Oe(b);\n\n case \"keypress\":\n if (32 !== b.which) return null;\n Me = !0;\n return Ke;\n\n case \"textInput\":\n return a = b.data, a === Ke && Me ? null : a;\n\n default:\n return null;\n }\n}\n\nfunction Re(a, b) {\n if (Pe) return \"compositionend\" === a || !Ge && Ne(a, b) ? (a = Ce(), Be = Ae = ze = null, Pe = !1, a) : null;\n\n switch (a) {\n case \"paste\":\n return null;\n\n case \"keypress\":\n if (!(b.ctrlKey || b.altKey || b.metaKey) || b.ctrlKey && b.altKey) {\n if (b.char && 1 < b.char.length) return b.char;\n if (b.which) return String.fromCharCode(b.which);\n }\n\n return null;\n\n case \"compositionend\":\n return Je && \"ko\" !== b.locale ? null : b.data;\n\n default:\n return null;\n }\n}\n\nvar Se = {\n eventTypes: Le,\n extractEvents: function extractEvents(a, b, c, d) {\n var e;\n if (Ge) b: {\n switch (a) {\n case \"compositionstart\":\n var f = Le.compositionStart;\n break b;\n\n case \"compositionend\":\n f = Le.compositionEnd;\n break b;\n\n case \"compositionupdate\":\n f = Le.compositionUpdate;\n break b;\n }\n\n f = void 0;\n } else Pe ? Ne(a, c) && (f = Le.compositionEnd) : \"keydown\" === a && 229 === c.keyCode && (f = Le.compositionStart);\n f ? (Je && \"ko\" !== c.locale && (Pe || f !== Le.compositionStart ? f === Le.compositionEnd && Pe && (e = Ce()) : (ze = d, Ae = \"value\" in ze ? ze.value : ze.textContent, Pe = !0)), f = De.getPooled(f, b, c, d), e ? f.data = e : (e = Oe(c), null !== e && (f.data = e)), Sc(f), e = f) : e = null;\n (a = Ie ? Qe(a, c) : Re(a, c)) ? (b = Ee.getPooled(Le.beforeInput, b, c, d), b.data = a, Sc(b)) : b = null;\n return null === e ? b : null === b ? e : [e, b];\n }\n},\n Te = {\n color: !0,\n date: !0,\n datetime: !0,\n \"datetime-local\": !0,\n email: !0,\n month: !0,\n number: !0,\n password: !0,\n range: !0,\n search: !0,\n tel: !0,\n text: !0,\n time: !0,\n url: !0,\n week: !0\n};\n\nfunction Ue(a) {\n var b = a && a.nodeName && a.nodeName.toLowerCase();\n return \"input\" === b ? !!Te[a.type] : \"textarea\" === b ? !0 : !1;\n}\n\nvar Ve = {\n change: {\n phasedRegistrationNames: {\n bubbled: \"onChange\",\n captured: \"onChangeCapture\"\n },\n dependencies: \"blur change click focus input keydown keyup selectionchange\".split(\" \")\n }\n};\n\nfunction We(a, b, c) {\n a = E.getPooled(Ve.change, a, b, c);\n a.type = \"change\";\n cb(c);\n Sc(a);\n return a;\n}\n\nvar Xe = null,\n Ye = null;\n\nfunction Ze(a) {\n Ba(a);\n}\n\nfunction $e(a) {\n var b = xe(a);\n if (zb(b)) return a;\n}\n\nfunction af(a, b) {\n if (\"change\" === a) return b;\n}\n\nvar bf = !1;\nYa && (bf = Rd(\"input\") && (!document.documentMode || 9 < document.documentMode));\n\nfunction cf() {\n Xe && (Xe.detachEvent(\"onpropertychange\", df), Ye = Xe = null);\n}\n\nfunction df(a) {\n if (\"value\" === a.propertyName && $e(Ye)) if (a = We(Ye, a, Mc(a)), ib) Ba(a);else {\n ib = !0;\n\n try {\n eb(Ze, a);\n } finally {\n ib = !1, kb();\n }\n }\n}\n\nfunction ef(a, b, c) {\n \"focus\" === a ? (cf(), Xe = b, Ye = c, Xe.attachEvent(\"onpropertychange\", df)) : \"blur\" === a && cf();\n}\n\nfunction ff(a) {\n if (\"selectionchange\" === a || \"keyup\" === a || \"keydown\" === a) return $e(Ye);\n}\n\nfunction gf(a, b) {\n if (\"click\" === a) return $e(b);\n}\n\nfunction hf(a, b) {\n if (\"input\" === a || \"change\" === a) return $e(b);\n}\n\nvar jf = {\n eventTypes: Ve,\n _isInputEventSupported: bf,\n extractEvents: function extractEvents(a, b, c, d) {\n var e = b ? xe(b) : window,\n f = e.nodeName && e.nodeName.toLowerCase();\n if (\"select\" === f || \"input\" === f && \"file\" === e.type) var g = af;else if (Ue(e)) {\n if (bf) g = hf;else {\n g = ff;\n var h = ef;\n }\n } else (f = e.nodeName) && \"input\" === f.toLowerCase() && (\"checkbox\" === e.type || \"radio\" === e.type) && (g = gf);\n if (g && (g = g(a, b))) return We(g, c, d);\n h && h(a, e, b);\n \"blur\" === a && (a = e._wrapperState) && a.controlled && \"number\" === e.type && Fb(e, \"number\", e.value);\n }\n},\n kf = {\n mouseEnter: {\n registrationName: \"onMouseEnter\",\n dependencies: [\"mouseout\", \"mouseover\"]\n },\n mouseLeave: {\n registrationName: \"onMouseLeave\",\n dependencies: [\"mouseout\", \"mouseover\"]\n },\n pointerEnter: {\n registrationName: \"onPointerEnter\",\n dependencies: [\"pointerout\", \"pointerover\"]\n },\n pointerLeave: {\n registrationName: \"onPointerLeave\",\n dependencies: [\"pointerout\", \"pointerover\"]\n }\n},\n lf,\n mf = {\n eventTypes: kf,\n extractEvents: function extractEvents(a, b, c, d, e) {\n var f = \"mouseover\" === a || \"pointerover\" === a,\n g = \"mouseout\" === a || \"pointerout\" === a;\n if (f && 0 === (e & 32) && (c.relatedTarget || c.fromElement) || !g && !f) return null;\n e = d.window === d ? d : (e = d.ownerDocument) ? e.defaultView || e.parentWindow : window;\n\n if (g) {\n if (g = b, b = (b = c.relatedTarget || c.toElement) ? Fc(b) : null, null !== b && (f = ec(b), b !== f || 5 !== b.tag && 6 !== b.tag)) b = null;\n } else g = null;\n\n if (g === b) return null;\n\n if (\"mouseout\" === a || \"mouseover\" === a) {\n var h = nd;\n var k = kf.mouseLeave;\n var l = kf.mouseEnter;\n var m = \"mouse\";\n } else if (\"pointerout\" === a || \"pointerover\" === a) h = od, k = kf.pointerLeave, l = kf.pointerEnter, m = \"pointer\";\n\n a = null == g ? e : xe(g);\n e = null == b ? e : xe(b);\n k = h.getPooled(k, g, c, d);\n k.type = m + \"leave\";\n k.target = a;\n k.relatedTarget = e;\n d = h.getPooled(l, b, c, d);\n d.type = m + \"enter\";\n d.target = e;\n d.relatedTarget = a;\n h = g;\n m = b;\n if (h && m) a: {\n l = h;\n a = m;\n g = 0;\n\n for (b = l; b; b = Nc(b)) {\n g++;\n }\n\n b = 0;\n\n for (e = a; e; e = Nc(e)) {\n b++;\n }\n\n for (; 0 < g - b;) {\n l = Nc(l), g--;\n }\n\n for (; 0 < b - g;) {\n a = Nc(a), b--;\n }\n\n for (; g--;) {\n if (l === a || l === a.alternate) break a;\n l = Nc(l);\n a = Nc(a);\n }\n\n l = null;\n } else l = null;\n a = l;\n\n for (l = []; h && h !== a;) {\n g = h.alternate;\n if (null !== g && g === a) break;\n l.push(h);\n h = Nc(h);\n }\n\n for (h = []; m && m !== a;) {\n g = m.alternate;\n if (null !== g && g === a) break;\n h.push(m);\n m = Nc(m);\n }\n\n for (m = 0; m < l.length; m++) {\n Qc(l[m], \"bubbled\", k);\n }\n\n for (m = h.length; 0 < m--;) {\n Qc(h[m], \"captured\", d);\n }\n\n if (c === lf) return lf = null, [k];\n lf = c;\n return [k, d];\n }\n};\n\nfunction nf(a, b) {\n return a === b && (0 !== a || 1 / a === 1 / b) || a !== a && b !== b;\n}\n\nvar of = \"function\" === typeof Object.is ? Object.is : nf,\n pf = Object.prototype.hasOwnProperty;\n\nfunction qf(a, b) {\n if (of(a, b)) return !0;\n if (\"object\" !== typeof a || null === a || \"object\" !== typeof b || null === b) return !1;\n var c = Object.keys(a),\n d = Object.keys(b);\n if (c.length !== d.length) return !1;\n\n for (d = 0; d < c.length; d++) {\n if (!pf.call(b, c[d]) || !of(a[c[d]], b[c[d]])) return !1;\n }\n\n return !0;\n}\n\nvar rf = Ya && \"documentMode\" in document && 11 >= document.documentMode,\n sf = {\n select: {\n phasedRegistrationNames: {\n bubbled: \"onSelect\",\n captured: \"onSelectCapture\"\n },\n dependencies: \"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")\n }\n},\n tf = null,\n uf = null,\n vf = null,\n wf = !1;\n\nfunction xf(a, b) {\n var c = b.window === b ? b.document : 9 === b.nodeType ? b : b.ownerDocument;\n if (wf || null == tf || tf !== be(c)) return null;\n c = tf;\n \"selectionStart\" in c && ge(c) ? c = {\n start: c.selectionStart,\n end: c.selectionEnd\n } : (c = (c.ownerDocument && c.ownerDocument.defaultView || window).getSelection(), c = {\n anchorNode: c.anchorNode,\n anchorOffset: c.anchorOffset,\n focusNode: c.focusNode,\n focusOffset: c.focusOffset\n });\n return vf && qf(vf, c) ? null : (vf = c, a = E.getPooled(sf.select, uf, a, b), a.type = \"select\", a.target = tf, Sc(a), a);\n}\n\nvar yf = {\n eventTypes: sf,\n extractEvents: function extractEvents(a, b, c, d) {\n var e = d.window === d ? d.document : 9 === d.nodeType ? d : d.ownerDocument,\n f;\n\n if (!(f = !e)) {\n a: {\n e = xc(e);\n f = ja.onSelect;\n\n for (var g = 0; g < f.length; g++) {\n if (!e.has(f[g])) {\n e = !1;\n break a;\n }\n }\n\n e = !0;\n }\n\n f = !e;\n }\n\n if (f) return null;\n e = b ? xe(b) : window;\n\n switch (a) {\n case \"focus\":\n if (Ue(e) || \"true\" === e.contentEditable) tf = e, uf = b, vf = null;\n break;\n\n case \"blur\":\n vf = uf = tf = null;\n break;\n\n case \"mousedown\":\n wf = !0;\n break;\n\n case \"contextmenu\":\n case \"mouseup\":\n case \"dragend\":\n return wf = !1, xf(c, d);\n\n case \"selectionchange\":\n if (rf) break;\n\n case \"keydown\":\n case \"keyup\":\n return xf(c, d);\n }\n\n return null;\n }\n};\nCa.injectEventPluginOrder(\"ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin\".split(\" \"));\nvar zf = Cc;\nsa = ye;\nua = zf;\nva = xe;\nCa.injectEventPluginsByName({\n SimpleEventPlugin: Ed,\n EnterLeaveEventPlugin: mf,\n ChangeEventPlugin: jf,\n SelectEventPlugin: yf,\n BeforeInputEventPlugin: Se\n});\nnew Set();\nvar Af = [],\n Bf = -1;\n\nfunction G(a) {\n 0 > Bf || (a.current = Af[Bf], Af[Bf] = null, Bf--);\n}\n\nfunction I(a, b) {\n Bf++;\n Af[Bf] = a.current;\n a.current = b;\n}\n\nvar Cf = {},\n J = {\n current: Cf\n},\n K = {\n current: !1\n},\n Df = Cf;\n\nfunction Ef(a, b) {\n var c = a.type.contextTypes;\n if (!c) return Cf;\n var d = a.stateNode;\n if (d && d.__reactInternalMemoizedUnmaskedChildContext === b) return d.__reactInternalMemoizedMaskedChildContext;\n var e = {},\n f;\n\n for (f in c) {\n e[f] = b[f];\n }\n\n d && (a = a.stateNode, a.__reactInternalMemoizedUnmaskedChildContext = b, a.__reactInternalMemoizedMaskedChildContext = e);\n return e;\n}\n\nfunction L(a) {\n a = a.childContextTypes;\n return null !== a && void 0 !== a;\n}\n\nfunction Ff(a) {\n G(K, a);\n G(J, a);\n}\n\nfunction Gf(a) {\n G(K, a);\n G(J, a);\n}\n\nfunction Hf(a, b, c) {\n if (J.current !== Cf) throw Error(u(168));\n I(J, b, a);\n I(K, c, a);\n}\n\nfunction If(a, b, c) {\n var d = a.stateNode;\n a = b.childContextTypes;\n if (\"function\" !== typeof d.getChildContext) return c;\n d = d.getChildContext();\n\n for (var e in d) {\n if (!(e in a)) throw Error(u(108, Wa(b) || \"Unknown\", e));\n }\n\n return n({}, c, {}, d);\n}\n\nfunction Jf(a) {\n var b = a.stateNode;\n b = b && b.__reactInternalMemoizedMergedChildContext || Cf;\n Df = J.current;\n I(J, b, a);\n I(K, K.current, a);\n return !0;\n}\n\nfunction Kf(a, b, c) {\n var d = a.stateNode;\n if (!d) throw Error(u(169));\n c ? (b = If(a, b, Df), d.__reactInternalMemoizedMergedChildContext = b, G(K, a), G(J, a), I(J, b, a)) : G(K, a);\n I(K, c, a);\n}\n\nvar Lf = q.unstable_runWithPriority,\n Mf = q.unstable_scheduleCallback,\n Nf = q.unstable_cancelCallback,\n Of = q.unstable_shouldYield,\n Pf = q.unstable_requestPaint,\n Qf = q.unstable_now,\n Rf = q.unstable_getCurrentPriorityLevel,\n Sf = q.unstable_ImmediatePriority,\n Tf = q.unstable_UserBlockingPriority,\n Uf = q.unstable_NormalPriority,\n Vf = q.unstable_LowPriority,\n Wf = q.unstable_IdlePriority,\n Xf = {},\n Yf = void 0 !== Pf ? Pf : function () {},\n Zf = null,\n $f = null,\n ag = !1,\n bg = Qf(),\n cg = 1E4 > bg ? Qf : function () {\n return Qf() - bg;\n};\n\nfunction dg() {\n switch (Rf()) {\n case Sf:\n return 99;\n\n case Tf:\n return 98;\n\n case Uf:\n return 97;\n\n case Vf:\n return 96;\n\n case Wf:\n return 95;\n\n default:\n throw Error(u(332));\n }\n}\n\nfunction eg(a) {\n switch (a) {\n case 99:\n return Sf;\n\n case 98:\n return Tf;\n\n case 97:\n return Uf;\n\n case 96:\n return Vf;\n\n case 95:\n return Wf;\n\n default:\n throw Error(u(332));\n }\n}\n\nfunction fg(a, b) {\n a = eg(a);\n return Lf(a, b);\n}\n\nfunction gg(a, b, c) {\n a = eg(a);\n return Mf(a, b, c);\n}\n\nfunction hg(a) {\n null === Zf ? (Zf = [a], $f = Mf(Sf, ig)) : Zf.push(a);\n return Xf;\n}\n\nfunction jg() {\n if (null !== $f) {\n var a = $f;\n $f = null;\n Nf(a);\n }\n\n ig();\n}\n\nfunction ig() {\n if (!ag && null !== Zf) {\n ag = !0;\n var a = 0;\n\n try {\n var b = Zf;\n fg(99, function () {\n for (; a < b.length; a++) {\n var c = b[a];\n\n do {\n c = c(!0);\n } while (null !== c);\n }\n });\n Zf = null;\n } catch (c) {\n throw null !== Zf && (Zf = Zf.slice(a + 1)), Mf(Sf, jg), c;\n } finally {\n ag = !1;\n }\n }\n}\n\nvar kg = 3;\n\nfunction lg(a, b, c) {\n c /= 10;\n return 1073741821 - (((1073741821 - a + b / 10) / c | 0) + 1) * c;\n}\n\nfunction mg(a, b) {\n if (a && a.defaultProps) {\n b = n({}, b);\n a = a.defaultProps;\n\n for (var c in a) {\n void 0 === b[c] && (b[c] = a[c]);\n }\n }\n\n return b;\n}\n\nvar ng = {\n current: null\n},\n og = null,\n pg = null,\n qg = null;\n\nfunction rg() {\n qg = pg = og = null;\n}\n\nfunction sg(a, b) {\n var c = a.type._context;\n I(ng, c._currentValue, a);\n c._currentValue = b;\n}\n\nfunction tg(a) {\n var b = ng.current;\n G(ng, a);\n a.type._context._currentValue = b;\n}\n\nfunction ug(a, b) {\n for (; null !== a;) {\n var c = a.alternate;\n if (a.childExpirationTime < b) a.childExpirationTime = b, null !== c && c.childExpirationTime < b && (c.childExpirationTime = b);else if (null !== c && c.childExpirationTime < b) c.childExpirationTime = b;else break;\n a = a.return;\n }\n}\n\nfunction vg(a, b) {\n og = a;\n qg = pg = null;\n a = a.dependencies;\n null !== a && null !== a.firstContext && (a.expirationTime >= b && (wg = !0), a.firstContext = null);\n}\n\nfunction xg(a, b) {\n if (qg !== a && !1 !== b && 0 !== b) {\n if (\"number\" !== typeof b || 1073741823 === b) qg = a, b = 1073741823;\n b = {\n context: a,\n observedBits: b,\n next: null\n };\n\n if (null === pg) {\n if (null === og) throw Error(u(308));\n pg = b;\n og.dependencies = {\n expirationTime: 0,\n firstContext: b,\n responders: null\n };\n } else pg = pg.next = b;\n }\n\n return a._currentValue;\n}\n\nvar yg = !1;\n\nfunction zg(a) {\n return {\n baseState: a,\n firstUpdate: null,\n lastUpdate: null,\n firstCapturedUpdate: null,\n lastCapturedUpdate: null,\n firstEffect: null,\n lastEffect: null,\n firstCapturedEffect: null,\n lastCapturedEffect: null\n };\n}\n\nfunction Ag(a) {\n return {\n baseState: a.baseState,\n firstUpdate: a.firstUpdate,\n lastUpdate: a.lastUpdate,\n firstCapturedUpdate: null,\n lastCapturedUpdate: null,\n firstEffect: null,\n lastEffect: null,\n firstCapturedEffect: null,\n lastCapturedEffect: null\n };\n}\n\nfunction Bg(a, b) {\n return {\n expirationTime: a,\n suspenseConfig: b,\n tag: 0,\n payload: null,\n callback: null,\n next: null,\n nextEffect: null\n };\n}\n\nfunction Cg(a, b) {\n null === a.lastUpdate ? a.firstUpdate = a.lastUpdate = b : (a.lastUpdate.next = b, a.lastUpdate = b);\n}\n\nfunction Dg(a, b) {\n var c = a.alternate;\n\n if (null === c) {\n var d = a.updateQueue;\n var e = null;\n null === d && (d = a.updateQueue = zg(a.memoizedState));\n } else d = a.updateQueue, e = c.updateQueue, null === d ? null === e ? (d = a.updateQueue = zg(a.memoizedState), e = c.updateQueue = zg(c.memoizedState)) : d = a.updateQueue = Ag(e) : null === e && (e = c.updateQueue = Ag(d));\n\n null === e || d === e ? Cg(d, b) : null === d.lastUpdate || null === e.lastUpdate ? (Cg(d, b), Cg(e, b)) : (Cg(d, b), e.lastUpdate = b);\n}\n\nfunction Eg(a, b) {\n var c = a.updateQueue;\n c = null === c ? a.updateQueue = zg(a.memoizedState) : Fg(a, c);\n null === c.lastCapturedUpdate ? c.firstCapturedUpdate = c.lastCapturedUpdate = b : (c.lastCapturedUpdate.next = b, c.lastCapturedUpdate = b);\n}\n\nfunction Fg(a, b) {\n var c = a.alternate;\n null !== c && b === c.updateQueue && (b = a.updateQueue = Ag(b));\n return b;\n}\n\nfunction Gg(a, b, c, d, e, f) {\n switch (c.tag) {\n case 1:\n return a = c.payload, \"function\" === typeof a ? a.call(f, d, e) : a;\n\n case 3:\n a.effectTag = a.effectTag & -4097 | 64;\n\n case 0:\n a = c.payload;\n e = \"function\" === typeof a ? a.call(f, d, e) : a;\n if (null === e || void 0 === e) break;\n return n({}, d, e);\n\n case 2:\n yg = !0;\n }\n\n return d;\n}\n\nfunction Hg(a, b, c, d, e) {\n yg = !1;\n b = Fg(a, b);\n\n for (var f = b.baseState, g = null, h = 0, k = b.firstUpdate, l = f; null !== k;) {\n var m = k.expirationTime;\n m < e ? (null === g && (g = k, f = l), h < m && (h = m)) : (Ig(m, k.suspenseConfig), l = Gg(a, b, k, l, c, d), null !== k.callback && (a.effectTag |= 32, k.nextEffect = null, null === b.lastEffect ? b.firstEffect = b.lastEffect = k : (b.lastEffect.nextEffect = k, b.lastEffect = k)));\n k = k.next;\n }\n\n m = null;\n\n for (k = b.firstCapturedUpdate; null !== k;) {\n var C = k.expirationTime;\n C < e ? (null === m && (m = k, null === g && (f = l)), h < C && (h = C)) : (l = Gg(a, b, k, l, c, d), null !== k.callback && (a.effectTag |= 32, k.nextEffect = null, null === b.lastCapturedEffect ? b.firstCapturedEffect = b.lastCapturedEffect = k : (b.lastCapturedEffect.nextEffect = k, b.lastCapturedEffect = k)));\n k = k.next;\n }\n\n null === g && (b.lastUpdate = null);\n null === m ? b.lastCapturedUpdate = null : a.effectTag |= 32;\n null === g && null === m && (f = l);\n b.baseState = f;\n b.firstUpdate = g;\n b.firstCapturedUpdate = m;\n Jg(h);\n a.expirationTime = h;\n a.memoizedState = l;\n}\n\nfunction Kg(a, b, c) {\n null !== b.firstCapturedUpdate && (null !== b.lastUpdate && (b.lastUpdate.next = b.firstCapturedUpdate, b.lastUpdate = b.lastCapturedUpdate), b.firstCapturedUpdate = b.lastCapturedUpdate = null);\n Lg(b.firstEffect, c);\n b.firstEffect = b.lastEffect = null;\n Lg(b.firstCapturedEffect, c);\n b.firstCapturedEffect = b.lastCapturedEffect = null;\n}\n\nfunction Lg(a, b) {\n for (; null !== a;) {\n var c = a.callback;\n\n if (null !== c) {\n a.callback = null;\n var d = b;\n if (\"function\" !== typeof c) throw Error(u(191, c));\n c.call(d);\n }\n\n a = a.nextEffect;\n }\n}\n\nvar Mg = Ea.ReactCurrentBatchConfig,\n Ng = new aa.Component().refs;\n\nfunction Og(a, b, c, d) {\n b = a.memoizedState;\n c = c(d, b);\n c = null === c || void 0 === c ? b : n({}, b, c);\n a.memoizedState = c;\n d = a.updateQueue;\n null !== d && 0 === a.expirationTime && (d.baseState = c);\n}\n\nvar Sg = {\n isMounted: function isMounted(a) {\n return (a = a._reactInternalFiber) ? ec(a) === a : !1;\n },\n enqueueSetState: function enqueueSetState(a, b, c) {\n a = a._reactInternalFiber;\n var d = Pg(),\n e = Mg.suspense;\n d = Qg(d, a, e);\n e = Bg(d, e);\n e.payload = b;\n void 0 !== c && null !== c && (e.callback = c);\n Dg(a, e);\n Rg(a, d);\n },\n enqueueReplaceState: function enqueueReplaceState(a, b, c) {\n a = a._reactInternalFiber;\n var d = Pg(),\n e = Mg.suspense;\n d = Qg(d, a, e);\n e = Bg(d, e);\n e.tag = 1;\n e.payload = b;\n void 0 !== c && null !== c && (e.callback = c);\n Dg(a, e);\n Rg(a, d);\n },\n enqueueForceUpdate: function enqueueForceUpdate(a, b) {\n a = a._reactInternalFiber;\n var c = Pg(),\n d = Mg.suspense;\n c = Qg(c, a, d);\n d = Bg(c, d);\n d.tag = 2;\n void 0 !== b && null !== b && (d.callback = b);\n Dg(a, d);\n Rg(a, c);\n }\n};\n\nfunction Tg(a, b, c, d, e, f, g) {\n a = a.stateNode;\n return \"function\" === typeof a.shouldComponentUpdate ? a.shouldComponentUpdate(d, f, g) : b.prototype && b.prototype.isPureReactComponent ? !qf(c, d) || !qf(e, f) : !0;\n}\n\nfunction Ug(a, b, c) {\n var d = !1,\n e = Cf;\n var f = b.contextType;\n \"object\" === typeof f && null !== f ? f = xg(f) : (e = L(b) ? Df : J.current, d = b.contextTypes, f = (d = null !== d && void 0 !== d) ? Ef(a, e) : Cf);\n b = new b(c, f);\n a.memoizedState = null !== b.state && void 0 !== b.state ? b.state : null;\n b.updater = Sg;\n a.stateNode = b;\n b._reactInternalFiber = a;\n d && (a = a.stateNode, a.__reactInternalMemoizedUnmaskedChildContext = e, a.__reactInternalMemoizedMaskedChildContext = f);\n return b;\n}\n\nfunction Vg(a, b, c, d) {\n a = b.state;\n \"function\" === typeof b.componentWillReceiveProps && b.componentWillReceiveProps(c, d);\n \"function\" === typeof b.UNSAFE_componentWillReceiveProps && b.UNSAFE_componentWillReceiveProps(c, d);\n b.state !== a && Sg.enqueueReplaceState(b, b.state, null);\n}\n\nfunction Wg(a, b, c, d) {\n var e = a.stateNode;\n e.props = c;\n e.state = a.memoizedState;\n e.refs = Ng;\n var f = b.contextType;\n \"object\" === typeof f && null !== f ? e.context = xg(f) : (f = L(b) ? Df : J.current, e.context = Ef(a, f));\n f = a.updateQueue;\n null !== f && (Hg(a, f, c, e, d), e.state = a.memoizedState);\n f = b.getDerivedStateFromProps;\n \"function\" === typeof f && (Og(a, b, f, c), e.state = a.memoizedState);\n \"function\" === typeof b.getDerivedStateFromProps || \"function\" === typeof e.getSnapshotBeforeUpdate || \"function\" !== typeof e.UNSAFE_componentWillMount && \"function\" !== typeof e.componentWillMount || (b = e.state, \"function\" === typeof e.componentWillMount && e.componentWillMount(), \"function\" === typeof e.UNSAFE_componentWillMount && e.UNSAFE_componentWillMount(), b !== e.state && Sg.enqueueReplaceState(e, e.state, null), f = a.updateQueue, null !== f && (Hg(a, f, c, e, d), e.state = a.memoizedState));\n \"function\" === typeof e.componentDidMount && (a.effectTag |= 4);\n}\n\nvar Xg = Array.isArray;\n\nfunction Yg(a, b, c) {\n a = c.ref;\n\n if (null !== a && \"function\" !== typeof a && \"object\" !== typeof a) {\n if (c._owner) {\n c = c._owner;\n\n if (c) {\n if (1 !== c.tag) throw Error(u(309));\n var d = c.stateNode;\n }\n\n if (!d) throw Error(u(147, a));\n var e = \"\" + a;\n if (null !== b && null !== b.ref && \"function\" === typeof b.ref && b.ref._stringRef === e) return b.ref;\n\n b = function b(a) {\n var b = d.refs;\n b === Ng && (b = d.refs = {});\n null === a ? delete b[e] : b[e] = a;\n };\n\n b._stringRef = e;\n return b;\n }\n\n if (\"string\" !== typeof a) throw Error(u(284));\n if (!c._owner) throw Error(u(290, a));\n }\n\n return a;\n}\n\nfunction Zg(a, b) {\n if (\"textarea\" !== a.type) throw Error(u(31, \"[object Object]\" === Object.prototype.toString.call(b) ? \"object with keys {\" + Object.keys(b).join(\", \") + \"}\" : b, \"\"));\n}\n\nfunction $g(a) {\n function b(b, c) {\n if (a) {\n var d = b.lastEffect;\n null !== d ? (d.nextEffect = c, b.lastEffect = c) : b.firstEffect = b.lastEffect = c;\n c.nextEffect = null;\n c.effectTag = 8;\n }\n }\n\n function c(c, d) {\n if (!a) return null;\n\n for (; null !== d;) {\n b(c, d), d = d.sibling;\n }\n\n return null;\n }\n\n function d(a, b) {\n for (a = new Map(); null !== b;) {\n null !== b.key ? a.set(b.key, b) : a.set(b.index, b), b = b.sibling;\n }\n\n return a;\n }\n\n function e(a, b, c) {\n a = ah(a, b, c);\n a.index = 0;\n a.sibling = null;\n return a;\n }\n\n function f(b, c, d) {\n b.index = d;\n if (!a) return c;\n d = b.alternate;\n if (null !== d) return d = d.index, d < c ? (b.effectTag = 2, c) : d;\n b.effectTag = 2;\n return c;\n }\n\n function g(b) {\n a && null === b.alternate && (b.effectTag = 2);\n return b;\n }\n\n function h(a, b, c, d) {\n if (null === b || 6 !== b.tag) return b = bh(c, a.mode, d), b.return = a, b;\n b = e(b, c, d);\n b.return = a;\n return b;\n }\n\n function k(a, b, c, d) {\n if (null !== b && b.elementType === c.type) return d = e(b, c.props, d), d.ref = Yg(a, b, c), d.return = a, d;\n d = ch(c.type, c.key, c.props, null, a.mode, d);\n d.ref = Yg(a, b, c);\n d.return = a;\n return d;\n }\n\n function l(a, b, c, d) {\n if (null === b || 4 !== b.tag || b.stateNode.containerInfo !== c.containerInfo || b.stateNode.implementation !== c.implementation) return b = dh(c, a.mode, d), b.return = a, b;\n b = e(b, c.children || [], d);\n b.return = a;\n return b;\n }\n\n function m(a, b, c, d, f) {\n if (null === b || 7 !== b.tag) return b = eh(c, a.mode, d, f), b.return = a, b;\n b = e(b, c, d);\n b.return = a;\n return b;\n }\n\n function C(a, b, c) {\n if (\"string\" === typeof b || \"number\" === typeof b) return b = bh(\"\" + b, a.mode, c), b.return = a, b;\n\n if (\"object\" === typeof b && null !== b) {\n switch (b.$$typeof) {\n case Ga:\n return c = ch(b.type, b.key, b.props, null, a.mode, c), c.ref = Yg(a, null, b), c.return = a, c;\n\n case Ha:\n return b = dh(b, a.mode, c), b.return = a, b;\n }\n\n if (Xg(b) || Ua(b)) return b = eh(b, a.mode, c, null), b.return = a, b;\n Zg(a, b);\n }\n\n return null;\n }\n\n function y(a, b, c, d) {\n var e = null !== b ? b.key : null;\n if (\"string\" === typeof c || \"number\" === typeof c) return null !== e ? null : h(a, b, \"\" + c, d);\n\n if (\"object\" === typeof c && null !== c) {\n switch (c.$$typeof) {\n case Ga:\n return c.key === e ? c.type === Ia ? m(a, b, c.props.children, d, e) : k(a, b, c, d) : null;\n\n case Ha:\n return c.key === e ? l(a, b, c, d) : null;\n }\n\n if (Xg(c) || Ua(c)) return null !== e ? null : m(a, b, c, d, null);\n Zg(a, c);\n }\n\n return null;\n }\n\n function H(a, b, c, d, e) {\n if (\"string\" === typeof d || \"number\" === typeof d) return a = a.get(c) || null, h(b, a, \"\" + d, e);\n\n if (\"object\" === typeof d && null !== d) {\n switch (d.$$typeof) {\n case Ga:\n return a = a.get(null === d.key ? c : d.key) || null, d.type === Ia ? m(b, a, d.props.children, e, d.key) : k(b, a, d, e);\n\n case Ha:\n return a = a.get(null === d.key ? c : d.key) || null, l(b, a, d, e);\n }\n\n if (Xg(d) || Ua(d)) return a = a.get(c) || null, m(b, a, d, e, null);\n Zg(b, d);\n }\n\n return null;\n }\n\n function z(e, g, h, k) {\n for (var l = null, m = null, r = g, x = g = 0, A = null; null !== r && x < h.length; x++) {\n r.index > x ? (A = r, r = null) : A = r.sibling;\n var p = y(e, r, h[x], k);\n\n if (null === p) {\n null === r && (r = A);\n break;\n }\n\n a && r && null === p.alternate && b(e, r);\n g = f(p, g, x);\n null === m ? l = p : m.sibling = p;\n m = p;\n r = A;\n }\n\n if (x === h.length) return c(e, r), l;\n\n if (null === r) {\n for (; x < h.length; x++) {\n r = C(e, h[x], k), null !== r && (g = f(r, g, x), null === m ? l = r : m.sibling = r, m = r);\n }\n\n return l;\n }\n\n for (r = d(e, r); x < h.length; x++) {\n A = H(r, e, x, h[x], k), null !== A && (a && null !== A.alternate && r.delete(null === A.key ? x : A.key), g = f(A, g, x), null === m ? l = A : m.sibling = A, m = A);\n }\n\n a && r.forEach(function (a) {\n return b(e, a);\n });\n return l;\n }\n\n function ta(e, g, h, k) {\n var l = Ua(h);\n if (\"function\" !== typeof l) throw Error(u(150));\n h = l.call(h);\n if (null == h) throw Error(u(151));\n\n for (var m = l = null, r = g, x = g = 0, A = null, p = h.next(); null !== r && !p.done; x++, p = h.next()) {\n r.index > x ? (A = r, r = null) : A = r.sibling;\n var z = y(e, r, p.value, k);\n\n if (null === z) {\n null === r && (r = A);\n break;\n }\n\n a && r && null === z.alternate && b(e, r);\n g = f(z, g, x);\n null === m ? l = z : m.sibling = z;\n m = z;\n r = A;\n }\n\n if (p.done) return c(e, r), l;\n\n if (null === r) {\n for (; !p.done; x++, p = h.next()) {\n p = C(e, p.value, k), null !== p && (g = f(p, g, x), null === m ? l = p : m.sibling = p, m = p);\n }\n\n return l;\n }\n\n for (r = d(e, r); !p.done; x++, p = h.next()) {\n p = H(r, e, x, p.value, k), null !== p && (a && null !== p.alternate && r.delete(null === p.key ? x : p.key), g = f(p, g, x), null === m ? l = p : m.sibling = p, m = p);\n }\n\n a && r.forEach(function (a) {\n return b(e, a);\n });\n return l;\n }\n\n return function (a, d, f, h) {\n var k = \"object\" === typeof f && null !== f && f.type === Ia && null === f.key;\n k && (f = f.props.children);\n var l = \"object\" === typeof f && null !== f;\n if (l) switch (f.$$typeof) {\n case Ga:\n a: {\n l = f.key;\n\n for (k = d; null !== k;) {\n if (k.key === l) {\n if (7 === k.tag ? f.type === Ia : k.elementType === f.type) {\n c(a, k.sibling);\n d = e(k, f.type === Ia ? f.props.children : f.props, h);\n d.ref = Yg(a, k, f);\n d.return = a;\n a = d;\n break a;\n } else {\n c(a, k);\n break;\n }\n } else b(a, k);\n k = k.sibling;\n }\n\n f.type === Ia ? (d = eh(f.props.children, a.mode, h, f.key), d.return = a, a = d) : (h = ch(f.type, f.key, f.props, null, a.mode, h), h.ref = Yg(a, d, f), h.return = a, a = h);\n }\n\n return g(a);\n\n case Ha:\n a: {\n for (k = f.key; null !== d;) {\n if (d.key === k) {\n if (4 === d.tag && d.stateNode.containerInfo === f.containerInfo && d.stateNode.implementation === f.implementation) {\n c(a, d.sibling);\n d = e(d, f.children || [], h);\n d.return = a;\n a = d;\n break a;\n } else {\n c(a, d);\n break;\n }\n } else b(a, d);\n d = d.sibling;\n }\n\n d = dh(f, a.mode, h);\n d.return = a;\n a = d;\n }\n\n return g(a);\n }\n if (\"string\" === typeof f || \"number\" === typeof f) return f = \"\" + f, null !== d && 6 === d.tag ? (c(a, d.sibling), d = e(d, f, h), d.return = a, a = d) : (c(a, d), d = bh(f, a.mode, h), d.return = a, a = d), g(a);\n if (Xg(f)) return z(a, d, f, h);\n if (Ua(f)) return ta(a, d, f, h);\n l && Zg(a, f);\n if (\"undefined\" === typeof f && !k) switch (a.tag) {\n case 1:\n case 0:\n throw a = a.type, Error(u(152, a.displayName || a.name || \"Component\"));\n }\n return c(a, d);\n };\n}\n\nvar fh = $g(!0),\n gh = $g(!1),\n hh = {},\n ih = {\n current: hh\n},\n jh = {\n current: hh\n},\n kh = {\n current: hh\n};\n\nfunction lh(a) {\n if (a === hh) throw Error(u(174));\n return a;\n}\n\nfunction mh(a, b) {\n I(kh, b, a);\n I(jh, a, a);\n I(ih, hh, a);\n var c = b.nodeType;\n\n switch (c) {\n case 9:\n case 11:\n b = (b = b.documentElement) ? b.namespaceURI : Qb(null, \"\");\n break;\n\n default:\n c = 8 === c ? b.parentNode : b, b = c.namespaceURI || null, c = c.tagName, b = Qb(b, c);\n }\n\n G(ih, a);\n I(ih, b, a);\n}\n\nfunction nh(a) {\n G(ih, a);\n G(jh, a);\n G(kh, a);\n}\n\nfunction oh(a) {\n lh(kh.current);\n var b = lh(ih.current);\n var c = Qb(b, a.type);\n b !== c && (I(jh, a, a), I(ih, c, a));\n}\n\nfunction ph(a) {\n jh.current === a && (G(ih, a), G(jh, a));\n}\n\nvar M = {\n current: 0\n};\n\nfunction qh(a) {\n for (var b = a; null !== b;) {\n if (13 === b.tag) {\n var c = b.memoizedState;\n if (null !== c && (c = c.dehydrated, null === c || c.data === je || c.data === ke)) return b;\n } else if (19 === b.tag && void 0 !== b.memoizedProps.revealOrder) {\n if (0 !== (b.effectTag & 64)) return b;\n } else if (null !== b.child) {\n b.child.return = b;\n b = b.child;\n continue;\n }\n\n if (b === a) break;\n\n for (; null === b.sibling;) {\n if (null === b.return || b.return === a) return null;\n b = b.return;\n }\n\n b.sibling.return = b.return;\n b = b.sibling;\n }\n\n return null;\n}\n\nfunction rh(a, b) {\n return {\n responder: a,\n props: b\n };\n}\n\nvar sh = Ea.ReactCurrentDispatcher,\n N = Ea.ReactCurrentBatchConfig,\n th = 0,\n uh = null,\n O = null,\n vh = null,\n wh = null,\n P = null,\n xh = null,\n yh = 0,\n zh = null,\n Ah = 0,\n Bh = !1,\n Ch = null,\n Gh = 0;\n\nfunction Q() {\n throw Error(u(321));\n}\n\nfunction Hh(a, b) {\n if (null === b) return !1;\n\n for (var c = 0; c < b.length && c < a.length; c++) {\n if (!of(a[c], b[c])) return !1;\n }\n\n return !0;\n}\n\nfunction Ih(a, b, c, d, e, f) {\n th = f;\n uh = b;\n vh = null !== a ? a.memoizedState : null;\n sh.current = null === vh ? Jh : Kh;\n b = c(d, e);\n\n if (Bh) {\n do {\n Bh = !1, Gh += 1, vh = null !== a ? a.memoizedState : null, xh = wh, zh = P = O = null, sh.current = Kh, b = c(d, e);\n } while (Bh);\n\n Ch = null;\n Gh = 0;\n }\n\n sh.current = Lh;\n a = uh;\n a.memoizedState = wh;\n a.expirationTime = yh;\n a.updateQueue = zh;\n a.effectTag |= Ah;\n a = null !== O && null !== O.next;\n th = 0;\n xh = P = wh = vh = O = uh = null;\n yh = 0;\n zh = null;\n Ah = 0;\n if (a) throw Error(u(300));\n return b;\n}\n\nfunction Mh() {\n sh.current = Lh;\n th = 0;\n xh = P = wh = vh = O = uh = null;\n yh = 0;\n zh = null;\n Ah = 0;\n Bh = !1;\n Ch = null;\n Gh = 0;\n}\n\nfunction Nh() {\n var a = {\n memoizedState: null,\n baseState: null,\n queue: null,\n baseUpdate: null,\n next: null\n };\n null === P ? wh = P = a : P = P.next = a;\n return P;\n}\n\nfunction Oh() {\n if (null !== xh) P = xh, xh = P.next, O = vh, vh = null !== O ? O.next : null;else {\n if (null === vh) throw Error(u(310));\n O = vh;\n var a = {\n memoizedState: O.memoizedState,\n baseState: O.baseState,\n queue: O.queue,\n baseUpdate: O.baseUpdate,\n next: null\n };\n P = null === P ? wh = a : P.next = a;\n vh = O.next;\n }\n return P;\n}\n\nfunction Ph(a, b) {\n return \"function\" === typeof b ? b(a) : b;\n}\n\nfunction Qh(a) {\n var b = Oh(),\n c = b.queue;\n if (null === c) throw Error(u(311));\n c.lastRenderedReducer = a;\n\n if (0 < Gh) {\n var d = c.dispatch;\n\n if (null !== Ch) {\n var e = Ch.get(c);\n\n if (void 0 !== e) {\n Ch.delete(c);\n var f = b.memoizedState;\n\n do {\n f = a(f, e.action), e = e.next;\n } while (null !== e);\n\n of(f, b.memoizedState) || (wg = !0);\n b.memoizedState = f;\n b.baseUpdate === c.last && (b.baseState = f);\n c.lastRenderedState = f;\n return [f, d];\n }\n }\n\n return [b.memoizedState, d];\n }\n\n d = c.last;\n var g = b.baseUpdate;\n f = b.baseState;\n null !== g ? (null !== d && (d.next = null), d = g.next) : d = null !== d ? d.next : null;\n\n if (null !== d) {\n var h = e = null,\n k = d,\n l = !1;\n\n do {\n var m = k.expirationTime;\n m < th ? (l || (l = !0, h = g, e = f), m > yh && (yh = m, Jg(yh))) : (Ig(m, k.suspenseConfig), f = k.eagerReducer === a ? k.eagerState : a(f, k.action));\n g = k;\n k = k.next;\n } while (null !== k && k !== d);\n\n l || (h = g, e = f);\n of(f, b.memoizedState) || (wg = !0);\n b.memoizedState = f;\n b.baseUpdate = h;\n b.baseState = e;\n c.lastRenderedState = f;\n }\n\n return [b.memoizedState, c.dispatch];\n}\n\nfunction Rh(a) {\n var b = Nh();\n \"function\" === typeof a && (a = a());\n b.memoizedState = b.baseState = a;\n a = b.queue = {\n last: null,\n dispatch: null,\n lastRenderedReducer: Ph,\n lastRenderedState: a\n };\n a = a.dispatch = Sh.bind(null, uh, a);\n return [b.memoizedState, a];\n}\n\nfunction Th(a) {\n return Qh(Ph, a);\n}\n\nfunction Uh(a, b, c, d) {\n a = {\n tag: a,\n create: b,\n destroy: c,\n deps: d,\n next: null\n };\n null === zh ? (zh = {\n lastEffect: null\n }, zh.lastEffect = a.next = a) : (b = zh.lastEffect, null === b ? zh.lastEffect = a.next = a : (c = b.next, b.next = a, a.next = c, zh.lastEffect = a));\n return a;\n}\n\nfunction Vh(a, b, c, d) {\n var e = Nh();\n Ah |= a;\n e.memoizedState = Uh(b, c, void 0, void 0 === d ? null : d);\n}\n\nfunction Wh(a, b, c, d) {\n var e = Oh();\n d = void 0 === d ? null : d;\n var f = void 0;\n\n if (null !== O) {\n var g = O.memoizedState;\n f = g.destroy;\n\n if (null !== d && Hh(d, g.deps)) {\n Uh(0, c, f, d);\n return;\n }\n }\n\n Ah |= a;\n e.memoizedState = Uh(b, c, f, d);\n}\n\nfunction Xh(a, b) {\n return Vh(516, 192, a, b);\n}\n\nfunction Yh(a, b) {\n return Wh(516, 192, a, b);\n}\n\nfunction Zh(a, b) {\n if (\"function\" === typeof b) return a = a(), b(a), function () {\n b(null);\n };\n if (null !== b && void 0 !== b) return a = a(), b.current = a, function () {\n b.current = null;\n };\n}\n\nfunction $h() {}\n\nfunction ai(a, b) {\n Nh().memoizedState = [a, void 0 === b ? null : b];\n return a;\n}\n\nfunction bi(a, b) {\n var c = Oh();\n b = void 0 === b ? null : b;\n var d = c.memoizedState;\n if (null !== d && null !== b && Hh(b, d[1])) return d[0];\n c.memoizedState = [a, b];\n return a;\n}\n\nfunction Sh(a, b, c) {\n if (!(25 > Gh)) throw Error(u(301));\n var d = a.alternate;\n if (a === uh || null !== d && d === uh) {\n if (Bh = !0, a = {\n expirationTime: th,\n suspenseConfig: null,\n action: c,\n eagerReducer: null,\n eagerState: null,\n next: null\n }, null === Ch && (Ch = new Map()), c = Ch.get(b), void 0 === c) Ch.set(b, a);else {\n for (b = c; null !== b.next;) {\n b = b.next;\n }\n\n b.next = a;\n }\n } else {\n var e = Pg(),\n f = Mg.suspense;\n e = Qg(e, a, f);\n f = {\n expirationTime: e,\n suspenseConfig: f,\n action: c,\n eagerReducer: null,\n eagerState: null,\n next: null\n };\n var g = b.last;\n if (null === g) f.next = f;else {\n var h = g.next;\n null !== h && (f.next = h);\n g.next = f;\n }\n b.last = f;\n if (0 === a.expirationTime && (null === d || 0 === d.expirationTime) && (d = b.lastRenderedReducer, null !== d)) try {\n var k = b.lastRenderedState,\n l = d(k, c);\n f.eagerReducer = d;\n f.eagerState = l;\n if (of(l, k)) return;\n } catch (m) {} finally {}\n Rg(a, e);\n }\n}\n\nvar Lh = {\n readContext: xg,\n useCallback: Q,\n useContext: Q,\n useEffect: Q,\n useImperativeHandle: Q,\n useLayoutEffect: Q,\n useMemo: Q,\n useReducer: Q,\n useRef: Q,\n useState: Q,\n useDebugValue: Q,\n useResponder: Q,\n useDeferredValue: Q,\n useTransition: Q\n},\n Jh = {\n readContext: xg,\n useCallback: ai,\n useContext: xg,\n useEffect: Xh,\n useImperativeHandle: function useImperativeHandle(a, b, c) {\n c = null !== c && void 0 !== c ? c.concat([a]) : null;\n return Vh(4, 36, Zh.bind(null, b, a), c);\n },\n useLayoutEffect: function useLayoutEffect(a, b) {\n return Vh(4, 36, a, b);\n },\n useMemo: function useMemo(a, b) {\n var c = Nh();\n b = void 0 === b ? null : b;\n a = a();\n c.memoizedState = [a, b];\n return a;\n },\n useReducer: function useReducer(a, b, c) {\n var d = Nh();\n b = void 0 !== c ? c(b) : b;\n d.memoizedState = d.baseState = b;\n a = d.queue = {\n last: null,\n dispatch: null,\n lastRenderedReducer: a,\n lastRenderedState: b\n };\n a = a.dispatch = Sh.bind(null, uh, a);\n return [d.memoizedState, a];\n },\n useRef: function useRef(a) {\n var b = Nh();\n a = {\n current: a\n };\n return b.memoizedState = a;\n },\n useState: Rh,\n useDebugValue: $h,\n useResponder: rh,\n useDeferredValue: function useDeferredValue(a, b) {\n var c = Rh(a),\n d = c[0],\n e = c[1];\n Xh(function () {\n q.unstable_next(function () {\n var c = N.suspense;\n N.suspense = void 0 === b ? null : b;\n\n try {\n e(a);\n } finally {\n N.suspense = c;\n }\n });\n }, [a, b]);\n return d;\n },\n useTransition: function useTransition(a) {\n var b = Rh(!1),\n c = b[0],\n d = b[1];\n return [ai(function (b) {\n d(!0);\n q.unstable_next(function () {\n var c = N.suspense;\n N.suspense = void 0 === a ? null : a;\n\n try {\n d(!1), b();\n } finally {\n N.suspense = c;\n }\n });\n }, [a, c]), c];\n }\n},\n Kh = {\n readContext: xg,\n useCallback: bi,\n useContext: xg,\n useEffect: Yh,\n useImperativeHandle: function useImperativeHandle(a, b, c) {\n c = null !== c && void 0 !== c ? c.concat([a]) : null;\n return Wh(4, 36, Zh.bind(null, b, a), c);\n },\n useLayoutEffect: function useLayoutEffect(a, b) {\n return Wh(4, 36, a, b);\n },\n useMemo: function useMemo(a, b) {\n var c = Oh();\n b = void 0 === b ? null : b;\n var d = c.memoizedState;\n if (null !== d && null !== b && Hh(b, d[1])) return d[0];\n a = a();\n c.memoizedState = [a, b];\n return a;\n },\n useReducer: Qh,\n useRef: function useRef() {\n return Oh().memoizedState;\n },\n useState: Th,\n useDebugValue: $h,\n useResponder: rh,\n useDeferredValue: function useDeferredValue(a, b) {\n var c = Th(a),\n d = c[0],\n e = c[1];\n Yh(function () {\n q.unstable_next(function () {\n var c = N.suspense;\n N.suspense = void 0 === b ? null : b;\n\n try {\n e(a);\n } finally {\n N.suspense = c;\n }\n });\n }, [a, b]);\n return d;\n },\n useTransition: function useTransition(a) {\n var b = Th(!1),\n c = b[0],\n d = b[1];\n return [bi(function (b) {\n d(!0);\n q.unstable_next(function () {\n var c = N.suspense;\n N.suspense = void 0 === a ? null : a;\n\n try {\n d(!1), b();\n } finally {\n N.suspense = c;\n }\n });\n }, [a, c]), c];\n }\n},\n ci = null,\n di = null,\n ei = !1;\n\nfunction fi(a, b) {\n var c = gi(5, null, null, 0);\n c.elementType = \"DELETED\";\n c.type = \"DELETED\";\n c.stateNode = b;\n c.return = a;\n c.effectTag = 8;\n null !== a.lastEffect ? (a.lastEffect.nextEffect = c, a.lastEffect = c) : a.firstEffect = a.lastEffect = c;\n}\n\nfunction hi(a, b) {\n switch (a.tag) {\n case 5:\n var c = a.type;\n b = 1 !== b.nodeType || c.toLowerCase() !== b.nodeName.toLowerCase() ? null : b;\n return null !== b ? (a.stateNode = b, !0) : !1;\n\n case 6:\n return b = \"\" === a.pendingProps || 3 !== b.nodeType ? null : b, null !== b ? (a.stateNode = b, !0) : !1;\n\n case 13:\n return !1;\n\n default:\n return !1;\n }\n}\n\nfunction ii(a) {\n if (ei) {\n var b = di;\n\n if (b) {\n var c = b;\n\n if (!hi(a, b)) {\n b = re(c.nextSibling);\n\n if (!b || !hi(a, b)) {\n a.effectTag = a.effectTag & -1025 | 2;\n ei = !1;\n ci = a;\n return;\n }\n\n fi(ci, c);\n }\n\n ci = a;\n di = re(b.firstChild);\n } else a.effectTag = a.effectTag & -1025 | 2, ei = !1, ci = a;\n }\n}\n\nfunction ji(a) {\n for (a = a.return; null !== a && 5 !== a.tag && 3 !== a.tag && 13 !== a.tag;) {\n a = a.return;\n }\n\n ci = a;\n}\n\nfunction ki(a) {\n if (a !== ci) return !1;\n if (!ei) return ji(a), ei = !0, !1;\n var b = a.type;\n if (5 !== a.tag || \"head\" !== b && \"body\" !== b && !oe(b, a.memoizedProps)) for (b = di; b;) {\n fi(a, b), b = re(b.nextSibling);\n }\n ji(a);\n\n if (13 === a.tag) {\n a = a.memoizedState;\n a = null !== a ? a.dehydrated : null;\n if (!a) throw Error(u(317));\n\n a: {\n a = a.nextSibling;\n\n for (b = 0; a;) {\n if (8 === a.nodeType) {\n var c = a.data;\n\n if (c === ie) {\n if (0 === b) {\n di = re(a.nextSibling);\n break a;\n }\n\n b--;\n } else c !== he && c !== ke && c !== je || b++;\n }\n\n a = a.nextSibling;\n }\n\n di = null;\n }\n } else di = ci ? re(a.stateNode.nextSibling) : null;\n\n return !0;\n}\n\nfunction li() {\n di = ci = null;\n ei = !1;\n}\n\nvar mi = Ea.ReactCurrentOwner,\n wg = !1;\n\nfunction R(a, b, c, d) {\n b.child = null === a ? gh(b, null, c, d) : fh(b, a.child, c, d);\n}\n\nfunction ni(a, b, c, d, e) {\n c = c.render;\n var f = b.ref;\n vg(b, e);\n d = Ih(a, b, c, d, f, e);\n if (null !== a && !wg) return b.updateQueue = a.updateQueue, b.effectTag &= -517, a.expirationTime <= e && (a.expirationTime = 0), oi(a, b, e);\n b.effectTag |= 1;\n R(a, b, d, e);\n return b.child;\n}\n\nfunction pi(a, b, c, d, e, f) {\n if (null === a) {\n var g = c.type;\n if (\"function\" === typeof g && !qi(g) && void 0 === g.defaultProps && null === c.compare && void 0 === c.defaultProps) return b.tag = 15, b.type = g, ri(a, b, g, d, e, f);\n a = ch(c.type, null, d, null, b.mode, f);\n a.ref = b.ref;\n a.return = b;\n return b.child = a;\n }\n\n g = a.child;\n if (e < f && (e = g.memoizedProps, c = c.compare, c = null !== c ? c : qf, c(e, d) && a.ref === b.ref)) return oi(a, b, f);\n b.effectTag |= 1;\n a = ah(g, d, f);\n a.ref = b.ref;\n a.return = b;\n return b.child = a;\n}\n\nfunction ri(a, b, c, d, e, f) {\n return null !== a && qf(a.memoizedProps, d) && a.ref === b.ref && (wg = !1, e < f) ? oi(a, b, f) : si(a, b, c, d, f);\n}\n\nfunction ti(a, b) {\n var c = b.ref;\n if (null === a && null !== c || null !== a && a.ref !== c) b.effectTag |= 128;\n}\n\nfunction si(a, b, c, d, e) {\n var f = L(c) ? Df : J.current;\n f = Ef(b, f);\n vg(b, e);\n c = Ih(a, b, c, d, f, e);\n if (null !== a && !wg) return b.updateQueue = a.updateQueue, b.effectTag &= -517, a.expirationTime <= e && (a.expirationTime = 0), oi(a, b, e);\n b.effectTag |= 1;\n R(a, b, c, e);\n return b.child;\n}\n\nfunction ui(a, b, c, d, e) {\n if (L(c)) {\n var f = !0;\n Jf(b);\n } else f = !1;\n\n vg(b, e);\n if (null === b.stateNode) null !== a && (a.alternate = null, b.alternate = null, b.effectTag |= 2), Ug(b, c, d, e), Wg(b, c, d, e), d = !0;else if (null === a) {\n var g = b.stateNode,\n h = b.memoizedProps;\n g.props = h;\n var k = g.context,\n l = c.contextType;\n \"object\" === typeof l && null !== l ? l = xg(l) : (l = L(c) ? Df : J.current, l = Ef(b, l));\n var m = c.getDerivedStateFromProps,\n C = \"function\" === typeof m || \"function\" === typeof g.getSnapshotBeforeUpdate;\n C || \"function\" !== typeof g.UNSAFE_componentWillReceiveProps && \"function\" !== typeof g.componentWillReceiveProps || (h !== d || k !== l) && Vg(b, g, d, l);\n yg = !1;\n var y = b.memoizedState;\n k = g.state = y;\n var H = b.updateQueue;\n null !== H && (Hg(b, H, d, g, e), k = b.memoizedState);\n h !== d || y !== k || K.current || yg ? (\"function\" === typeof m && (Og(b, c, m, d), k = b.memoizedState), (h = yg || Tg(b, c, h, d, y, k, l)) ? (C || \"function\" !== typeof g.UNSAFE_componentWillMount && \"function\" !== typeof g.componentWillMount || (\"function\" === typeof g.componentWillMount && g.componentWillMount(), \"function\" === typeof g.UNSAFE_componentWillMount && g.UNSAFE_componentWillMount()), \"function\" === typeof g.componentDidMount && (b.effectTag |= 4)) : (\"function\" === typeof g.componentDidMount && (b.effectTag |= 4), b.memoizedProps = d, b.memoizedState = k), g.props = d, g.state = k, g.context = l, d = h) : (\"function\" === typeof g.componentDidMount && (b.effectTag |= 4), d = !1);\n } else g = b.stateNode, h = b.memoizedProps, g.props = b.type === b.elementType ? h : mg(b.type, h), k = g.context, l = c.contextType, \"object\" === typeof l && null !== l ? l = xg(l) : (l = L(c) ? Df : J.current, l = Ef(b, l)), m = c.getDerivedStateFromProps, (C = \"function\" === typeof m || \"function\" === typeof g.getSnapshotBeforeUpdate) || \"function\" !== typeof g.UNSAFE_componentWillReceiveProps && \"function\" !== typeof g.componentWillReceiveProps || (h !== d || k !== l) && Vg(b, g, d, l), yg = !1, k = b.memoizedState, y = g.state = k, H = b.updateQueue, null !== H && (Hg(b, H, d, g, e), y = b.memoizedState), h !== d || k !== y || K.current || yg ? (\"function\" === typeof m && (Og(b, c, m, d), y = b.memoizedState), (m = yg || Tg(b, c, h, d, k, y, l)) ? (C || \"function\" !== typeof g.UNSAFE_componentWillUpdate && \"function\" !== typeof g.componentWillUpdate || (\"function\" === typeof g.componentWillUpdate && g.componentWillUpdate(d, y, l), \"function\" === typeof g.UNSAFE_componentWillUpdate && g.UNSAFE_componentWillUpdate(d, y, l)), \"function\" === typeof g.componentDidUpdate && (b.effectTag |= 4), \"function\" === typeof g.getSnapshotBeforeUpdate && (b.effectTag |= 256)) : (\"function\" !== typeof g.componentDidUpdate || h === a.memoizedProps && k === a.memoizedState || (b.effectTag |= 4), \"function\" !== typeof g.getSnapshotBeforeUpdate || h === a.memoizedProps && k === a.memoizedState || (b.effectTag |= 256), b.memoizedProps = d, b.memoizedState = y), g.props = d, g.state = y, g.context = l, d = m) : (\"function\" !== typeof g.componentDidUpdate || h === a.memoizedProps && k === a.memoizedState || (b.effectTag |= 4), \"function\" !== typeof g.getSnapshotBeforeUpdate || h === a.memoizedProps && k === a.memoizedState || (b.effectTag |= 256), d = !1);\n return vi(a, b, c, d, f, e);\n}\n\nfunction vi(a, b, c, d, e, f) {\n ti(a, b);\n var g = 0 !== (b.effectTag & 64);\n if (!d && !g) return e && Kf(b, c, !1), oi(a, b, f);\n d = b.stateNode;\n mi.current = b;\n var h = g && \"function\" !== typeof c.getDerivedStateFromError ? null : d.render();\n b.effectTag |= 1;\n null !== a && g ? (b.child = fh(b, a.child, null, f), b.child = fh(b, null, h, f)) : R(a, b, h, f);\n b.memoizedState = d.state;\n e && Kf(b, c, !0);\n return b.child;\n}\n\nfunction wi(a) {\n var b = a.stateNode;\n b.pendingContext ? Hf(a, b.pendingContext, b.pendingContext !== b.context) : b.context && Hf(a, b.context, !1);\n mh(a, b.containerInfo);\n}\n\nvar xi = {\n dehydrated: null,\n retryTime: 0\n};\n\nfunction yi(a, b, c) {\n var d = b.mode,\n e = b.pendingProps,\n f = M.current,\n g = !1,\n h;\n (h = 0 !== (b.effectTag & 64)) || (h = 0 !== (f & 2) && (null === a || null !== a.memoizedState));\n h ? (g = !0, b.effectTag &= -65) : null !== a && null === a.memoizedState || void 0 === e.fallback || !0 === e.unstable_avoidThisFallback || (f |= 1);\n I(M, f & 1, b);\n\n if (null === a) {\n void 0 !== e.fallback && ii(b);\n\n if (g) {\n g = e.fallback;\n e = eh(null, d, 0, null);\n e.return = b;\n if (0 === (b.mode & 2)) for (a = null !== b.memoizedState ? b.child.child : b.child, e.child = a; null !== a;) {\n a.return = e, a = a.sibling;\n }\n c = eh(g, d, c, null);\n c.return = b;\n e.sibling = c;\n b.memoizedState = xi;\n b.child = e;\n return c;\n }\n\n d = e.children;\n b.memoizedState = null;\n return b.child = gh(b, null, d, c);\n }\n\n if (null !== a.memoizedState) {\n a = a.child;\n d = a.sibling;\n\n if (g) {\n e = e.fallback;\n c = ah(a, a.pendingProps, 0);\n c.return = b;\n if (0 === (b.mode & 2) && (g = null !== b.memoizedState ? b.child.child : b.child, g !== a.child)) for (c.child = g; null !== g;) {\n g.return = c, g = g.sibling;\n }\n d = ah(d, e, d.expirationTime);\n d.return = b;\n c.sibling = d;\n c.childExpirationTime = 0;\n b.memoizedState = xi;\n b.child = c;\n return d;\n }\n\n c = fh(b, a.child, e.children, c);\n b.memoizedState = null;\n return b.child = c;\n }\n\n a = a.child;\n\n if (g) {\n g = e.fallback;\n e = eh(null, d, 0, null);\n e.return = b;\n e.child = a;\n null !== a && (a.return = e);\n if (0 === (b.mode & 2)) for (a = null !== b.memoizedState ? b.child.child : b.child, e.child = a; null !== a;) {\n a.return = e, a = a.sibling;\n }\n c = eh(g, d, c, null);\n c.return = b;\n e.sibling = c;\n c.effectTag |= 2;\n e.childExpirationTime = 0;\n b.memoizedState = xi;\n b.child = e;\n return c;\n }\n\n b.memoizedState = null;\n return b.child = fh(b, a, e.children, c);\n}\n\nfunction zi(a, b) {\n a.expirationTime < b && (a.expirationTime = b);\n var c = a.alternate;\n null !== c && c.expirationTime < b && (c.expirationTime = b);\n ug(a.return, b);\n}\n\nfunction Ai(a, b, c, d, e, f) {\n var g = a.memoizedState;\n null === g ? a.memoizedState = {\n isBackwards: b,\n rendering: null,\n last: d,\n tail: c,\n tailExpiration: 0,\n tailMode: e,\n lastEffect: f\n } : (g.isBackwards = b, g.rendering = null, g.last = d, g.tail = c, g.tailExpiration = 0, g.tailMode = e, g.lastEffect = f);\n}\n\nfunction Bi(a, b, c) {\n var d = b.pendingProps,\n e = d.revealOrder,\n f = d.tail;\n R(a, b, d.children, c);\n d = M.current;\n if (0 !== (d & 2)) d = d & 1 | 2, b.effectTag |= 64;else {\n if (null !== a && 0 !== (a.effectTag & 64)) a: for (a = b.child; null !== a;) {\n if (13 === a.tag) null !== a.memoizedState && zi(a, c);else if (19 === a.tag) zi(a, c);else if (null !== a.child) {\n a.child.return = a;\n a = a.child;\n continue;\n }\n if (a === b) break a;\n\n for (; null === a.sibling;) {\n if (null === a.return || a.return === b) break a;\n a = a.return;\n }\n\n a.sibling.return = a.return;\n a = a.sibling;\n }\n d &= 1;\n }\n I(M, d, b);\n if (0 === (b.mode & 2)) b.memoizedState = null;else switch (e) {\n case \"forwards\":\n c = b.child;\n\n for (e = null; null !== c;) {\n a = c.alternate, null !== a && null === qh(a) && (e = c), c = c.sibling;\n }\n\n c = e;\n null === c ? (e = b.child, b.child = null) : (e = c.sibling, c.sibling = null);\n Ai(b, !1, e, c, f, b.lastEffect);\n break;\n\n case \"backwards\":\n c = null;\n e = b.child;\n\n for (b.child = null; null !== e;) {\n a = e.alternate;\n\n if (null !== a && null === qh(a)) {\n b.child = e;\n break;\n }\n\n a = e.sibling;\n e.sibling = c;\n c = e;\n e = a;\n }\n\n Ai(b, !0, c, null, f, b.lastEffect);\n break;\n\n case \"together\":\n Ai(b, !1, null, null, void 0, b.lastEffect);\n break;\n\n default:\n b.memoizedState = null;\n }\n return b.child;\n}\n\nfunction oi(a, b, c) {\n null !== a && (b.dependencies = a.dependencies);\n var d = b.expirationTime;\n 0 !== d && Jg(d);\n if (b.childExpirationTime < c) return null;\n if (null !== a && b.child !== a.child) throw Error(u(153));\n\n if (null !== b.child) {\n a = b.child;\n c = ah(a, a.pendingProps, a.expirationTime);\n b.child = c;\n\n for (c.return = b; null !== a.sibling;) {\n a = a.sibling, c = c.sibling = ah(a, a.pendingProps, a.expirationTime), c.return = b;\n }\n\n c.sibling = null;\n }\n\n return b.child;\n}\n\nfunction Ci(a) {\n a.effectTag |= 4;\n}\n\nvar Hi, Ii, Ji, Ki;\n\nHi = function Hi(a, b) {\n for (var c = b.child; null !== c;) {\n if (5 === c.tag || 6 === c.tag) a.appendChild(c.stateNode);else if (4 !== c.tag && null !== c.child) {\n c.child.return = c;\n c = c.child;\n continue;\n }\n if (c === b) break;\n\n for (; null === c.sibling;) {\n if (null === c.return || c.return === b) return;\n c = c.return;\n }\n\n c.sibling.return = c.return;\n c = c.sibling;\n }\n};\n\nIi = function Ii() {};\n\nJi = function Ji(a, b, c, d, e) {\n var f = a.memoizedProps;\n\n if (f !== d) {\n var g = b.stateNode;\n lh(ih.current);\n a = null;\n\n switch (c) {\n case \"input\":\n f = Ab(g, f);\n d = Ab(g, d);\n a = [];\n break;\n\n case \"option\":\n f = Ib(g, f);\n d = Ib(g, d);\n a = [];\n break;\n\n case \"select\":\n f = n({}, f, {\n value: void 0\n });\n d = n({}, d, {\n value: void 0\n });\n a = [];\n break;\n\n case \"textarea\":\n f = Kb(g, f);\n d = Kb(g, d);\n a = [];\n break;\n\n default:\n \"function\" !== typeof f.onClick && \"function\" === typeof d.onClick && (g.onclick = ae);\n }\n\n Yd(c, d);\n var h, k;\n c = null;\n\n for (h in f) {\n if (!d.hasOwnProperty(h) && f.hasOwnProperty(h) && null != f[h]) if (\"style\" === h) for (k in g = f[h], g) {\n g.hasOwnProperty(k) && (c || (c = {}), c[k] = \"\");\n } else \"dangerouslySetInnerHTML\" !== h && \"children\" !== h && \"suppressContentEditableWarning\" !== h && \"suppressHydrationWarning\" !== h && \"autoFocus\" !== h && (ia.hasOwnProperty(h) ? a || (a = []) : (a = a || []).push(h, null));\n }\n\n for (h in d) {\n var l = d[h];\n g = null != f ? f[h] : void 0;\n if (d.hasOwnProperty(h) && l !== g && (null != l || null != g)) if (\"style\" === h) {\n if (g) {\n for (k in g) {\n !g.hasOwnProperty(k) || l && l.hasOwnProperty(k) || (c || (c = {}), c[k] = \"\");\n }\n\n for (k in l) {\n l.hasOwnProperty(k) && g[k] !== l[k] && (c || (c = {}), c[k] = l[k]);\n }\n } else c || (a || (a = []), a.push(h, c)), c = l;\n } else \"dangerouslySetInnerHTML\" === h ? (l = l ? l.__html : void 0, g = g ? g.__html : void 0, null != l && g !== l && (a = a || []).push(h, \"\" + l)) : \"children\" === h ? g === l || \"string\" !== typeof l && \"number\" !== typeof l || (a = a || []).push(h, \"\" + l) : \"suppressContentEditableWarning\" !== h && \"suppressHydrationWarning\" !== h && (ia.hasOwnProperty(h) ? (null != l && $d(e, h), a || g === l || (a = [])) : (a = a || []).push(h, l));\n }\n\n c && (a = a || []).push(\"style\", c);\n e = a;\n (b.updateQueue = e) && Ci(b);\n }\n};\n\nKi = function Ki(a, b, c, d) {\n c !== d && Ci(b);\n};\n\nfunction Li(a, b) {\n switch (a.tailMode) {\n case \"hidden\":\n b = a.tail;\n\n for (var c = null; null !== b;) {\n null !== b.alternate && (c = b), b = b.sibling;\n }\n\n null === c ? a.tail = null : c.sibling = null;\n break;\n\n case \"collapsed\":\n c = a.tail;\n\n for (var d = null; null !== c;) {\n null !== c.alternate && (d = c), c = c.sibling;\n }\n\n null === d ? b || null === a.tail ? a.tail = null : a.tail.sibling = null : d.sibling = null;\n }\n}\n\nfunction Mi(a) {\n switch (a.tag) {\n case 1:\n L(a.type) && Ff(a);\n var b = a.effectTag;\n return b & 4096 ? (a.effectTag = b & -4097 | 64, a) : null;\n\n case 3:\n nh(a);\n Gf(a);\n b = a.effectTag;\n if (0 !== (b & 64)) throw Error(u(285));\n a.effectTag = b & -4097 | 64;\n return a;\n\n case 5:\n return ph(a), null;\n\n case 13:\n return G(M, a), b = a.effectTag, b & 4096 ? (a.effectTag = b & -4097 | 64, a) : null;\n\n case 19:\n return G(M, a), null;\n\n case 4:\n return nh(a), null;\n\n case 10:\n return tg(a), null;\n\n default:\n return null;\n }\n}\n\nfunction Ni(a, b) {\n return {\n value: a,\n source: b,\n stack: Xa(b)\n };\n}\n\nvar Oi = \"function\" === typeof WeakSet ? WeakSet : Set;\n\nfunction Pi(a, b) {\n var c = b.source,\n d = b.stack;\n null === d && null !== c && (d = Xa(c));\n null !== c && Wa(c.type);\n b = b.value;\n null !== a && 1 === a.tag && Wa(a.type);\n\n try {\n console.error(b);\n } catch (e) {\n setTimeout(function () {\n throw e;\n });\n }\n}\n\nfunction Qi(a, b) {\n try {\n b.props = a.memoizedProps, b.state = a.memoizedState, b.componentWillUnmount();\n } catch (c) {\n Ri(a, c);\n }\n}\n\nfunction Si(a) {\n var b = a.ref;\n if (null !== b) if (\"function\" === typeof b) try {\n b(null);\n } catch (c) {\n Ri(a, c);\n } else b.current = null;\n}\n\nfunction Ti(a, b) {\n switch (b.tag) {\n case 0:\n case 11:\n case 15:\n Ui(2, 0, b);\n break;\n\n case 1:\n if (b.effectTag & 256 && null !== a) {\n var c = a.memoizedProps,\n d = a.memoizedState;\n a = b.stateNode;\n b = a.getSnapshotBeforeUpdate(b.elementType === b.type ? c : mg(b.type, c), d);\n a.__reactInternalSnapshotBeforeUpdate = b;\n }\n\n break;\n\n case 3:\n case 5:\n case 6:\n case 4:\n case 17:\n break;\n\n default:\n throw Error(u(163));\n }\n}\n\nfunction Ui(a, b, c) {\n c = c.updateQueue;\n c = null !== c ? c.lastEffect : null;\n\n if (null !== c) {\n var d = c = c.next;\n\n do {\n if (0 !== (d.tag & a)) {\n var e = d.destroy;\n d.destroy = void 0;\n void 0 !== e && e();\n }\n\n 0 !== (d.tag & b) && (e = d.create, d.destroy = e());\n d = d.next;\n } while (d !== c);\n }\n}\n\nfunction Vi(a, b, c) {\n \"function\" === typeof Wi && Wi(b);\n\n switch (b.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n a = b.updateQueue;\n\n if (null !== a && (a = a.lastEffect, null !== a)) {\n var d = a.next;\n fg(97 < c ? 97 : c, function () {\n var a = d;\n\n do {\n var c = a.destroy;\n\n if (void 0 !== c) {\n var g = b;\n\n try {\n c();\n } catch (h) {\n Ri(g, h);\n }\n }\n\n a = a.next;\n } while (a !== d);\n });\n }\n\n break;\n\n case 1:\n Si(b);\n c = b.stateNode;\n \"function\" === typeof c.componentWillUnmount && Qi(b, c);\n break;\n\n case 5:\n Si(b);\n break;\n\n case 4:\n Xi(a, b, c);\n }\n}\n\nfunction Yi(a) {\n var b = a.alternate;\n a.return = null;\n a.child = null;\n a.memoizedState = null;\n a.updateQueue = null;\n a.dependencies = null;\n a.alternate = null;\n a.firstEffect = null;\n a.lastEffect = null;\n a.pendingProps = null;\n a.memoizedProps = null;\n null !== b && Yi(b);\n}\n\nfunction Zi(a) {\n return 5 === a.tag || 3 === a.tag || 4 === a.tag;\n}\n\nfunction $i(a) {\n a: {\n for (var b = a.return; null !== b;) {\n if (Zi(b)) {\n var c = b;\n break a;\n }\n\n b = b.return;\n }\n\n throw Error(u(160));\n }\n\n b = c.stateNode;\n\n switch (c.tag) {\n case 5:\n var d = !1;\n break;\n\n case 3:\n b = b.containerInfo;\n d = !0;\n break;\n\n case 4:\n b = b.containerInfo;\n d = !0;\n break;\n\n default:\n throw Error(u(161));\n }\n\n c.effectTag & 16 && (Tb(b, \"\"), c.effectTag &= -17);\n\n a: b: for (c = a;;) {\n for (; null === c.sibling;) {\n if (null === c.return || Zi(c.return)) {\n c = null;\n break a;\n }\n\n c = c.return;\n }\n\n c.sibling.return = c.return;\n\n for (c = c.sibling; 5 !== c.tag && 6 !== c.tag && 18 !== c.tag;) {\n if (c.effectTag & 2) continue b;\n if (null === c.child || 4 === c.tag) continue b;else c.child.return = c, c = c.child;\n }\n\n if (!(c.effectTag & 2)) {\n c = c.stateNode;\n break a;\n }\n }\n\n for (var e = a;;) {\n var f = 5 === e.tag || 6 === e.tag;\n\n if (f) {\n var g = f ? e.stateNode : e.stateNode.instance;\n if (c) {\n if (d) {\n f = b;\n var h = g;\n g = c;\n 8 === f.nodeType ? f.parentNode.insertBefore(h, g) : f.insertBefore(h, g);\n } else b.insertBefore(g, c);\n } else d ? (h = b, 8 === h.nodeType ? (f = h.parentNode, f.insertBefore(g, h)) : (f = h, f.appendChild(g)), h = h._reactRootContainer, null !== h && void 0 !== h || null !== f.onclick || (f.onclick = ae)) : b.appendChild(g);\n } else if (4 !== e.tag && null !== e.child) {\n e.child.return = e;\n e = e.child;\n continue;\n }\n\n if (e === a) break;\n\n for (; null === e.sibling;) {\n if (null === e.return || e.return === a) return;\n e = e.return;\n }\n\n e.sibling.return = e.return;\n e = e.sibling;\n }\n}\n\nfunction Xi(a, b, c) {\n for (var d = b, e = !1, f, g;;) {\n if (!e) {\n e = d.return;\n\n a: for (;;) {\n if (null === e) throw Error(u(160));\n f = e.stateNode;\n\n switch (e.tag) {\n case 5:\n g = !1;\n break a;\n\n case 3:\n f = f.containerInfo;\n g = !0;\n break a;\n\n case 4:\n f = f.containerInfo;\n g = !0;\n break a;\n }\n\n e = e.return;\n }\n\n e = !0;\n }\n\n if (5 === d.tag || 6 === d.tag) {\n a: for (var h = a, k = d, l = c, m = k;;) {\n if (Vi(h, m, l), null !== m.child && 4 !== m.tag) m.child.return = m, m = m.child;else {\n if (m === k) break;\n\n for (; null === m.sibling;) {\n if (null === m.return || m.return === k) break a;\n m = m.return;\n }\n\n m.sibling.return = m.return;\n m = m.sibling;\n }\n }\n\n g ? (h = f, k = d.stateNode, 8 === h.nodeType ? h.parentNode.removeChild(k) : h.removeChild(k)) : f.removeChild(d.stateNode);\n } else if (4 === d.tag) {\n if (null !== d.child) {\n f = d.stateNode.containerInfo;\n g = !0;\n d.child.return = d;\n d = d.child;\n continue;\n }\n } else if (Vi(a, d, c), null !== d.child) {\n d.child.return = d;\n d = d.child;\n continue;\n }\n\n if (d === b) break;\n\n for (; null === d.sibling;) {\n if (null === d.return || d.return === b) return;\n d = d.return;\n 4 === d.tag && (e = !1);\n }\n\n d.sibling.return = d.return;\n d = d.sibling;\n }\n}\n\nfunction aj(a, b) {\n switch (b.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n Ui(4, 8, b);\n break;\n\n case 1:\n break;\n\n case 5:\n var c = b.stateNode;\n\n if (null != c) {\n var d = b.memoizedProps,\n e = null !== a ? a.memoizedProps : d;\n a = b.type;\n var f = b.updateQueue;\n b.updateQueue = null;\n\n if (null !== f) {\n c[ve] = d;\n \"input\" === a && \"radio\" === d.type && null != d.name && Cb(c, d);\n Zd(a, e);\n b = Zd(a, d);\n\n for (e = 0; e < f.length; e += 2) {\n var g = f[e],\n h = f[e + 1];\n \"style\" === g ? Wd(c, h) : \"dangerouslySetInnerHTML\" === g ? Sb(c, h) : \"children\" === g ? Tb(c, h) : vb(c, g, h, b);\n }\n\n switch (a) {\n case \"input\":\n Eb(c, d);\n break;\n\n case \"textarea\":\n Mb(c, d);\n break;\n\n case \"select\":\n b = c._wrapperState.wasMultiple, c._wrapperState.wasMultiple = !!d.multiple, a = d.value, null != a ? Jb(c, !!d.multiple, a, !1) : b !== !!d.multiple && (null != d.defaultValue ? Jb(c, !!d.multiple, d.defaultValue, !0) : Jb(c, !!d.multiple, d.multiple ? [] : \"\", !1));\n }\n }\n }\n\n break;\n\n case 6:\n if (null === b.stateNode) throw Error(u(162));\n b.stateNode.nodeValue = b.memoizedProps;\n break;\n\n case 3:\n b = b.stateNode;\n b.hydrate && (b.hydrate = !1, Lc(b.containerInfo));\n break;\n\n case 12:\n break;\n\n case 13:\n c = b;\n null === b.memoizedState ? d = !1 : (d = !0, c = b.child, bj = cg());\n if (null !== c) a: for (a = c;;) {\n if (5 === a.tag) f = a.stateNode, d ? (f = f.style, \"function\" === typeof f.setProperty ? f.setProperty(\"display\", \"none\", \"important\") : f.display = \"none\") : (f = a.stateNode, e = a.memoizedProps.style, e = void 0 !== e && null !== e && e.hasOwnProperty(\"display\") ? e.display : null, f.style.display = Vd(\"display\", e));else if (6 === a.tag) a.stateNode.nodeValue = d ? \"\" : a.memoizedProps;else if (13 === a.tag && null !== a.memoizedState && null === a.memoizedState.dehydrated) {\n f = a.child.sibling;\n f.return = a;\n a = f;\n continue;\n } else if (null !== a.child) {\n a.child.return = a;\n a = a.child;\n continue;\n }\n if (a === c) break a;\n\n for (; null === a.sibling;) {\n if (null === a.return || a.return === c) break a;\n a = a.return;\n }\n\n a.sibling.return = a.return;\n a = a.sibling;\n }\n cj(b);\n break;\n\n case 19:\n cj(b);\n break;\n\n case 17:\n break;\n\n case 20:\n break;\n\n case 21:\n break;\n\n default:\n throw Error(u(163));\n }\n}\n\nfunction cj(a) {\n var b = a.updateQueue;\n\n if (null !== b) {\n a.updateQueue = null;\n var c = a.stateNode;\n null === c && (c = a.stateNode = new Oi());\n b.forEach(function (b) {\n var d = dj.bind(null, a, b);\n c.has(b) || (c.add(b), b.then(d, d));\n });\n }\n}\n\nvar ej = \"function\" === typeof WeakMap ? WeakMap : Map;\n\nfunction fj(a, b, c) {\n c = Bg(c, null);\n c.tag = 3;\n c.payload = {\n element: null\n };\n var d = b.value;\n\n c.callback = function () {\n gj || (gj = !0, hj = d);\n Pi(a, b);\n };\n\n return c;\n}\n\nfunction ij(a, b, c) {\n c = Bg(c, null);\n c.tag = 3;\n var d = a.type.getDerivedStateFromError;\n\n if (\"function\" === typeof d) {\n var e = b.value;\n\n c.payload = function () {\n Pi(a, b);\n return d(e);\n };\n }\n\n var f = a.stateNode;\n null !== f && \"function\" === typeof f.componentDidCatch && (c.callback = function () {\n \"function\" !== typeof d && (null === jj ? jj = new Set([this]) : jj.add(this), Pi(a, b));\n var c = b.stack;\n this.componentDidCatch(b.value, {\n componentStack: null !== c ? c : \"\"\n });\n });\n return c;\n}\n\nvar kj = Math.ceil,\n lj = Ea.ReactCurrentDispatcher,\n mj = Ea.ReactCurrentOwner,\n S = 0,\n nj = 8,\n oj = 16,\n pj = 32,\n qj = 0,\n rj = 1,\n sj = 2,\n tj = 3,\n uj = 4,\n vj = 5,\n T = S,\n U = null,\n V = null,\n W = 0,\n X = qj,\n wj = null,\n xj = 1073741823,\n yj = 1073741823,\n zj = null,\n Aj = 0,\n Bj = !1,\n bj = 0,\n Cj = 500,\n Y = null,\n gj = !1,\n hj = null,\n jj = null,\n Dj = !1,\n Ej = null,\n Fj = 90,\n Gj = null,\n Hj = 0,\n Ij = null,\n Jj = 0;\n\nfunction Pg() {\n return (T & (oj | pj)) !== S ? 1073741821 - (cg() / 10 | 0) : 0 !== Jj ? Jj : Jj = 1073741821 - (cg() / 10 | 0);\n}\n\nfunction Qg(a, b, c) {\n b = b.mode;\n if (0 === (b & 2)) return 1073741823;\n var d = dg();\n if (0 === (b & 4)) return 99 === d ? 1073741823 : 1073741822;\n if ((T & oj) !== S) return W;\n if (null !== c) a = lg(a, c.timeoutMs | 0 || 5E3, 250);else switch (d) {\n case 99:\n a = 1073741823;\n break;\n\n case 98:\n a = lg(a, 150, 100);\n break;\n\n case 97:\n case 96:\n a = lg(a, 5E3, 250);\n break;\n\n case 95:\n a = 2;\n break;\n\n default:\n throw Error(u(326));\n }\n null !== U && a === W && --a;\n return a;\n}\n\nfunction Rg(a, b) {\n if (50 < Hj) throw Hj = 0, Ij = null, Error(u(185));\n a = Kj(a, b);\n\n if (null !== a) {\n var c = dg();\n 1073741823 === b ? (T & nj) !== S && (T & (oj | pj)) === S ? Lj(a) : (Z(a), T === S && jg()) : Z(a);\n (T & 4) === S || 98 !== c && 99 !== c || (null === Gj ? Gj = new Map([[a, b]]) : (c = Gj.get(a), (void 0 === c || c > b) && Gj.set(a, b)));\n }\n}\n\nfunction Kj(a, b) {\n a.expirationTime < b && (a.expirationTime = b);\n var c = a.alternate;\n null !== c && c.expirationTime < b && (c.expirationTime = b);\n var d = a.return,\n e = null;\n if (null === d && 3 === a.tag) e = a.stateNode;else for (; null !== d;) {\n c = d.alternate;\n d.childExpirationTime < b && (d.childExpirationTime = b);\n null !== c && c.childExpirationTime < b && (c.childExpirationTime = b);\n\n if (null === d.return && 3 === d.tag) {\n e = d.stateNode;\n break;\n }\n\n d = d.return;\n }\n null !== e && (U === e && (Jg(b), X === uj && Mj(e, W)), Nj(e, b));\n return e;\n}\n\nfunction Oj(a) {\n var b = a.lastExpiredTime;\n if (0 !== b) return b;\n b = a.firstPendingTime;\n if (!Pj(a, b)) return b;\n b = a.lastPingedTime;\n a = a.nextKnownPendingLevel;\n return b > a ? b : a;\n}\n\nfunction Z(a) {\n if (0 !== a.lastExpiredTime) a.callbackExpirationTime = 1073741823, a.callbackPriority = 99, a.callbackNode = hg(Lj.bind(null, a));else {\n var b = Oj(a),\n c = a.callbackNode;\n if (0 === b) null !== c && (a.callbackNode = null, a.callbackExpirationTime = 0, a.callbackPriority = 90);else {\n var d = Pg();\n 1073741823 === b ? d = 99 : 1 === b || 2 === b ? d = 95 : (d = 10 * (1073741821 - b) - 10 * (1073741821 - d), d = 0 >= d ? 99 : 250 >= d ? 98 : 5250 >= d ? 97 : 95);\n\n if (null !== c) {\n var e = a.callbackPriority;\n if (a.callbackExpirationTime === b && e >= d) return;\n c !== Xf && Nf(c);\n }\n\n a.callbackExpirationTime = b;\n a.callbackPriority = d;\n b = 1073741823 === b ? hg(Lj.bind(null, a)) : gg(d, Qj.bind(null, a), {\n timeout: 10 * (1073741821 - b) - cg()\n });\n a.callbackNode = b;\n }\n }\n}\n\nfunction Qj(a, b) {\n Jj = 0;\n if (b) return b = Pg(), Rj(a, b), Z(a), null;\n var c = Oj(a);\n\n if (0 !== c) {\n b = a.callbackNode;\n if ((T & (oj | pj)) !== S) throw Error(u(327));\n Sj();\n a === U && c === W || Tj(a, c);\n\n if (null !== V) {\n var d = T;\n T |= oj;\n var e = Uj(a);\n\n do {\n try {\n Vj();\n break;\n } catch (h) {\n Wj(a, h);\n }\n } while (1);\n\n rg();\n T = d;\n lj.current = e;\n if (X === rj) throw b = wj, Tj(a, c), Mj(a, c), Z(a), b;\n if (null === V) switch (e = a.finishedWork = a.current.alternate, a.finishedExpirationTime = c, d = X, U = null, d) {\n case qj:\n case rj:\n throw Error(u(345));\n\n case sj:\n Rj(a, 2 < c ? 2 : c);\n break;\n\n case tj:\n Mj(a, c);\n d = a.lastSuspendedTime;\n c === d && (a.nextKnownPendingLevel = Xj(e));\n\n if (1073741823 === xj && (e = bj + Cj - cg(), 10 < e)) {\n if (Bj) {\n var f = a.lastPingedTime;\n\n if (0 === f || f >= c) {\n a.lastPingedTime = c;\n Tj(a, c);\n break;\n }\n }\n\n f = Oj(a);\n if (0 !== f && f !== c) break;\n\n if (0 !== d && d !== c) {\n a.lastPingedTime = d;\n break;\n }\n\n a.timeoutHandle = pe(Yj.bind(null, a), e);\n break;\n }\n\n Yj(a);\n break;\n\n case uj:\n Mj(a, c);\n d = a.lastSuspendedTime;\n c === d && (a.nextKnownPendingLevel = Xj(e));\n\n if (Bj && (e = a.lastPingedTime, 0 === e || e >= c)) {\n a.lastPingedTime = c;\n Tj(a, c);\n break;\n }\n\n e = Oj(a);\n if (0 !== e && e !== c) break;\n\n if (0 !== d && d !== c) {\n a.lastPingedTime = d;\n break;\n }\n\n 1073741823 !== yj ? d = 10 * (1073741821 - yj) - cg() : 1073741823 === xj ? d = 0 : (d = 10 * (1073741821 - xj) - 5E3, e = cg(), c = 10 * (1073741821 - c) - e, d = e - d, 0 > d && (d = 0), d = (120 > d ? 120 : 480 > d ? 480 : 1080 > d ? 1080 : 1920 > d ? 1920 : 3E3 > d ? 3E3 : 4320 > d ? 4320 : 1960 * kj(d / 1960)) - d, c < d && (d = c));\n\n if (10 < d) {\n a.timeoutHandle = pe(Yj.bind(null, a), d);\n break;\n }\n\n Yj(a);\n break;\n\n case vj:\n if (1073741823 !== xj && null !== zj) {\n f = xj;\n var g = zj;\n d = g.busyMinDurationMs | 0;\n 0 >= d ? d = 0 : (e = g.busyDelayMs | 0, f = cg() - (10 * (1073741821 - f) - (g.timeoutMs | 0 || 5E3)), d = f <= e ? 0 : e + d - f);\n\n if (10 < d) {\n Mj(a, c);\n a.timeoutHandle = pe(Yj.bind(null, a), d);\n break;\n }\n }\n\n Yj(a);\n break;\n\n default:\n throw Error(u(329));\n }\n Z(a);\n if (a.callbackNode === b) return Qj.bind(null, a);\n }\n }\n\n return null;\n}\n\nfunction Lj(a) {\n var b = a.lastExpiredTime;\n b = 0 !== b ? b : 1073741823;\n if (a.finishedExpirationTime === b) Yj(a);else {\n if ((T & (oj | pj)) !== S) throw Error(u(327));\n Sj();\n a === U && b === W || Tj(a, b);\n\n if (null !== V) {\n var c = T;\n T |= oj;\n var d = Uj(a);\n\n do {\n try {\n Zj();\n break;\n } catch (e) {\n Wj(a, e);\n }\n } while (1);\n\n rg();\n T = c;\n lj.current = d;\n if (X === rj) throw c = wj, Tj(a, b), Mj(a, b), Z(a), c;\n if (null !== V) throw Error(u(261));\n a.finishedWork = a.current.alternate;\n a.finishedExpirationTime = b;\n U = null;\n Yj(a);\n Z(a);\n }\n }\n return null;\n}\n\nfunction ak() {\n if (null !== Gj) {\n var a = Gj;\n Gj = null;\n a.forEach(function (a, c) {\n Rj(c, a);\n Z(c);\n });\n jg();\n }\n}\n\nfunction bk(a, b) {\n var c = T;\n T |= 1;\n\n try {\n return a(b);\n } finally {\n T = c, T === S && jg();\n }\n}\n\nfunction ck(a, b) {\n var c = T;\n T &= -2;\n T |= nj;\n\n try {\n return a(b);\n } finally {\n T = c, T === S && jg();\n }\n}\n\nfunction Tj(a, b) {\n a.finishedWork = null;\n a.finishedExpirationTime = 0;\n var c = a.timeoutHandle;\n -1 !== c && (a.timeoutHandle = -1, qe(c));\n if (null !== V) for (c = V.return; null !== c;) {\n var d = c;\n\n switch (d.tag) {\n case 1:\n var e = d.type.childContextTypes;\n null !== e && void 0 !== e && Ff(d);\n break;\n\n case 3:\n nh(d);\n Gf(d);\n break;\n\n case 5:\n ph(d);\n break;\n\n case 4:\n nh(d);\n break;\n\n case 13:\n G(M, d);\n break;\n\n case 19:\n G(M, d);\n break;\n\n case 10:\n tg(d);\n }\n\n c = c.return;\n }\n U = a;\n V = ah(a.current, null, b);\n W = b;\n X = qj;\n wj = null;\n yj = xj = 1073741823;\n zj = null;\n Aj = 0;\n Bj = !1;\n}\n\nfunction Wj(a, b) {\n do {\n try {\n rg();\n Mh();\n if (null === V || null === V.return) return X = rj, wj = b, null;\n\n a: {\n var c = a,\n d = V.return,\n e = V,\n f = b;\n b = W;\n e.effectTag |= 2048;\n e.firstEffect = e.lastEffect = null;\n\n if (null !== f && \"object\" === typeof f && \"function\" === typeof f.then) {\n var g = f,\n h = 0 !== (M.current & 1),\n k = d;\n\n do {\n var l;\n\n if (l = 13 === k.tag) {\n var m = k.memoizedState;\n if (null !== m) l = null !== m.dehydrated ? !0 : !1;else {\n var C = k.memoizedProps;\n l = void 0 === C.fallback ? !1 : !0 !== C.unstable_avoidThisFallback ? !0 : h ? !1 : !0;\n }\n }\n\n if (l) {\n var y = k.updateQueue;\n\n if (null === y) {\n var H = new Set();\n H.add(g);\n k.updateQueue = H;\n } else y.add(g);\n\n if (0 === (k.mode & 2)) {\n k.effectTag |= 64;\n e.effectTag &= -2981;\n if (1 === e.tag) if (null === e.alternate) e.tag = 17;else {\n var z = Bg(1073741823, null);\n z.tag = 2;\n Dg(e, z);\n }\n e.expirationTime = 1073741823;\n break a;\n }\n\n f = void 0;\n e = b;\n var ta = c.pingCache;\n null === ta ? (ta = c.pingCache = new ej(), f = new Set(), ta.set(g, f)) : (f = ta.get(g), void 0 === f && (f = new Set(), ta.set(g, f)));\n\n if (!f.has(e)) {\n f.add(e);\n var r = dk.bind(null, c, g, e);\n g.then(r, r);\n }\n\n k.effectTag |= 4096;\n k.expirationTime = b;\n break a;\n }\n\n k = k.return;\n } while (null !== k);\n\n f = Error((Wa(e.type) || \"A React component\") + \" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a component higher in the tree to provide a loading indicator or placeholder to display.\" + Xa(e));\n }\n\n X !== vj && (X = sj);\n f = Ni(f, e);\n k = d;\n\n do {\n switch (k.tag) {\n case 3:\n g = f;\n k.effectTag |= 4096;\n k.expirationTime = b;\n var x = fj(k, g, b);\n Eg(k, x);\n break a;\n\n case 1:\n g = f;\n var A = k.type,\n p = k.stateNode;\n\n if (0 === (k.effectTag & 64) && (\"function\" === typeof A.getDerivedStateFromError || null !== p && \"function\" === typeof p.componentDidCatch && (null === jj || !jj.has(p)))) {\n k.effectTag |= 4096;\n k.expirationTime = b;\n var t = ij(k, g, b);\n Eg(k, t);\n break a;\n }\n\n }\n\n k = k.return;\n } while (null !== k);\n }\n\n V = ek(V);\n } catch (v) {\n b = v;\n continue;\n }\n\n break;\n } while (1);\n}\n\nfunction Uj() {\n var a = lj.current;\n lj.current = Lh;\n return null === a ? Lh : a;\n}\n\nfunction Ig(a, b) {\n a < xj && 2 < a && (xj = a);\n null !== b && a < yj && 2 < a && (yj = a, zj = b);\n}\n\nfunction Jg(a) {\n a > Aj && (Aj = a);\n}\n\nfunction Zj() {\n for (; null !== V;) {\n V = fk(V);\n }\n}\n\nfunction Vj() {\n for (; null !== V && !Of();) {\n V = fk(V);\n }\n}\n\nfunction fk(a) {\n var b = gk(a.alternate, a, W);\n a.memoizedProps = a.pendingProps;\n null === b && (b = ek(a));\n mj.current = null;\n return b;\n}\n\nfunction ek(a) {\n V = a;\n\n do {\n var b = V.alternate;\n a = V.return;\n\n if (0 === (V.effectTag & 2048)) {\n a: {\n var c = b;\n b = V;\n var d = W;\n var e = b.pendingProps;\n\n switch (b.tag) {\n case 2:\n break;\n\n case 16:\n break;\n\n case 15:\n case 0:\n break;\n\n case 1:\n L(b.type) && Ff(b);\n break;\n\n case 3:\n nh(b);\n Gf(b);\n e = b.stateNode;\n e.pendingContext && (e.context = e.pendingContext, e.pendingContext = null);\n (null === c || null === c.child) && ki(b) && Ci(b);\n Ii(b);\n break;\n\n case 5:\n ph(b);\n d = lh(kh.current);\n var f = b.type;\n if (null !== c && null != b.stateNode) Ji(c, b, f, e, d), c.ref !== b.ref && (b.effectTag |= 128);else if (e) {\n var g = lh(ih.current);\n\n if (ki(b)) {\n e = b;\n var h = e.stateNode;\n c = e.type;\n var k = e.memoizedProps,\n l = d;\n h[ue] = e;\n h[ve] = k;\n f = void 0;\n d = h;\n\n switch (c) {\n case \"iframe\":\n case \"object\":\n case \"embed\":\n F(\"load\", d);\n break;\n\n case \"video\":\n case \"audio\":\n for (h = 0; h < dc.length; h++) {\n F(dc[h], d);\n }\n\n break;\n\n case \"source\":\n F(\"error\", d);\n break;\n\n case \"img\":\n case \"image\":\n case \"link\":\n F(\"error\", d);\n F(\"load\", d);\n break;\n\n case \"form\":\n F(\"reset\", d);\n F(\"submit\", d);\n break;\n\n case \"details\":\n F(\"toggle\", d);\n break;\n\n case \"input\":\n Bb(d, k);\n F(\"invalid\", d);\n $d(l, \"onChange\");\n break;\n\n case \"select\":\n d._wrapperState = {\n wasMultiple: !!k.multiple\n };\n F(\"invalid\", d);\n $d(l, \"onChange\");\n break;\n\n case \"textarea\":\n Lb(d, k), F(\"invalid\", d), $d(l, \"onChange\");\n }\n\n Yd(c, k);\n h = null;\n\n for (f in k) {\n k.hasOwnProperty(f) && (g = k[f], \"children\" === f ? \"string\" === typeof g ? d.textContent !== g && (h = [\"children\", g]) : \"number\" === typeof g && d.textContent !== \"\" + g && (h = [\"children\", \"\" + g]) : ia.hasOwnProperty(f) && null != g && $d(l, f));\n }\n\n switch (c) {\n case \"input\":\n yb(d);\n Gb(d, k, !0);\n break;\n\n case \"textarea\":\n yb(d);\n Nb(d, k);\n break;\n\n case \"select\":\n case \"option\":\n break;\n\n default:\n \"function\" === typeof k.onClick && (d.onclick = ae);\n }\n\n f = h;\n e.updateQueue = f;\n e = null !== f ? !0 : !1;\n e && Ci(b);\n } else {\n c = b;\n l = f;\n k = e;\n h = 9 === d.nodeType ? d : d.ownerDocument;\n g === Ob.html && (g = Pb(l));\n g === Ob.html ? \"script\" === l ? (k = h.createElement(\"div\"), k.innerHTML = \"