{"version":3,"file":"1190.bdfed9a3ee969ce61e6e.entry.js","mappings":"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EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,KAAK,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,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QAAQvuM,GACTggN,IAGL,QAAchgN,IAChBouM,EAAQG,QAAQvuM,GACT6/M,GAGFE,EAAY//M,EACrB,CAGA,SAASggN,EAAsBhgN,GAC7B,OACW,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,IACA,QAAkBA,IAElBouM,EAAQG,QAAQvuM,GACTggN,GAGFC,EAA2BjgN,EACpC,CAGA,SAASigN,EAA2BjgN,GAClC,OAAa,KAATA,GACFouM,EAAQG,QAAQvuM,GACTkgN,IAGL,QAAclgN,IAChBouM,EAAQG,QAAQvuM,GACTigN,GAGFJ,EAA4B7/M,EACrC,CAGA,SAASkgN,EAA6BlgN,GACpC,OACW,OAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,EAEOquM,EAAIruM,GAGA,KAATA,GAAwB,KAATA,GACjBouM,EAAQG,QAAQvuM,GAChB4T,EAAS5T,EACFmgN,IAGL,QAAcngN,IAChBouM,EAAQG,QAAQvuM,GACTkgN,IAGTtsM,EAAS,KACFwsM,EAA+BpgN,GACxC,CAGA,SAASmgN,EAA6BngN,GACpC,OAAa,OAATA,IAAiB,QAAmBA,GAC/BquM,EAAIruM,GAGTA,IAAS4T,GACXw6L,EAAQG,QAAQvuM,GACTqgN,IAGTjS,EAAQG,QAAQvuM,GACTmgN,EACT,CAGA,SAASC,EAA+BpgN,GACtC,OACW,OAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,IACA,QAA0BA,GAEnBigN,EAA2BjgN,IAGpCouM,EAAQG,QAAQvuM,GACTogN,EACT,CAGA,SAASC,EAAkCrgN,GACzC,OAAa,KAATA,GAAwB,KAATA,IAAe,QAAcA,GACvC6/M,EAA4B7/M,GAG9BquM,EAAIruM,EACb,CAGA,SAAS+/M,EAAY//M,GACnB,OAAa,KAATA,GACFouM,EAAQG,QAAQvuM,GACTsgN,GAGFjS,EAAIruM,EACb,CAGA,SAASsgN,EAActgN,GACrB,OAAI,QAAcA,IAChBouM,EAAQG,QAAQvuM,GACTsgN,GAGO,OAATtgN,IAAiB,QAAmBA,GACv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","sources":["webpack://superset/./node_modules/@ctrl/tinycolor/dist/module/conversion.js","webpack://superset/./node_modules/@ctrl/tinycolor/dist/module/css-color-names.js","webpack://superset/./node_modules/@ctrl/tinycolor/dist/module/format-input.js","webpack://superset/./node_modules/@ctrl/tinycolor/dist/module/index.js","webpack://superset/./node_modules/@ctrl/tinycolor/dist/module/util.js","webpack://superset/./node_modules/@reduxjs/toolkit/dist/query/react/rtk-query-react.esm.js","webpack://superset/./node_modules/@reduxjs/toolkit/dist/query/rtk-query.esm.js","webpack://superset/./node_modules/@reduxjs/toolkit/dist/redux-toolkit.esm.js","webpack://superset/./node_modules/ace-builds/src-noconflict/ace.js","webpack://superset/./node_modules/ace-builds/src-noconflict/ext-split.js","webpack://superset/./node_modules/ace-builds/src-noconflict/mode-sql.js","webpack://superset/./node_modules/antd-v5/es/_util/colors.js","webpack://superset/./node_modules/antd-v5/es/_util/reactNode.js","webpack://superset/./node_modules/antd-v5/es/_util/warning.js","webpack://superset/./node_modules/antd-v5/es/config-provider/DisabledContext.js","webpack://superset/./node_modules/antd-v5/es/config-provider/SizeContext.js","webpack://superset/./node_modules/antd-v5/es/config-provider/context.js","webpack://superset/./node_modules/antd-v5/es/form/validateMessagesContext.js","webpack://superset/./node_modules/antd-v5/es/time-picker/locale/en_US.js","webpack://superset/./node_modules/antd-v5/es/date-picker/locale/en_US.js","webpack://superset/./node_modules/rc-picker/es/locale/en_US.js","webpack://superset/./node_modules/antd-v5/es/locale/en_US.js","webpack://superset/./node_modules/antd-v5/node_modules/rc-pagination/es/locale/en_US.js","webpack://superset/./node_modules/antd-v5/es/modal/locale.js","webpack://superset/./node_modules/antd-v5/es/locale/context.js","webpack://superset/./node_modules/antd-v5/es/locale/index.js","webpack://superset/./node_modules/antd-v5/es/config-provider/cssVariables.js","webpack://superset/./node_modules/antd-v5/es/config-provider/hooks/useThemeKey.js","webpack://superset/./node_modules/antd-v5/es/config-provider/MotionWrapper.js","webpack://superset/./node_modules/antd-v5/es/config-provider/PropWarning.js","webpack://superset/./node_modules/antd-v5/es/config-provider/index.js","webpack://superset/./node_modules/antd-v5/es/config-provider/hooks/useTheme.js","webpack://superset/./node_modules/antd-v5/es/config-provider/hooks/useConfig.js","webpack://superset/./node_modules/antd-v5/es/style/index.js","webpack://superset/./node_modules/antd-v5/es/_util/hooks/useClosable.js","webpack://superset/./node_modules/antd-v5/es/_util/wave/style.js","webpack://superset/./node_modules/antd-v5/es/_util/wave/interface.js","webpack://superset/./node_modules/rc-util/es/React/render.js","webpack://superset/./node_modules/antd-v5/es/_util/wave/util.js","webpack://superset/./node_modules/antd-v5/es/_util/wave/WaveEffect.js","webpack://superset/./node_modules/antd-v5/es/_util/wave/index.js","webpack://superset/./node_modules/antd-v5/es/_util/wave/useWave.js","webpack://superset/./node_modules/antd-v5/es/tag/style/index.js","webpack://superset/./node_modules/antd-v5/es/tag/CheckableTag.js","webpack://superset/./node_modules/antd-v5/es/tag/style/presetCmp.js","webpack://superset/./node_modules/antd-v5/es/tag/style/statusCmp.js","webpack://superset/./node_modules/antd-v5/es/_util/capitalize.js","webpack://superset/./node_modules/antd-v5/es/tag/index.js","webpack://superset/./node_modules/antd-v5/es/theme/context.js","webpack://superset/./node_modules/antd-v5/es/theme/interface/presetColors.js","webpack://superset/./node_modules/antd-v5/es/theme/themes/shared/genRadius.js","webpack://superset/./node_modules/antd-v5/es/theme/themes/default/colorAlgorithm.js","webpack://superset/./node_modules/antd-v5/es/theme/themes/default/colors.js","webpack://superset/./node_modules/antd-v5/es/theme/themes/default/index.js","webpack://superset/./node_modules/antd-v5/es/theme/themes/shared/genSizeMapToken.js","webpack://superset/./node_modules/antd-v5/es/theme/themes/shared/genCommonMapToken.js","webpack://superset/./node_modules/antd-v5/es/theme/themes/seed.js","webpack://superset/./node_modules/antd-v5/es/theme/themes/shared/genColorMapToken.js","webpack://superset/./node_modules/antd-v5/es/theme/themes/shared/genControlHeight.js","webpack://superset/./node_modules/antd-v5/es/theme/themes/shared/genFontMapToken.js","webpack://superset/./node_modules/antd-v5/es/theme/themes/shared/genFontSizes.js","webpack://superset/./node_modules/antd-v5/es/version/version.js","webpack://superset/./node_modules/antd-v5/es/version/index.js","webpack://superset/./node_modules/antd-v5/es/theme/useToken.js","webpack://superset/./node_modules/antd-v5/es/theme/util/getAlphaColor.js","webpack://superset/./node_modules/antd-v5/es/theme/util/alias.js","webpack://superset/./node_modules/antd-v5/es/_util/hooks/useUniqueMemo.js","webpack://superset/./node_modules/antd-v5/es/theme/util/genComponentStyleHook.js","webpack://superset/./node_modules/antd-v5/es/theme/util/maxmin.js","webpack://superset/./node_modules/antd-v5/es/theme/util/genPresetColor.js","webpack://superset/./node_modules/antd-v5/es/theme/util/statistic.js","webpack://superset/./node_modules/antd-v5/es/theme/util/useResetIconStyle.js","webpack://superset/./node_modules/clsx/dist/clsx.m.js","webpack://superset/./node_modules/copy-to-clipboard/index.js","webpack://superset/./node_modules/cssfilter/lib/css.js","webpack://superset/./node_modules/cssfilter/lib/default.js","webpack://superset/./node_modules/cssfilter/lib/index.js","webpack://superset/./node_modules/cssfilter/lib/parser.js","webpack://superset/./node_modules/cssfilter/lib/util.js","webpack://superset/./node_modules/decode-uri-component/index.js","webpack://superset/./node_modules/diff-match-patch/index.js","webpack://superset/./node_modules/extend/index.js","webpack://superset/./node_modules/filter-obj/index.js","webpack://superset/./node_modules/resolve-pathname/esm/resolve-pathname.js","webpack://superset/./node_modules/value-equal/esm/value-equal.js","webpack://superset/./node_modules/history/esm/history.js","webpack://superset/./node_modules/inline-style-parser/index.js","webpack://superset/./node_modules/memoize-one/dist/memoize-one.esm.js","webpack://superset/./node_modules/omit.js/es/index.js","webpack://superset/./node_modules/polished/dist/polished.esm.js","webpack://superset/./node_modules/process/browser.js","webpack://superset/./node_modules/query-string/index.js","webpack://superset/./node_modules/rc-checkbox/es/index.js","webpack://superset/./node_modules/rc-collapse/es/PanelContent.js","webpack://superset/./node_modules/rc-collapse/es/Panel.js","webpack://superset/./node_modules/rc-collapse/es/Collapse.js","webpack://superset/./node_modules/rc-collapse/es/index.js","webpack://superset/./node_modules/rc-dropdown/es/placements.js","webpack://superset/./node_modules/rc-dropdown/es/index.js","webpack://superset/./node_modules/rc-dropdown/es/Dropdown.js","webpack://superset/./node_modules/rc-field-form/es/FieldContext.js","webpack://superset/./node_modules/rc-field-form/es/utils/typeUtil.js","webpack://superset/./node_modules/async-validator/dist-web/index.js","webpack://superset/./node_modules/rc-field-form/es/utils/valueUtil.js","webpack://superset/./node_modules/rc-field-form/es/utils/messages.js","webpack://superset/./node_modules/rc-field-form/es/utils/validateUtil.js","webpack://superset/./node_modules/rc-field-form/es/Field.js","webpack://superset/./node_modules/rc-field-form/es/List.js","webpack://superset/./node_modules/rc-field-form/es/utils/NameMap.js","webpack://superset/./node_modules/rc-field-form/es/useForm.js","webpack://superset/./node_modules/rc-field-form/es/utils/asyncUtil.js","webpack://superset/./node_modules/rc-field-form/es/FormContext.js","webpack://superset/./node_modules/rc-field-form/es/Form.js","webpack://superset/./node_modules/rc-field-form/es/index.js","webpack://superset/./node_modules/mini-store/esm/Provider.js","webpack://superset/./node_modules/mini-store/esm/connect.js","webpack://superset/./node_modules/mini-store/esm/create.js","webpack://superset/./node_modules/rc-util/es/createChainedFunction.js","webpack://superset/./node_modules/rc-menu/es/utils/isMobile.js","webpack://superset/./node_modules/rc-menu/es/util.js","webpack://superset/./node_modules/rc-menu/es/placements.js","webpack://superset/./node_modules/rc-menu/es/SubMenu.js","webpack://superset/./node_modules/rc-menu/es/DOMWrap.js","webpack://superset/./node_modules/rc-menu/es/SubPopupMenu.js","webpack://superset/./node_modules/rc-menu/es/utils/legacyUtil.js","webpack://superset/./node_modules/rc-menu/es/Menu.js","webpack://superset/./node_modules/rc-menu/es/MenuItem.js","webpack://superset/./node_modules/rc-menu/es/MenuItemGroup.js","webpack://superset/./node_modules/rc-menu/es/Divider.js","webpack://superset/./node_modules/rc-menu/es/index.js","webpack://superset/./node_modules/rc-motion/es/context.js","webpack://superset/./node_modules/rc-motion/es/DomWrapper.js","webpack://superset/./node_modules/rc-motion/es/interface.js","webpack://superset/./node_modules/rc-motion/es/util/motion.js","webpack://superset/./node_modules/rc-motion/es/hooks/useDomMotionEvents.js","webpack://superset/./node_modules/rc-motion/es/hooks/useIsomorphicLayoutEffect.js","webpack://superset/./node_modules/rc-motion/es/hooks/useStepQueue.js","webpack://superset/./node_modules/rc-motion/es/hooks/useStatus.js","webpack://superset/./node_modules/rc-util/es/hooks/useSyncState.js","webpack://superset/./node_modules/rc-motion/es/hooks/useNextFrame.js","webpack://superset/./node_modules/rc-motion/es/CSSMotion.js","webpack://superset/./node_modules/rc-motion/es/util/diff.js","webpack://superset/./node_modules/rc-motion/es/CSSMotionList.js","webpack://superset/./node_modules/rc-motion/es/index.js","webpack://superset/./node_modules/rc-notification/es/Notice.js","webpack://superset/./node_modules/rc-notification/es/Notification.js","webpack://superset/./node_modules/rc-notification/es/index.js","webpack://superset/./node_modules/rc-notification/es/useNotification.js","webpack://superset/./node_modules/rc-notification/lib/Notice.js","webpack://superset/./node_modules/rc-notification/lib/useNotification.js","webpack://superset/./node_modules/rc-overflow/node_modules/rc-resize-observer/es/Collection.js","webpack://superset/./node_modules/rc-overflow/node_modules/rc-resize-observer/es/utils/observerUtil.js","webpack://superset/./node_modules/rc-overflow/node_modules/rc-resize-observer/es/SingleObserver/DomWrapper.js","webpack://superset/./node_modules/rc-overflow/node_modules/rc-resize-observer/es/SingleObserver/index.js","webpack://superset/./node_modules/rc-overflow/node_modules/rc-resize-observer/es/index.js","webpack://superset/./node_modules/rc-overflow/es/Item.js","webpack://superset/./node_modules/rc-overflow/es/hooks/useEffectState.js","webpack://superset/./node_modules/rc-overflow/es/context.js","webpack://superset/./node_modules/rc-overflow/es/RawItem.js","webpack://superset/./node_modules/rc-overflow/es/Overflow.js","webpack://superset/./node_modules/rc-overflow/es/hooks/channelUpdate.js","webpack://superset/./node_modules/rc-overflow/es/index.js","webpack://superset/./node_modules/rc-pagination/es/Pager.js","webpack://superset/./node_modules/rc-pagination/es/Options.js","webpack://superset/./node_modules/rc-pagination/es/KeyCode.js","webpack://superset/./node_modules/rc-pagination/es/Pagination.js","webpack://superset/./node_modules/rc-pagination/es/locale/zh_CN.js","webpack://superset/./node_modules/rc-pagination/es/locale/en_US.js","webpack://superset/./node_modules/rc-pagination/lib/locale/en_US.js","webpack://superset/./node_modules/rc-progress/es/common.js","webpack://superset/./node_modules/rc-progress/es/Line.js","webpack://superset/./node_modules/rc-progress/es/Circle.js","webpack://superset/./node_modules/rc-resize-observer/es/index.js","webpack://superset/./node_modules/rc-steps/es/Step.js","webpack://superset/./node_modules/rc-steps/es/Steps.js","webpack://superset/./node_modules/rc-steps/es/index.js","webpack://superset/./node_modules/rc-switch/es/index.js","webpack://superset/./node_modules/rc-tabs/es/hooks/useRaf.js","webpack://superset/./node_modules/rc-tabs/es/TabNavList/TabNode.js","webpack://superset/./node_modules/rc-tabs/es/hooks/useOffsets.js","webpack://superset/./node_modules/rc-tabs/es/hooks/useVisibleRange.js","webpack://superset/./node_modules/rc-tabs/es/TabNavList/AddButton.js","webpack://superset/./node_modules/rc-tabs/es/TabNavList/OperationNode.js","webpack://superset/./node_modules/rc-tabs/es/TabContext.js","webpack://superset/./node_modules/rc-tabs/es/hooks/useTouchMove.js","webpack://superset/./node_modules/rc-tabs/es/hooks/useSyncState.js","webpack://superset/./node_modules/rc-tabs/es/TabNavList/index.js","webpack://superset/./node_modules/rc-tabs/es/hooks/useRefs.js","webpack://superset/./node_modules/rc-tabs/es/TabPanelList/index.js","webpack://superset/./node_modules/rc-tabs/es/TabPanelList/TabPane.js","webpack://superset/./node_modules/rc-tabs/es/Tabs.js","webpack://superset/./node_modules/rc-tabs/es/index.js","webpack://superset/./node_modules/rc-textarea/es/calculateNodeHeight.js","webpack://superset/./node_modules/rc-textarea/es/ResizableTextArea.js","webpack://superset/./node_modules/rc-textarea/es/index.js","webpack://superset/./node_modules/rc-trigger/es/utils/alignUtil.js","webpack://superset/./node_modules/rc-trigger/es/utils/legacyUtil.js","webpack://superset/./node_modules/rc-trigger/es/Popup/Mask.js","webpack://superset/./node_modules/dom-align/dist-web/index.js","webpack://superset/./node_modules/rc-align/es/util.js","webpack://superset/./node_modules/rc-align/es/Align.js","webpack://superset/./node_modules/rc-align/es/hooks/useBuffer.js","webpack://superset/./node_modules/rc-align/es/index.js","webpack://superset/./node_modules/rc-trigger/es/Popup/useVisibleStatus.js","webpack://superset/./node_modules/rc-trigger/es/Popup/PopupInner.js","webpack://superset/./node_modules/rc-trigger/es/Popup/useStretchStyle.js","webpack://superset/./node_modules/rc-trigger/es/Popup/MobilePopupInner.js","webpack://superset/./node_modules/rc-trigger/es/Popup/index.js","webpack://superset/./node_modules/rc-trigger/es/context.js","webpack://superset/./node_modules/rc-trigger/es/index.js","webpack://superset/./node_modules/rc-upload/es/request.js","webpack://superset/./node_modules/rc-upload/es/uid.js","webpack://superset/./node_modules/rc-upload/es/attr-accept.js","webpack://superset/./node_modules/rc-upload/es/traverseFileTree.js","webpack://superset/./node_modules/rc-upload/es/AjaxUploader.js","webpack://superset/./node_modules/rc-upload/es/Upload.js","webpack://superset/./node_modules/rc-upload/es/index.js","webpack://superset/./node_modules/rc-util/es/Children/toArray.js","webpack://superset/./node_modules/rc-util/es/Dom/addEventListener.js","webpack://superset/./node_modules/rc-util/es/Dom/canUseDom.js","webpack://superset/./node_modules/rc-util/es/Dom/contains.js","webpack://superset/./node_modules/rc-util/es/Dom/dynamicCSS.js","webpack://superset/./node_modules/rc-util/es/Dom/findDOMNode.js","webpack://superset/./node_modules/rc-util/es/Dom/isVisible.js","webpack://superset/./node_modules/rc-util/es/Dom/shadow.js","webpack://superset/./node_modules/rc-util/es/KeyCode.js","webpack://superset/./node_modules/rc-util/es/Portal.js","webpack://superset/./node_modules/rc-util/es/setStyle.js","webpack://superset/./node_modules/rc-util/es/switchScrollingEffect.js","webpack://superset/./node_modules/rc-util/es/Dom/scrollLocker.js","webpack://superset/./node_modules/rc-util/es/PortalWrapper.js","webpack://superset/./node_modules/rc-util/es/getScrollBarSize.js","webpack://superset/./node_modules/rc-util/es/hooks/useEvent.js","webpack://superset/./node_modules/rc-util/es/hooks/useLayoutEffect.js","webpack://superset/./node_modules/rc-util/es/hooks/useMemo.js","webpack://superset/./node_modules/rc-util/es/hooks/useMergedState.js","webpack://superset/./node_modules/rc-util/es/hooks/useState.js","webpack://superset/./node_modules/rc-util/es/isEqual.js","webpack://superset/./node_modules/rc-util/es/isMobile.js","webpack://superset/./node_modules/rc-util/es/omit.js","webpack://superset/./node_modules/rc-util/es/pickAttrs.js","webpack://superset/./node_modules/rc-util/es/raf.js","webpack://superset/./node_modules/rc-util/es/ref.js","webpack://superset/./node_modules/rc-util/es/utils/get.js","webpack://superset/./node_modules/rc-util/es/utils/set.js","webpack://superset/./node_modules/rc-util/es/warning.js","webpack://superset/./node_modules/rc-util/lib/Dom/canUseDom.js","webpack://superset/./node_modules/rc-util/lib/Dom/contains.js","webpack://superset/./node_modules/rc-util/lib/Dom/dynamicCSS.js","webpack://superset/./node_modules/rc-util/lib/Dom/shadow.js","webpack://superset/./node_modules/rc-util/lib/omit.js","webpack://superset/./node_modules/rc-util/lib/warning.js","webpack://superset/./node_modules/rc-util/node_modules/react-is/cjs/react-is.production.min.js","webpack://superset/./node_modules/rc-util/node_modules/react-is/index.js","webpack://superset/./node_modules/rc-virtual-list/node_modules/rc-resize-observer/es/Collection.js","webpack://superset/./node_modules/rc-virtual-list/node_modules/rc-resize-observer/es/utils/observerUtil.js","webpack://superset/./node_modules/rc-virtual-list/node_modules/rc-resize-observer/es/SingleObserver/DomWrapper.js","webpack://superset/./node_modules/rc-virtual-list/node_modules/rc-resize-observer/es/SingleObserver/index.js","webpack://superset/./node_modules/rc-virtual-list/node_modules/rc-resize-observer/es/index.js","webpack://superset/./node_modules/rc-virtual-list/es/Filler.js","webpack://superset/./node_modules/rc-virtual-list/es/Item.js","webpack://superset/./node_modules/rc-virtual-list/es/utils/isFirefox.js","webpack://superset/./node_modules/rc-virtual-list/es/hooks/useOriginScroll.js","webpack://superset/./node_modules/rc-virtual-list/es/utils/CacheMap.js","webpack://superset/./node_modules/rc-virtual-list/es/hooks/useMobileTouchMove.js","webpack://superset/./node_modules/rc-virtual-list/es/ScrollBar.js","webpack://superset/./node_modules/rc-virtual-list/es/utils/scrollbarUtil.js","webpack://superset/./node_modules/rc-virtual-list/es/List.js","webpack://superset/./node_modules/rc-virtual-list/es/hooks/useHeights.js","webpack://superset/./node_modules/rc-virtual-list/es/hooks/useDiffItem.js","webpack://superset/./node_modules/rc-virtual-list/es/utils/algorithmUtil.js","webpack://superset/./node_modules/rc-virtual-list/es/hooks/useFrameWheel.js","webpack://superset/./node_modules/rc-virtual-list/es/hooks/useScrollTo.js","webpack://superset/./node_modules/rc-virtual-list/es/hooks/useGetSize.js","webpack://superset/./node_modules/rc-virtual-list/es/hooks/useChildren.js","webpack://superset/./node_modules/rc-virtual-list/es/index.js","webpack://superset/./node_modules/re-resizable/lib/resizer.js","webpack://superset/./node_modules/re-resizable/lib/index.js","webpack://superset/./node_modules/react-draggable/build/cjs/Draggable.js","webpack://superset/./node_modules/react-draggable/build/cjs/DraggableCore.js","webpack://superset/./node_modules/react-draggable/build/cjs/cjs.js","webpack://superset/./node_modules/react-draggable/build/cjs/utils/domFns.js","webpack://superset/./node_modules/react-draggable/build/cjs/utils/getPrefix.js","webpack://superset/./node_modules/react-draggable/build/cjs/utils/log.js","webpack://superset/./node_modules/react-draggable/build/cjs/utils/positionFns.js","webpack://superset/./node_modules/react-draggable/build/cjs/utils/shims.js","webpack://superset/./node_modules/react-markdown/node_modules/react-is/cjs/react-is.production.min.js","webpack://superset/./node_modules/react-markdown/node_modules/react-is/index.js","webpack://superset/./node_modules/react-router-dom/esm/react-router-dom.js","webpack://superset/./node_modules/react-router/esm/react-router.js","webpack://superset/./node_modules/react-router/node_modules/isarray/index.js","webpack://superset/./node_modules/react-router/node_modules/path-to-regexp/index.js","webpack://superset/./node_modules/redux-localstorage/lib/createSlicer.js","webpack://superset/./node_modules/redux-localstorage/lib/getSubset.js","webpack://superset/./node_modules/redux-localstorage/lib/persistState.js","webpack://superset/./node_modules/redux-localstorage/lib/util/mergeState.js","webpack://superset/./node_modules/redux-localstorage/lib/util/typeOf.js","webpack://superset/./node_modules/redux-thunk/es/index.js","webpack://superset/./node_modules/redux-undo/lib/actions.js","webpack://superset/./node_modules/redux-undo/lib/debug.js","webpack://superset/./node_modules/redux-undo/lib/helpers.js","webpack://superset/./node_modules/redux-undo/lib/index.js","webpack://superset/./node_modules/redux-undo/lib/reducer.js","webpack://superset/./node_modules/reselect/es/defaultMemoize.js","webpack://superset/./node_modules/reselect/es/index.js","webpack://superset/./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack://superset/./node_modules/scheduler/cjs/scheduler.production.min.js","webpack://superset/./node_modules/scheduler/index.js","webpack://superset/./node_modules/shallowequal/index.js","webpack://superset/./node_modules/split-on-first/index.js","webpack://superset/./node_modules/strict-uri-encode/index.js","webpack://superset/./node_modules/style-to-object/index.js","webpack://superset/./node_modules/tinycolor2/tinycolor.js","webpack://superset/./node_modules/toggle-selection/index.js","webpack://superset/./node_modules/unified/node_modules/is-buffer/index.js","webpack://superset/./node_modules/urijs/src/IPv6.js","webpack://superset/./node_modules/urijs/src/SecondLevelDomains.js","webpack://superset/./node_modules/urijs/src/URI.js","webpack://superset/./node_modules/urijs/src/punycode.js","webpack://superset/./node_modules/use-event-callback/lib/index.js","webpack://superset/./node_modules/serialize-query-params/esm/serialize.js","webpack://superset/./node_modules/serialize-query-params/esm/params.js","webpack://superset/./node_modules/serialize-query-params/esm/updateLocation.js","webpack://superset/./node_modules/serialize-query-params/esm/encodeQueryParams.js","webpack://superset/./node_modules/serialize-query-params/esm/index.js","webpack://superset/./node_modules/use-query-params/esm/shallowEqual.js","webpack://superset/./node_modules/use-query-params/esm/helpers.js","webpack://superset/./node_modules/use-query-params/esm/LocationProvider.js","webpack://superset/./node_modules/use-query-params/esm/updateUrlQuery.js","webpack://superset/./node_modules/use-query-params/esm/memoizedQueryParser.js","webpack://superset/./node_modules/use-query-params/esm/useQueryParam.js","webpack://superset/./node_modules/use-query-params/esm/useQueryParams.js","webpack://superset/./node_modules/use-query-params/esm/QueryParamProvider.js","webpack://superset/./node_modules/vfile/node_modules/is-buffer/index.js","webpack://superset/./node_modules/xss/lib/default.js","webpack://superset/./node_modules/xss/lib/index.js","webpack://superset/./node_modules/xss/lib/parser.js","webpack://superset/./node_modules/xss/lib/util.js","webpack://superset/./node_modules/xss/lib/xss.js","webpack://superset/./node_modules/classnames/index.js","webpack://superset/./node_modules/@ungap/structured-clone/esm/types.js","webpack://superset/./node_modules/@ungap/structured-clone/esm/deserialize.js","webpack://superset/./node_modules/@ungap/structured-clone/esm/serialize.js","webpack://superset/./node_modules/@ungap/structured-clone/esm/index.js","webpack://superset/./node_modules/decode-named-character-reference/index.dom.js","webpack://superset/./node_modules/hast-util-sanitize/lib/schema.js","webpack://superset/./node_modules/immer/dist/immer.esm.mjs","webpack://superset/./node_modules/micromark-core-commonmark/lib/blank-line.js","webpack://superset/./node_modules/micromark-factory-space/index.js","webpack://superset/./node_modules/micromark-util-character/lib/unicode-punctuation-regex.js","webpack://superset/./node_modules/micromark-util-character/index.js","webpack://superset/./node_modules/micromark-util-chunked/index.js","webpack://superset/./node_modules/micromark-util-classify-character/index.js","webpack://superset/./node_modules/micromark-util-combine-extensions/index.js","webpack://superset/./node_modules/micromark-util-decode-numeric-character-reference/index.js","webpack://superset/./node_modules/micromark-util-decode-string/index.js","webpack://superset/./node_modules/micromark-util-normalize-identifier/index.js","webpack://superset/./node_modules/micromark-util-resolve-all/index.js","webpack://superset/./node_modules/nanoid/index.browser.js","webpack://superset/./node_modules/nanoid/url-alphabet/index.js","webpack://superset/./node_modules/unist-util-stringify-position/index.js","webpack://superset/./node_modules/vfile-message/index.js","webpack://superset/./node_modules/vfile/lib/minpath.browser.js","webpack://superset/./node_modules/vfile/lib/minproc.browser.js","webpack://superset/./node_modules/vfile/lib/minurl.shared.js","webpack://superset/./node_modules/vfile/lib/index.js","webpack://superset/./node_modules/vfile/lib/minurl.browser.js","webpack://superset/./node_modules/bail/index.js","webpack://superset/./node_modules/unified/node_modules/is-plain-obj/index.js","webpack://superset/./node_modules/unified/lib/index.js","webpack://superset/./node_modules/trough/lib/index.js","webpack://superset/./node_modules/mdast-util-from-markdown/node_modules/mdast-util-to-string/index.js","webpack://superset/./node_modules/micromark/lib/initialize/content.js","webpack://superset/./node_modules/micromark/lib/initialize/document.js","webpack://superset/./node_modules/micromark-util-subtokenize/index.js","webpack://superset/./node_modules/micromark-core-commonmark/lib/content.js","webpack://superset/./node_modules/micromark/lib/initialize/flow.js","webpack://superset/./node_modules/micromark/lib/initialize/text.js","webpack://superset/./node_modules/micromark/lib/create-tokenizer.js","webpack://superset/./node_modules/micromark-core-commonmark/lib/thematic-break.js","webpack://superset/./node_modules/micromark-core-commonmark/lib/list.js","webpack://superset/./node_modules/micromark-core-commonmark/lib/block-quote.js","webpack://superset/./node_modules/micromark-factory-destination/index.js","webpack://superset/./node_modules/micromark-factory-label/index.js","webpack://superset/./node_modules/micromark-factory-title/index.js","webpack://superset/./node_modules/micromark-factory-whitespace/index.js","webpack://superset/./node_modules/micromark-core-commonmark/lib/definition.js","webpack://superset/./node_modules/micromark-core-commonmark/lib/code-indented.js","webpack://superset/./node_modules/micromark-core-commonmark/lib/heading-atx.js","webpack://superset/./node_modules/micromark-core-commonmark/lib/setext-underline.js","webpack://superset/./node_modules/micromark-util-html-tag-name/index.js","webpack://superset/./node_modules/micromark-core-commonmark/lib/html-flow.js","webpack://superset/./node_modules/micromark-core-commonmark/lib/code-fenced.js","webpack://superset/./node_modules/micromark-core-commonmark/lib/character-reference.js","webpack://superset/./node_modules/micromark-core-commonmark/lib/character-escape.js","webpack://superset/./node_modules/micromark-core-commonmark/lib/line-ending.js","webpack://superset/./node_modules/micromark-core-commonmark/lib/label-end.js","webpack://superset/./node_modules/micromark-core-commonmark/lib/label-start-image.js","webpack://superset/./node_modules/micromark-core-commonmark/lib/attention.js","webpack://superset/./node_modules/micromark-core-commonmark/lib/autolink.js","webpack://superset/./node_modules/micromark-core-commonmark/lib/html-text.js","webpack://superset/./node_modules/micromark-core-commonmark/lib/code-text.js","webpack://superset/./node_modules/micromark/lib/constructs.js","webpack://superset/./node_modules/micromark-core-commonmark/lib/label-start-link.js","webpack://superset/./node_modules/micromark-core-commonmark/lib/hard-break-escape.js","webpack://superset/./node_modules/micromark/lib/preprocess.js","webpack://superset/./node_modules/mdast-util-from-markdown/lib/index.js","webpack://superset/./node_modules/micromark/lib/postprocess.js","webpack://superset/./node_modules/micromark/lib/parse.js","webpack://superset/./node_modules/remark-parse/index.js","webpack://superset/./node_modules/remark-parse/lib/index.js","webpack://superset/./node_modules/remark-rehype/node_modules/unist-builder/index.js","webpack://superset/./node_modules/unist-util-visit/index.js","webpack://superset/./node_modules/unist-util-position/lib/index.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-definitions/index.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/traverse.js","webpack://superset/./node_modules/micromark-util-sanitize-uri/index.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/wrap.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/revert.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/handlers/list-item.js","webpack://superset/./node_modules/trim-lines/index.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/handlers/index.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/handlers/break.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/handlers/code.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/handlers/delete.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/handlers/footnote.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/handlers/heading.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/handlers/html.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/handlers/image.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/handlers/link.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/handlers/list.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/handlers/root.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/handlers/strong.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/handlers/table.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/handlers/text.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/index.js","webpack://superset/./node_modules/remark-rehype/node_modules/unist-util-generated/index.js","webpack://superset/./node_modules/remark-rehype/node_modules/mdast-util-to-hast/lib/footer.js","webpack://superset/./node_modules/remark-rehype/lib/index.js","webpack://superset/./node_modules/react-markdown/node_modules/property-information/lib/util/schema.js","webpack://superset/./node_modules/react-markdown/node_modules/property-information/lib/util/merge.js","webpack://superset/./node_modules/react-markdown/node_modules/property-information/lib/normalize.js","webpack://superset/./node_modules/react-markdown/node_modules/property-information/lib/util/info.js","webpack://superset/./node_modules/react-markdown/node_modules/property-information/lib/util/types.js","webpack://superset/./node_modules/react-markdown/node_modules/property-information/lib/util/defined-info.js","webpack://superset/./node_modules/react-markdown/node_modules/property-information/lib/util/create.js","webpack://superset/./node_modules/react-markdown/node_modules/property-information/lib/xlink.js","webpack://superset/./node_modules/react-markdown/node_modules/property-information/lib/xml.js","webpack://superset/./node_modules/react-markdown/node_modules/property-information/lib/util/case-sensitive-transform.js","webpack://superset/./node_modules/react-markdown/node_modules/property-information/lib/util/case-insensitive-transform.js","webpack://superset/./node_modules/react-markdown/node_modules/property-information/lib/xmlns.js","webpack://superset/./node_modules/react-markdown/node_modules/property-information/lib/aria.js","webpack://superset/./node_modules/react-markdown/node_modules/property-information/lib/html.js","webpack://superset/./node_modules/react-markdown/node_modules/property-information/lib/svg.js","webpack://superset/./node_modules/react-markdown/node_modules/property-information/index.js","webpack://superset/./node_modules/react-markdown/lib/rehype-filter.js","webpack://superset/./node_modules/react-markdown/node_modules/property-information/lib/find.js","webpack://superset/./node_modules/react-markdown/node_modules/property-information/lib/hast-to-react.js","webpack://superset/./node_modules/style-to-object/index.mjs","webpack://superset/./node_modules/react-markdown/lib/uri-transformer.js","webpack://superset/./node_modules/react-markdown/lib/ast-to-react.js","webpack://superset/./node_modules/hast-util-whitespace/index.js","webpack://superset/./node_modules/react-markdown/node_modules/comma-separated-tokens/index.js","webpack://superset/./node_modules/react-markdown/node_modules/space-separated-tokens/index.js","webpack://superset/./node_modules/react-markdown/lib/react-markdown.js","webpack://superset/./node_modules/hast-util-from-parse5/node_modules/property-information/lib/util/schema.js","webpack://superset/./node_modules/hast-util-from-parse5/node_modules/property-information/lib/util/merge.js","webpack://superset/./node_modules/hast-util-from-parse5/node_modules/property-information/lib/normalize.js","webpack://superset/./node_modules/hast-util-from-parse5/node_modules/property-information/lib/util/info.js","webpack://superset/./node_modules/hast-util-from-parse5/node_modules/property-information/lib/util/types.js","webpack://superset/./node_modules/hast-util-from-parse5/node_modules/property-information/lib/util/defined-info.js","webpack://superset/./node_modules/hast-util-from-parse5/node_modules/property-information/lib/util/create.js","webpack://superset/./node_modules/hast-util-from-parse5/node_modules/property-information/lib/xlink.js","webpack://superset/./node_modules/hast-util-from-parse5/node_modules/property-information/lib/xml.js","webpack://superset/./node_modules/hast-util-from-parse5/node_modules/property-information/lib/util/case-sensitive-transform.js","webpack://superset/./node_modules/hast-util-from-parse5/node_modules/property-information/lib/util/case-insensitive-transform.js","webpack://superset/./node_modules/hast-util-from-parse5/node_modules/property-information/lib/xmlns.js","webpack://superset/./node_modules/hast-util-from-parse5/node_modules/property-information/lib/aria.js","webpack://superset/./node_modules/hast-util-from-parse5/node_modules/property-information/lib/html.js","webpack://superset/./node_modules/hast-util-from-parse5/node_modules/property-information/lib/svg.js","webpack://superset/./node_modules/hast-util-from-parse5/node_modules/property-information/index.js","webpack://superset/./node_modules/hast-util-from-parse5/node_modules/comma-separated-tokens/index.js","webpack://superset/./node_modules/hast-util-from-parse5/node_modules/hast-util-parse-selector/lib/index.js","webpack://superset/./node_modules/hast-util-from-parse5/node_modules/property-information/lib/find.js","webpack://superset/./node_modules/hast-util-from-parse5/node_modules/space-separated-tokens/index.js","webpack://superset/./node_modules/hast-util-from-parse5/node_modules/hastscript/lib/create-h.js","webpack://superset/./node_modules/hast-util-from-parse5/node_modules/hastscript/lib/svg-case-sensitive-tag-names.js","webpack://superset/./node_modules/hast-util-from-parse5/node_modules/hastscript/lib/index.js","webpack://superset/./node_modules/vfile-location/lib/index.js","webpack://superset/./node_modules/web-namespaces/index.js","webpack://superset/./node_modules/hast-util-from-parse5/lib/index.js","webpack://superset/./node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/schema.js","webpack://superset/./node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/merge.js","webpack://superset/./node_modules/hast-util-to-parse5/node_modules/property-information/lib/normalize.js","webpack://superset/./node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/info.js","webpack://superset/./node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/types.js","webpack://superset/./node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/defined-info.js","webpack://superset/./node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/create.js","webpack://superset/./node_modules/hast-util-to-parse5/node_modules/property-information/lib/xlink.js","webpack://superset/./node_modules/hast-util-to-parse5/node_modules/property-information/lib/xml.js","webpack://superset/./node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/case-sensitive-transform.js","webpack://superset/./node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/case-insensitive-transform.js","webpack://superset/./node_modules/hast-util-to-parse5/node_modules/property-information/lib/xmlns.js","webpack://superset/./node_modules/hast-util-to-parse5/node_modules/property-information/lib/aria.js","webpack://superset/./node_modules/hast-util-to-parse5/node_modules/property-information/lib/html.js","webpack://superset/./node_modules/hast-util-to-parse5/node_modules/property-information/lib/svg.js","webpack://superset/./node_modules/hast-util-to-parse5/node_modules/property-information/index.js","webpack://superset/./node_modules/hast-util-to-parse5/node_modules/property-information/lib/find.js","webpack://superset/./node_modules/zwitch/index.js","webpack://superset/./node_modules/hast-util-to-parse5/lib/index.js","webpack://superset/./node_modules/hast-util-to-parse5/node_modules/comma-separated-tokens/index.js","webpack://superset/./node_modules/hast-util-to-parse5/node_modules/space-separated-tokens/index.js","webpack://superset/./node_modules/html-void-elements/index.js","webpack://superset/./node_modules/parse5/dist/common/unicode.js","webpack://superset/./node_modules/parse5/dist/common/error-codes.js","webpack://superset/./node_modules/parse5/dist/common/token.js","webpack://superset/./node_modules/parse5/dist/tokenizer/preprocessor.js","webpack://superset/./node_modules/entities/lib/esm/generated/decode-data-html.js","webpack://superset/./node_modules/entities/lib/esm/generated/decode-data-xml.js","webpack://superset/./node_modules/entities/lib/esm/decode_codepoint.js","webpack://superset/./node_modules/entities/lib/esm/decode.js","webpack://superset/./node_modules/parse5/dist/common/html.js","webpack://superset/./node_modules/parse5/dist/tokenizer/index.js","webpack://superset/./node_modules/parse5/dist/parser/open-element-stack.js","webpack://superset/./node_modules/parse5/dist/parser/formatting-element-list.js","webpack://superset/./node_modules/parse5/dist/tree-adapters/default.js","webpack://superset/./node_modules/parse5/dist/common/doctype.js","webpack://superset/./node_modules/parse5/dist/common/foreign-content.js","webpack://superset/./node_modules/parse5/dist/parser/index.js","webpack://superset/./node_modules/entities/lib/esm/escape.js","webpack://superset/./node_modules/parse5/dist/serializer/index.js","webpack://superset/./node_modules/hast-util-raw/node_modules/unist-util-position/lib/index.js","webpack://superset/./node_modules/hast-util-raw/node_modules/unist-util-is/lib/index.js","webpack://superset/./node_modules/hast-util-raw/node_modules/unist-util-visit-parents/lib/index.js","webpack://superset/./node_modules/hast-util-raw/lib/index.js","webpack://superset/./node_modules/hast-util-raw/node_modules/unist-util-visit/lib/index.js","webpack://superset/./node_modules/rehype-raw/lib/index.js","webpack://superset/./node_modules/hast-util-sanitize/node_modules/unist-util-position/lib/index.js","webpack://superset/./node_modules/hast-util-sanitize/lib/index.js","webpack://superset/./node_modules/rehype-sanitize/lib/index.js","webpack://superset/./node_modules/tiny-invariant/dist/esm/tiny-invariant.js","webpack://superset/./node_modules/unist-util-is/index.js","webpack://superset/./node_modules/unist-util-visit-parents/index.js","webpack://superset/./packages/superset-ui-core/node_modules/micromark-extension-gfm-autolink-literal/lib/syntax.js","webpack://superset/./packages/superset-ui-core/node_modules/micromark-extension-gfm-footnote/lib/syntax.js","webpack://superset/./packages/superset-ui-core/node_modules/micromark-extension-gfm-strikethrough/lib/syntax.js","webpack://superset/./packages/superset-ui-core/node_modules/micromark-extension-gfm-table/lib/edit-map.js","webpack://superset/./packages/superset-ui-core/node_modules/micromark-extension-gfm-table/lib/infer.js","webpack://superset/./packages/superset-ui-core/node_modules/micromark-extension-gfm-table/lib/syntax.js","webpack://superset/./packages/superset-ui-core/node_modules/micromark-extension-gfm-task-list-item/lib/syntax.js","webpack://superset/./node_modules/ccount/index.js","webpack://superset/./packages/superset-ui-core/node_modules/mdast-util-find-and-replace/lib/index.js","webpack://superset/./packages/superset-ui-core/node_modules/escape-string-regexp/index.js","webpack://superset/./packages/superset-ui-core/node_modules/mdast-util-gfm-autolink-literal/lib/index.js","webpack://superset/./packages/superset-ui-core/node_modules/mdast-util-to-markdown/lib/util/association.js","webpack://superset/./packages/superset-ui-core/node_modules/mdast-util-to-markdown/lib/util/container-flow.js","webpack://superset/./packages/superset-ui-core/node_modules/mdast-util-to-markdown/lib/util/indent-lines.js","webpack://superset/./packages/superset-ui-core/node_modules/mdast-util-to-markdown/lib/util/pattern-compile.js","webpack://superset/./packages/superset-ui-core/node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js","webpack://superset/./packages/superset-ui-core/node_modules/mdast-util-to-markdown/lib/util/safe.js","webpack://superset/./packages/superset-ui-core/node_modules/mdast-util-to-markdown/lib/util/track.js","webpack://superset/./packages/superset-ui-core/node_modules/mdast-util-gfm-footnote/lib/index.js","webpack://superset/./packages/superset-ui-core/node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js","webpack://superset/./packages/superset-ui-core/node_modules/mdast-util-gfm-strikethrough/lib/index.js","webpack://superset/./packages/superset-ui-core/node_modules/mdast-util-to-markdown/lib/handle/inline-code.js","webpack://superset/./node_modules/markdown-table/index.js","webpack://superset/./packages/superset-ui-core/node_modules/mdast-util-gfm-table/lib/index.js","webpack://superset/./packages/superset-ui-core/node_modules/mdast-util-gfm-task-list-item/lib/index.js","webpack://superset/./packages/superset-ui-core/node_modules/mdast-util-to-markdown/lib/handle/list-item.js","webpack://superset/./packages/superset-ui-core/node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js","webpack://superset/./packages/superset-ui-core/node_modules/mdast-util-to-markdown/lib/util/check-bullet.js","webpack://superset/./packages/superset-ui-core/node_modules/remark-gfm/index.js","webpack://superset/./packages/superset-ui-core/node_modules/micromark-extension-gfm/index.js","webpack://superset/./packages/superset-ui-core/node_modules/mdast-util-gfm/lib/index.js"],"sourcesContent":["import { bound01, pad2 } from './util.js';\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// \n/**\n * Handle bounds / percentage checking to conform to CSS color spec\n * \n * *Assumes:* r, g, b in [0, 255] or [0, 1]\n * *Returns:* { r, g, b } in [0, 255]\n */\nexport function rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255,\n };\n}\n/**\n * Converts an RGB color value to HSL.\n * *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n * *Returns:* { h, s, l } in [0,1]\n */\nexport function rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h = 0;\n var s = 0;\n var l = (max + min) / 2;\n if (max === min) {\n s = 0;\n h = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return { h: h, s: s, l: l };\n}\nfunction hue2rgb(p, q, t) {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * (6 * t);\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n}\n/**\n * Converts an HSL color value to RGB.\n *\n * *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n * *Returns:* { r, g, b } in the set [0, 255]\n */\nexport function hslToRgb(h, s, l) {\n var r;\n var g;\n var b;\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n if (s === 0) {\n // achromatic\n g = l;\n b = l;\n r = l;\n }\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 return { r: r * 255, g: g * 255, b: b * 255 };\n}\n/**\n * Converts an RGB color value to HSV\n *\n * *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n * *Returns:* { h, s, v } in [0,1]\n */\nexport function rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h = 0;\n var v = max;\n var d = max - min;\n var s = max === 0 ? 0 : d / max;\n if (max === min) {\n h = 0; // achromatic\n }\n else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return { h: h, s: s, v: v };\n}\n/**\n * Converts an HSV color value to RGB.\n *\n * *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n * *Returns:* { r, g, b } in the set [0, 255]\n */\nexport function hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - f * s);\n var t = v * (1 - (1 - f) * s);\n var mod = i % 6;\n var r = [v, q, p, p, t, v][mod];\n var g = [t, v, v, q, p, p][mod];\n var b = [p, p, t, v, v, q][mod];\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n/**\n * Converts an RGB color to hex\n *\n * Assumes r, g, and b are contained in the set [0, 255]\n * Returns a 3 or 6 character hex\n */\nexport function rgbToHex(r, g, b, allow3Char) {\n var hex = [\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n ];\n // Return a 3 character hex if possible\n if (allow3Char &&\n hex[0].startsWith(hex[0].charAt(1)) &&\n hex[1].startsWith(hex[1].charAt(1)) &&\n hex[2].startsWith(hex[2].charAt(1))) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n return hex.join('');\n}\n/**\n * Converts an RGBA color plus alpha transparency to hex\n *\n * Assumes r, g, b are contained in the set [0, 255] and\n * a in [0, 1]. Returns a 4 or 8 character rgba hex\n */\n// eslint-disable-next-line max-params\nexport function rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n pad2(convertDecimalToHex(a)),\n ];\n // Return a 4 character hex if possible\n if (allow4Char &&\n hex[0].startsWith(hex[0].charAt(1)) &&\n hex[1].startsWith(hex[1].charAt(1)) &&\n hex[2].startsWith(hex[2].charAt(1)) &&\n hex[3].startsWith(hex[3].charAt(1))) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n return hex.join('');\n}\n/**\n * Converts an RGBA color to an ARGB Hex8 string\n * Rarely used, but required for \"toFilter()\"\n */\nexport function rgbaToArgbHex(r, g, b, a) {\n var hex = [\n pad2(convertDecimalToHex(a)),\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n ];\n return hex.join('');\n}\n/** Converts a decimal to a hex value */\nexport function convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n/** Converts a hex value to a decimal */\nexport function convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n}\n/** Parse a base-16 hex value into a base-10 integer */\nexport function parseIntFromHex(val) {\n return parseInt(val, 16);\n}\nexport function numberInputToObject(color) {\n return {\n r: color >> 16,\n g: (color & 0xff00) >> 8,\n b: color & 0xff,\n };\n}\n","// https://github.com/bahamas10/css-color-names/blob/master/css-color-names.json\n/**\n * @hidden\n */\nexport var names = {\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 darkgreen: '#006400',\n darkgrey: '#a9a9a9',\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 goldenrod: '#daa520',\n gold: '#ffd700',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavenderblush: '#fff0f5',\n lavender: '#e6e6fa',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\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: '#9370db',\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: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\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};\n","/* eslint-disable @typescript-eslint/no-redundant-type-constituents */\nimport { convertHexToDecimal, hslToRgb, hsvToRgb, parseIntFromHex, rgbToRgb, } from './conversion.js';\nimport { names } from './css-color-names.js';\nimport { boundAlpha, convertToPercentage } from './util.js';\n/**\n * Given a string or object, convert that input to RGB\n *\n * Possible string inputs:\n * ```\n * \"red\"\n * \"#f00\" or \"f00\"\n * \"#ff0000\" or \"ff0000\"\n * \"#ff000000\" or \"ff000000\"\n * \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n * \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n * \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n * \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n * \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n * \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n * \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n * ```\n */\nexport function inputToRGB(color) {\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n if (typeof color === 'string') {\n color = stringInputToObject(color);\n }\n if (typeof color === 'object') {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === '%' ? 'prgb' : 'rgb';\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = 'hsv';\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = 'hsl';\n }\n if (Object.prototype.hasOwnProperty.call(color, 'a')) {\n a = color.a;\n }\n }\n a = boundAlpha(a);\n return {\n ok: ok,\n format: color.format || format,\n r: Math.min(255, Math.max(rgb.r, 0)),\n g: Math.min(255, Math.max(rgb.g, 0)),\n b: Math.min(255, Math.max(rgb.b, 0)),\n a: a,\n };\n}\n// \nvar CSS_INTEGER = '[-\\\\+]?\\\\d+%?';\n// \nvar CSS_NUMBER = '[-\\\\+]?\\\\d*\\\\.\\\\d+%?';\n// Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\nvar CSS_UNIT = \"(?:\".concat(CSS_NUMBER, \")|(?:\").concat(CSS_INTEGER, \")\");\n// Actual matching.\n// Parentheses and commas are optional, but not required.\n// Whitespace can take the place of commas or opening paren\nvar PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\".concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")\\\\s*\\\\)?\");\nvar PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\".concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")\\\\s*\\\\)?\");\nvar matchers = {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp('rgb' + PERMISSIVE_MATCH3),\n rgba: new RegExp('rgba' + PERMISSIVE_MATCH4),\n hsl: new RegExp('hsl' + PERMISSIVE_MATCH3),\n hsla: new RegExp('hsla' + PERMISSIVE_MATCH4),\n hsv: new RegExp('hsv' + PERMISSIVE_MATCH3),\n hsva: new RegExp('hsva' + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n};\n/**\n * Permissive string parsing. Take in a number of formats, and output an object\n * based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\n */\nexport function stringInputToObject(color) {\n color = color.trim().toLowerCase();\n if (color.length === 0) {\n return false;\n }\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n }\n else if (color === 'transparent') {\n return { r: 0, g: 0, b: 0, a: 0, format: 'name' };\n }\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match = matchers.rgb.exec(color);\n if (match) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n match = matchers.rgba.exec(color);\n if (match) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n match = matchers.hsl.exec(color);\n if (match) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n match = matchers.hsla.exec(color);\n if (match) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n match = matchers.hsv.exec(color);\n if (match) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n match = matchers.hsva.exec(color);\n if (match) {\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\n }\n match = matchers.hex8.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? 'name' : 'hex8',\n };\n }\n match = matchers.hex6.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? 'name' : 'hex',\n };\n }\n match = matchers.hex4.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1] + match[1]),\n g: parseIntFromHex(match[2] + match[2]),\n b: parseIntFromHex(match[3] + match[3]),\n a: convertHexToDecimal(match[4] + match[4]),\n format: named ? 'name' : 'hex8',\n };\n }\n match = matchers.hex3.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1] + match[1]),\n g: parseIntFromHex(match[2] + match[2]),\n b: parseIntFromHex(match[3] + match[3]),\n format: named ? 'name' : 'hex',\n };\n }\n return false;\n}\n/**\n * Check to see if it looks like a CSS unit\n * (see `matchers` above for definition).\n */\nexport function isValidCSSUnit(color) {\n return Boolean(matchers.CSS_UNIT.exec(String(color)));\n}\n","import { numberInputToObject, rgbaToHex, rgbToHex, rgbToHsl, rgbToHsv } from './conversion.js';\nimport { names } from './css-color-names.js';\nimport { inputToRGB } from './format-input';\nimport { bound01, boundAlpha, clamp01 } from './util.js';\nvar TinyColor = /** @class */ (function () {\n function TinyColor(color, opts) {\n if (color === void 0) { color = ''; }\n if (opts === void 0) { opts = {}; }\n var _a;\n // If input is already a tinycolor, return itself\n if (color instanceof TinyColor) {\n // eslint-disable-next-line no-constructor-return\n return color;\n }\n if (typeof color === 'number') {\n color = numberInputToObject(color);\n }\n this.originalInput = color;\n var rgb = inputToRGB(color);\n this.originalInput = color;\n this.r = rgb.r;\n this.g = rgb.g;\n this.b = rgb.b;\n this.a = rgb.a;\n this.roundA = Math.round(100 * this.a) / 100;\n this.format = (_a = opts.format) !== null && _a !== void 0 ? _a : rgb.format;\n this.gradientType = opts.gradientType;\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this.r < 1) {\n this.r = Math.round(this.r);\n }\n if (this.g < 1) {\n this.g = Math.round(this.g);\n }\n if (this.b < 1) {\n this.b = Math.round(this.b);\n }\n this.isValid = rgb.ok;\n }\n TinyColor.prototype.isDark = function () {\n return this.getBrightness() < 128;\n };\n TinyColor.prototype.isLight = function () {\n return !this.isDark();\n };\n /**\n * Returns the perceived brightness of the color, from 0-255.\n */\n TinyColor.prototype.getBrightness = function () {\n // http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n };\n /**\n * Returns the perceived luminance of a color, from 0-1.\n */\n TinyColor.prototype.getLuminance = function () {\n // http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var R;\n var G;\n var B;\n var RsRGB = rgb.r / 255;\n var GsRGB = rgb.g / 255;\n var BsRGB = rgb.b / 255;\n if (RsRGB <= 0.03928) {\n R = RsRGB / 12.92;\n }\n else {\n // eslint-disable-next-line prefer-exponentiation-operator\n R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n }\n if (GsRGB <= 0.03928) {\n G = GsRGB / 12.92;\n }\n else {\n // eslint-disable-next-line prefer-exponentiation-operator\n G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n }\n if (BsRGB <= 0.03928) {\n B = BsRGB / 12.92;\n }\n else {\n // eslint-disable-next-line prefer-exponentiation-operator\n B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n }\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n };\n /**\n * Returns the alpha value of a color, from 0-1.\n */\n TinyColor.prototype.getAlpha = function () {\n return this.a;\n };\n /**\n * Sets the alpha value on the current color.\n *\n * @param alpha - The new alpha value. The accepted range is 0-1.\n */\n TinyColor.prototype.setAlpha = function (alpha) {\n this.a = boundAlpha(alpha);\n this.roundA = Math.round(100 * this.a) / 100;\n return this;\n };\n /**\n * Returns whether the color is monochrome.\n */\n TinyColor.prototype.isMonochrome = function () {\n var s = this.toHsl().s;\n return s === 0;\n };\n /**\n * Returns the object as a HSVA object.\n */\n TinyColor.prototype.toHsv = function () {\n var hsv = rgbToHsv(this.r, this.g, this.b);\n return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this.a };\n };\n /**\n * Returns the hsva values interpolated into a string with the following format:\n * \"hsva(xxx, xxx, xxx, xx)\".\n */\n TinyColor.prototype.toHsvString = function () {\n var hsv = rgbToHsv(this.r, this.g, this.b);\n var h = Math.round(hsv.h * 360);\n var s = Math.round(hsv.s * 100);\n var v = Math.round(hsv.v * 100);\n return this.a === 1 ? \"hsv(\".concat(h, \", \").concat(s, \"%, \").concat(v, \"%)\") : \"hsva(\".concat(h, \", \").concat(s, \"%, \").concat(v, \"%, \").concat(this.roundA, \")\");\n };\n /**\n * Returns the object as a HSLA object.\n */\n TinyColor.prototype.toHsl = function () {\n var hsl = rgbToHsl(this.r, this.g, this.b);\n return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this.a };\n };\n /**\n * Returns the hsla values interpolated into a string with the following format:\n * \"hsla(xxx, xxx, xxx, xx)\".\n */\n TinyColor.prototype.toHslString = function () {\n var hsl = rgbToHsl(this.r, this.g, this.b);\n var h = Math.round(hsl.h * 360);\n var s = Math.round(hsl.s * 100);\n var l = Math.round(hsl.l * 100);\n return this.a === 1 ? \"hsl(\".concat(h, \", \").concat(s, \"%, \").concat(l, \"%)\") : \"hsla(\".concat(h, \", \").concat(s, \"%, \").concat(l, \"%, \").concat(this.roundA, \")\");\n };\n /**\n * Returns the hex value of the color.\n * @param allow3Char will shorten hex value to 3 char if possible\n */\n TinyColor.prototype.toHex = function (allow3Char) {\n if (allow3Char === void 0) { allow3Char = false; }\n return rgbToHex(this.r, this.g, this.b, allow3Char);\n };\n /**\n * Returns the hex value of the color -with a # prefixed.\n * @param allow3Char will shorten hex value to 3 char if possible\n */\n TinyColor.prototype.toHexString = function (allow3Char) {\n if (allow3Char === void 0) { allow3Char = false; }\n return '#' + this.toHex(allow3Char);\n };\n /**\n * Returns the hex 8 value of the color.\n * @param allow4Char will shorten hex value to 4 char if possible\n */\n TinyColor.prototype.toHex8 = function (allow4Char) {\n if (allow4Char === void 0) { allow4Char = false; }\n return rgbaToHex(this.r, this.g, this.b, this.a, allow4Char);\n };\n /**\n * Returns the hex 8 value of the color -with a # prefixed.\n * @param allow4Char will shorten hex value to 4 char if possible\n */\n TinyColor.prototype.toHex8String = function (allow4Char) {\n if (allow4Char === void 0) { allow4Char = false; }\n return '#' + this.toHex8(allow4Char);\n };\n /**\n * Returns the shorter hex value of the color depends on its alpha -with a # prefixed.\n * @param allowShortChar will shorten hex value to 3 or 4 char if possible\n */\n TinyColor.prototype.toHexShortString = function (allowShortChar) {\n if (allowShortChar === void 0) { allowShortChar = false; }\n return this.a === 1 ? this.toHexString(allowShortChar) : this.toHex8String(allowShortChar);\n };\n /**\n * Returns the object as a RGBA object.\n */\n TinyColor.prototype.toRgb = function () {\n return {\n r: Math.round(this.r),\n g: Math.round(this.g),\n b: Math.round(this.b),\n a: this.a,\n };\n };\n /**\n * Returns the RGBA values interpolated into a string with the following format:\n * \"RGBA(xxx, xxx, xxx, xx)\".\n */\n TinyColor.prototype.toRgbString = function () {\n var r = Math.round(this.r);\n var g = Math.round(this.g);\n var b = Math.round(this.b);\n return this.a === 1 ? \"rgb(\".concat(r, \", \").concat(g, \", \").concat(b, \")\") : \"rgba(\".concat(r, \", \").concat(g, \", \").concat(b, \", \").concat(this.roundA, \")\");\n };\n /**\n * Returns the object as a RGBA object.\n */\n TinyColor.prototype.toPercentageRgb = function () {\n var fmt = function (x) { return \"\".concat(Math.round(bound01(x, 255) * 100), \"%\"); };\n return {\n r: fmt(this.r),\n g: fmt(this.g),\n b: fmt(this.b),\n a: this.a,\n };\n };\n /**\n * Returns the RGBA relative values interpolated into a string\n */\n TinyColor.prototype.toPercentageRgbString = function () {\n var rnd = function (x) { return Math.round(bound01(x, 255) * 100); };\n return this.a === 1\n ? \"rgb(\".concat(rnd(this.r), \"%, \").concat(rnd(this.g), \"%, \").concat(rnd(this.b), \"%)\")\n : \"rgba(\".concat(rnd(this.r), \"%, \").concat(rnd(this.g), \"%, \").concat(rnd(this.b), \"%, \").concat(this.roundA, \")\");\n };\n /**\n * The 'real' name of the color -if there is one.\n */\n TinyColor.prototype.toName = function () {\n if (this.a === 0) {\n return 'transparent';\n }\n if (this.a < 1) {\n return false;\n }\n var hex = '#' + rgbToHex(this.r, this.g, this.b, false);\n for (var _i = 0, _a = Object.entries(names); _i < _a.length; _i++) {\n var _b = _a[_i], key = _b[0], value = _b[1];\n if (hex === value) {\n return key;\n }\n }\n return false;\n };\n TinyColor.prototype.toString = function (format) {\n var formatSet = Boolean(format);\n format = format !== null && format !== void 0 ? format : this.format;\n var formattedString = false;\n var hasAlpha = this.a < 1 && this.a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format.startsWith('hex') || format === 'name');\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === 'name' && this.a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === 'rgb') {\n formattedString = this.toRgbString();\n }\n if (format === 'prgb') {\n formattedString = this.toPercentageRgbString();\n }\n if (format === 'hex' || format === 'hex6') {\n formattedString = this.toHexString();\n }\n if (format === 'hex3') {\n formattedString = this.toHexString(true);\n }\n if (format === 'hex4') {\n formattedString = this.toHex8String(true);\n }\n if (format === 'hex8') {\n formattedString = this.toHex8String();\n }\n if (format === 'name') {\n formattedString = this.toName();\n }\n if (format === 'hsl') {\n formattedString = this.toHslString();\n }\n if (format === 'hsv') {\n formattedString = this.toHsvString();\n }\n return formattedString || this.toHexString();\n };\n TinyColor.prototype.toNumber = function () {\n return (Math.round(this.r) << 16) + (Math.round(this.g) << 8) + Math.round(this.b);\n };\n TinyColor.prototype.clone = function () {\n return new TinyColor(this.toString());\n };\n /**\n * Lighten the color a given amount. Providing 100 will always return white.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.lighten = function (amount) {\n if (amount === void 0) { amount = 10; }\n var hsl = this.toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return new TinyColor(hsl);\n };\n /**\n * Brighten the color a given amount, from 0 to 100.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.brighten = function (amount) {\n if (amount === void 0) { amount = 10; }\n var rgb = this.toRgb();\n rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n return new TinyColor(rgb);\n };\n /**\n * Darken the color a given amount, from 0 to 100.\n * Providing 100 will always return black.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.darken = function (amount) {\n if (amount === void 0) { amount = 10; }\n var hsl = this.toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return new TinyColor(hsl);\n };\n /**\n * Mix the color with pure white, from 0 to 100.\n * Providing 0 will do nothing, providing 100 will always return white.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.tint = function (amount) {\n if (amount === void 0) { amount = 10; }\n return this.mix('white', amount);\n };\n /**\n * Mix the color with pure black, from 0 to 100.\n * Providing 0 will do nothing, providing 100 will always return black.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.shade = function (amount) {\n if (amount === void 0) { amount = 10; }\n return this.mix('black', amount);\n };\n /**\n * Desaturate the color a given amount, from 0 to 100.\n * Providing 100 will is the same as calling greyscale\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.desaturate = function (amount) {\n if (amount === void 0) { amount = 10; }\n var hsl = this.toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return new TinyColor(hsl);\n };\n /**\n * Saturate the color a given amount, from 0 to 100.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.saturate = function (amount) {\n if (amount === void 0) { amount = 10; }\n var hsl = this.toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return new TinyColor(hsl);\n };\n /**\n * Completely desaturates a color into greyscale.\n * Same as calling `desaturate(100)`\n */\n TinyColor.prototype.greyscale = function () {\n return this.desaturate(100);\n };\n /**\n * Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n * Values outside of this range will be wrapped into this range.\n */\n TinyColor.prototype.spin = function (amount) {\n var hsl = this.toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return new TinyColor(hsl);\n };\n /**\n * Mix the current color a given amount with another color, from 0 to 100.\n * 0 means no mixing (return current color).\n */\n TinyColor.prototype.mix = function (color, amount) {\n if (amount === void 0) { amount = 50; }\n var rgb1 = this.toRgb();\n var rgb2 = new TinyColor(color).toRgb();\n var p = amount / 100;\n var rgba = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b,\n a: (rgb2.a - rgb1.a) * p + rgb1.a,\n };\n return new TinyColor(rgba);\n };\n TinyColor.prototype.analogous = function (results, slices) {\n if (results === void 0) { results = 6; }\n if (slices === void 0) { slices = 30; }\n var hsl = this.toHsl();\n var part = 360 / slices;\n var ret = [this];\n for (hsl.h = (hsl.h - ((part * results) >> 1) + 720) % 360; --results;) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(new TinyColor(hsl));\n }\n return ret;\n };\n /**\n * taken from https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js\n */\n TinyColor.prototype.complement = function () {\n var hsl = this.toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return new TinyColor(hsl);\n };\n TinyColor.prototype.monochromatic = function (results) {\n if (results === void 0) { results = 6; }\n var hsv = this.toHsv();\n var h = hsv.h;\n var s = hsv.s;\n var v = hsv.v;\n var res = [];\n var modification = 1 / results;\n while (results--) {\n res.push(new TinyColor({ h: h, s: s, v: v }));\n v = (v + modification) % 1;\n }\n return res;\n };\n TinyColor.prototype.splitcomplement = function () {\n var hsl = this.toHsl();\n var h = hsl.h;\n return [\n this,\n new TinyColor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l }),\n new TinyColor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l }),\n ];\n };\n /**\n * Compute how the color would appear on a background\n */\n TinyColor.prototype.onBackground = function (background) {\n var fg = this.toRgb();\n var bg = new TinyColor(background).toRgb();\n var alpha = fg.a + bg.a * (1 - fg.a);\n return new TinyColor({\n r: (fg.r * fg.a + bg.r * bg.a * (1 - fg.a)) / alpha,\n g: (fg.g * fg.a + bg.g * bg.a * (1 - fg.a)) / alpha,\n b: (fg.b * fg.a + bg.b * bg.a * (1 - fg.a)) / alpha,\n a: alpha,\n });\n };\n /**\n * Alias for `polyad(3)`\n */\n TinyColor.prototype.triad = function () {\n return this.polyad(3);\n };\n /**\n * Alias for `polyad(4)`\n */\n TinyColor.prototype.tetrad = function () {\n return this.polyad(4);\n };\n /**\n * Get polyad colors, like (for 1, 2, 3, 4, 5, 6, 7, 8, etc...)\n * monad, dyad, triad, tetrad, pentad, hexad, heptad, octad, etc...\n */\n TinyColor.prototype.polyad = function (n) {\n var hsl = this.toHsl();\n var h = hsl.h;\n var result = [this];\n var increment = 360 / n;\n for (var i = 1; i < n; i++) {\n result.push(new TinyColor({ h: (h + i * increment) % 360, s: hsl.s, l: hsl.l }));\n }\n return result;\n };\n /**\n * compare color vs current color\n */\n TinyColor.prototype.equals = function (color) {\n return this.toRgbString() === new TinyColor(color).toRgbString();\n };\n return TinyColor;\n}());\nexport { TinyColor };\n// kept for backwards compatability with v1\nexport function tinycolor(color, opts) {\n if (color === void 0) { color = ''; }\n if (opts === void 0) { opts = {}; }\n return new TinyColor(color, opts);\n}\n","/**\n * Take input from [0, n] and return it as [0, 1]\n * @hidden\n */\nexport function bound01(n, max) {\n if (isOnePointZero(n)) {\n n = '100%';\n }\n var isPercent = isPercentage(n);\n n = max === 360 ? n : Math.min(max, Math.max(0, parseFloat(n)));\n // Automatically convert percentage into number\n if (isPercent) {\n n = parseInt(String(n * max), 10) / 100;\n }\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n // Convert into [0, 1] range if it isn't already\n if (max === 360) {\n // If n is a hue given in degrees,\n // wrap around out-of-range values into [0, 360] range\n // then convert into [0, 1].\n n = (n < 0 ? (n % max) + max : n % max) / parseFloat(String(max));\n }\n else {\n // If n not a hue given in degrees\n // Convert into [0, 1] range if it isn't already.\n n = (n % max) / parseFloat(String(max));\n }\n return n;\n}\n/**\n * Force a number between 0 and 1\n * @hidden\n */\nexport function clamp01(val) {\n return Math.min(1, Math.max(0, val));\n}\n/**\n * Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n * \n * @hidden\n */\nexport function isOnePointZero(n) {\n return typeof n === 'string' && n.indexOf('.') !== -1 && parseFloat(n) === 1;\n}\n/**\n * Check to see if string passed in is a percentage\n * @hidden\n */\nexport function isPercentage(n) {\n return typeof n === 'string' && n.indexOf('%') !== -1;\n}\n/**\n * Return a valid alpha value [0,1] with all invalid values being set to 1\n * @hidden\n */\nexport function boundAlpha(a) {\n a = parseFloat(a);\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n return a;\n}\n/**\n * Replace a decimal with it's percentage value\n * @hidden\n */\nexport function convertToPercentage(n) {\n if (n <= 1) {\n return \"\".concat(Number(n) * 100, \"%\");\n }\n return n;\n}\n/**\n * Force a hex value to have 2 characters\n * @hidden\n */\nexport function pad2(c) {\n return c.length === 1 ? '0' + c : String(c);\n}\n","var __spreadArray = (this && this.__spreadArray) || function (to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n};\r\nvar __defProp = Object.defineProperty;\r\nvar __defProps = Object.defineProperties;\r\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\r\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\r\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\r\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\r\nvar __defNormalProp = function (obj, key, value) { return key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value: value }) : obj[key] = value; };\r\nvar __spreadValues = function (a, b) {\r\n for (var prop in b || (b = {}))\r\n if (__hasOwnProp.call(b, prop))\r\n __defNormalProp(a, prop, b[prop]);\r\n if (__getOwnPropSymbols)\r\n for (var _i = 0, _c = __getOwnPropSymbols(b); _i < _c.length; _i++) {\r\n var prop = _c[_i];\r\n if (__propIsEnum.call(b, prop))\r\n __defNormalProp(a, prop, b[prop]);\r\n }\r\n return a;\r\n};\r\nvar __spreadProps = function (a, b) { return __defProps(a, __getOwnPropDescs(b)); };\r\n// src/query/react/index.ts\r\nimport { coreModule, buildCreateApi } from \"@reduxjs/toolkit/query\";\r\n// src/query/react/buildHooks.ts\r\nimport { createSelector } from \"@reduxjs/toolkit\";\r\nimport { useCallback, useDebugValue, useEffect as useEffect3, useLayoutEffect, useMemo as useMemo2, useRef as useRef3, useState } from \"react\";\r\nimport { QueryStatus, skipToken } from \"@reduxjs/toolkit/query\";\r\nimport { shallowEqual as shallowEqual2 } from \"react-redux\";\r\n// src/query/react/useSerializedStableValue.ts\r\nimport { useEffect, useRef, useMemo } from \"react\";\r\nfunction useStableQueryArgs(queryArgs, serialize, endpointDefinition, endpointName) {\r\n var incoming = useMemo(function () { return ({\r\n queryArgs: queryArgs,\r\n serialized: typeof queryArgs == \"object\" ? serialize({ queryArgs: queryArgs, endpointDefinition: endpointDefinition, endpointName: endpointName }) : queryArgs\r\n }); }, [queryArgs, serialize, endpointDefinition, endpointName]);\r\n var cache2 = useRef(incoming);\r\n useEffect(function () {\r\n if (cache2.current.serialized !== incoming.serialized) {\r\n cache2.current = incoming;\r\n }\r\n }, [incoming]);\r\n return cache2.current.serialized === incoming.serialized ? cache2.current.queryArgs : queryArgs;\r\n}\r\n// src/query/react/constants.ts\r\nvar UNINITIALIZED_VALUE = Symbol();\r\n// src/query/react/useShallowStableValue.ts\r\nimport { useEffect as useEffect2, useRef as useRef2 } from \"react\";\r\nimport { shallowEqual } from \"react-redux\";\r\nfunction useShallowStableValue(value) {\r\n var cache2 = useRef2(value);\r\n useEffect2(function () {\r\n if (!shallowEqual(cache2.current, value)) {\r\n cache2.current = value;\r\n }\r\n }, [value]);\r\n return shallowEqual(cache2.current, value) ? cache2.current : value;\r\n}\r\n// src/query/defaultSerializeQueryArgs.ts\r\nimport { isPlainObject } from \"@reduxjs/toolkit\";\r\nvar cache = WeakMap ? new WeakMap() : void 0;\r\nvar defaultSerializeQueryArgs = function (_c) {\r\n var endpointName = _c.endpointName, queryArgs = _c.queryArgs;\r\n var serialized = \"\";\r\n var cached = cache == null ? void 0 : cache.get(queryArgs);\r\n if (typeof cached === \"string\") {\r\n serialized = cached;\r\n }\r\n else {\r\n var stringified = JSON.stringify(queryArgs, function (key, value) { return isPlainObject(value) ? Object.keys(value).sort().reduce(function (acc, key2) {\r\n acc[key2] = value[key2];\r\n return acc;\r\n }, {}) : value; });\r\n if (isPlainObject(queryArgs)) {\r\n cache == null ? void 0 : cache.set(queryArgs, stringified);\r\n }\r\n serialized = stringified;\r\n }\r\n return endpointName + \"(\" + serialized + \")\";\r\n};\r\n// src/query/react/buildHooks.ts\r\nvar useIsomorphicLayoutEffect = typeof window !== \"undefined\" && !!window.document && !!window.document.createElement ? useLayoutEffect : useEffect3;\r\nvar defaultMutationStateSelector = function (x) { return x; };\r\nvar noPendingQueryStateSelector = function (selected) {\r\n if (selected.isUninitialized) {\r\n return __spreadProps(__spreadValues({}, selected), {\r\n isUninitialized: false,\r\n isFetching: true,\r\n isLoading: selected.data !== void 0 ? false : true,\r\n status: QueryStatus.pending\r\n });\r\n }\r\n return selected;\r\n};\r\nfunction buildHooks(_c) {\r\n var api = _c.api, _d = _c.moduleOptions, batch = _d.batch, useDispatch = _d.useDispatch, useSelector = _d.useSelector, useStore = _d.useStore, unstable__sideEffectsInRender = _d.unstable__sideEffectsInRender, serializeQueryArgs = _c.serializeQueryArgs, context = _c.context;\r\n var usePossiblyImmediateEffect = unstable__sideEffectsInRender ? function (cb) { return cb(); } : useEffect3;\r\n return { buildQueryHooks: buildQueryHooks, buildMutationHook: buildMutationHook, usePrefetch: usePrefetch };\r\n function queryStatePreSelector(currentState, lastResult, queryArgs) {\r\n if ((lastResult == null ? void 0 : lastResult.endpointName) && currentState.isUninitialized) {\r\n var endpointName = lastResult.endpointName;\r\n var endpointDefinition = context.endpointDefinitions[endpointName];\r\n if (serializeQueryArgs({\r\n queryArgs: lastResult.originalArgs,\r\n endpointDefinition: endpointDefinition,\r\n endpointName: endpointName\r\n }) === serializeQueryArgs({\r\n queryArgs: queryArgs,\r\n endpointDefinition: endpointDefinition,\r\n endpointName: endpointName\r\n }))\r\n lastResult = void 0;\r\n }\r\n var data = currentState.isSuccess ? currentState.data : lastResult == null ? void 0 : lastResult.data;\r\n if (data === void 0)\r\n data = currentState.data;\r\n var hasData = data !== void 0;\r\n var isFetching = currentState.isLoading;\r\n var isLoading = !hasData && isFetching;\r\n var isSuccess = currentState.isSuccess || isFetching && hasData;\r\n return __spreadProps(__spreadValues({}, currentState), {\r\n data: data,\r\n currentData: currentState.data,\r\n isFetching: isFetching,\r\n isLoading: isLoading,\r\n isSuccess: isSuccess\r\n });\r\n }\r\n function usePrefetch(endpointName, defaultOptions) {\r\n var dispatch = useDispatch();\r\n var stableDefaultOptions = useShallowStableValue(defaultOptions);\r\n return useCallback(function (arg, options) { return dispatch(api.util.prefetch(endpointName, arg, __spreadValues(__spreadValues({}, stableDefaultOptions), options))); }, [endpointName, dispatch, stableDefaultOptions]);\r\n }\r\n function buildQueryHooks(name) {\r\n var useQuerySubscription = function (arg, _c) {\r\n var _d = _c === void 0 ? {} : _c, refetchOnReconnect = _d.refetchOnReconnect, refetchOnFocus = _d.refetchOnFocus, refetchOnMountOrArgChange = _d.refetchOnMountOrArgChange, _e = _d.skip, skip = _e === void 0 ? false : _e, _f = _d.pollingInterval, pollingInterval = _f === void 0 ? 0 : _f;\r\n var initiate = api.endpoints[name].initiate;\r\n var dispatch = useDispatch();\r\n var stableArg = useStableQueryArgs(skip ? skipToken : arg, defaultSerializeQueryArgs, context.endpointDefinitions[name], name);\r\n var stableSubscriptionOptions = useShallowStableValue({\r\n refetchOnReconnect: refetchOnReconnect,\r\n refetchOnFocus: refetchOnFocus,\r\n pollingInterval: pollingInterval\r\n });\r\n var lastRenderHadSubscription = useRef3(false);\r\n var promiseRef = useRef3();\r\n var _g = promiseRef.current || {}, queryCacheKey = _g.queryCacheKey, requestId = _g.requestId;\r\n var currentRenderHasSubscription = false;\r\n if (queryCacheKey && requestId) {\r\n var returnedValue = dispatch(api.internalActions.internal_probeSubscription({\r\n queryCacheKey: queryCacheKey,\r\n requestId: requestId\r\n }));\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (typeof returnedValue !== \"boolean\") {\r\n throw new Error(\"Warning: Middleware for RTK-Query API at reducerPath \\\"\" + api.reducerPath + \"\\\" has not been added to the store.\\n You must add the middleware for RTK-Query to function correctly!\");\r\n }\r\n }\r\n currentRenderHasSubscription = !!returnedValue;\r\n }\r\n var subscriptionRemoved = !currentRenderHasSubscription && lastRenderHadSubscription.current;\r\n usePossiblyImmediateEffect(function () {\r\n lastRenderHadSubscription.current = currentRenderHasSubscription;\r\n });\r\n usePossiblyImmediateEffect(function () {\r\n if (subscriptionRemoved) {\r\n promiseRef.current = void 0;\r\n }\r\n }, [subscriptionRemoved]);\r\n usePossiblyImmediateEffect(function () {\r\n var _a;\r\n var lastPromise = promiseRef.current;\r\n if (typeof process !== \"undefined\" && process.env.NODE_ENV === \"removeMeOnCompilation\") {\r\n console.log(subscriptionRemoved);\r\n }\r\n if (stableArg === skipToken) {\r\n lastPromise == null ? void 0 : lastPromise.unsubscribe();\r\n promiseRef.current = void 0;\r\n return;\r\n }\r\n var lastSubscriptionOptions = (_a = promiseRef.current) == null ? void 0 : _a.subscriptionOptions;\r\n if (!lastPromise || lastPromise.arg !== stableArg) {\r\n lastPromise == null ? void 0 : lastPromise.unsubscribe();\r\n var promise = dispatch(initiate(stableArg, {\r\n subscriptionOptions: stableSubscriptionOptions,\r\n forceRefetch: refetchOnMountOrArgChange\r\n }));\r\n promiseRef.current = promise;\r\n }\r\n else if (stableSubscriptionOptions !== lastSubscriptionOptions) {\r\n lastPromise.updateSubscriptionOptions(stableSubscriptionOptions);\r\n }\r\n }, [\r\n dispatch,\r\n initiate,\r\n refetchOnMountOrArgChange,\r\n stableArg,\r\n stableSubscriptionOptions,\r\n subscriptionRemoved\r\n ]);\r\n useEffect3(function () {\r\n return function () {\r\n var _a;\r\n (_a = promiseRef.current) == null ? void 0 : _a.unsubscribe();\r\n promiseRef.current = void 0;\r\n };\r\n }, []);\r\n return useMemo2(function () { return ({\r\n refetch: function () {\r\n var _a;\r\n if (!promiseRef.current)\r\n throw new Error(\"Cannot refetch a query that has not been started yet.\");\r\n return (_a = promiseRef.current) == null ? void 0 : _a.refetch();\r\n }\r\n }); }, []);\r\n };\r\n var useLazyQuerySubscription = function (_c) {\r\n var _d = _c === void 0 ? {} : _c, refetchOnReconnect = _d.refetchOnReconnect, refetchOnFocus = _d.refetchOnFocus, _e = _d.pollingInterval, pollingInterval = _e === void 0 ? 0 : _e;\r\n var initiate = api.endpoints[name].initiate;\r\n var dispatch = useDispatch();\r\n var _f = useState(UNINITIALIZED_VALUE), arg = _f[0], setArg = _f[1];\r\n var promiseRef = useRef3();\r\n var stableSubscriptionOptions = useShallowStableValue({\r\n refetchOnReconnect: refetchOnReconnect,\r\n refetchOnFocus: refetchOnFocus,\r\n pollingInterval: pollingInterval\r\n });\r\n usePossiblyImmediateEffect(function () {\r\n var _a, _b;\r\n var lastSubscriptionOptions = (_a = promiseRef.current) == null ? void 0 : _a.subscriptionOptions;\r\n if (stableSubscriptionOptions !== lastSubscriptionOptions) {\r\n (_b = promiseRef.current) == null ? void 0 : _b.updateSubscriptionOptions(stableSubscriptionOptions);\r\n }\r\n }, [stableSubscriptionOptions]);\r\n var subscriptionOptionsRef = useRef3(stableSubscriptionOptions);\r\n usePossiblyImmediateEffect(function () {\r\n subscriptionOptionsRef.current = stableSubscriptionOptions;\r\n }, [stableSubscriptionOptions]);\r\n var trigger = useCallback(function (arg2, preferCacheValue) {\r\n if (preferCacheValue === void 0) { preferCacheValue = false; }\r\n var promise;\r\n batch(function () {\r\n var _a;\r\n (_a = promiseRef.current) == null ? void 0 : _a.unsubscribe();\r\n promiseRef.current = promise = dispatch(initiate(arg2, {\r\n subscriptionOptions: subscriptionOptionsRef.current,\r\n forceRefetch: !preferCacheValue\r\n }));\r\n setArg(arg2);\r\n });\r\n return promise;\r\n }, [dispatch, initiate]);\r\n useEffect3(function () {\r\n return function () {\r\n var _a;\r\n (_a = promiseRef == null ? void 0 : promiseRef.current) == null ? void 0 : _a.unsubscribe();\r\n };\r\n }, []);\r\n useEffect3(function () {\r\n if (arg !== UNINITIALIZED_VALUE && !promiseRef.current) {\r\n trigger(arg, true);\r\n }\r\n }, [arg, trigger]);\r\n return useMemo2(function () { return [trigger, arg]; }, [trigger, arg]);\r\n };\r\n var useQueryState = function (arg, _c) {\r\n var _d = _c === void 0 ? {} : _c, _e = _d.skip, skip = _e === void 0 ? false : _e, selectFromResult = _d.selectFromResult;\r\n var select = api.endpoints[name].select;\r\n var stableArg = useStableQueryArgs(skip ? skipToken : arg, serializeQueryArgs, context.endpointDefinitions[name], name);\r\n var lastValue = useRef3();\r\n var selectDefaultResult = useMemo2(function () { return createSelector([\r\n select(stableArg),\r\n function (_, lastResult) { return lastResult; },\r\n function (_) { return stableArg; }\r\n ], queryStatePreSelector); }, [select, stableArg]);\r\n var querySelector = useMemo2(function () { return selectFromResult ? createSelector([selectDefaultResult], selectFromResult) : selectDefaultResult; }, [selectDefaultResult, selectFromResult]);\r\n var currentState = useSelector(function (state) { return querySelector(state, lastValue.current); }, shallowEqual2);\r\n var store = useStore();\r\n var newLastValue = selectDefaultResult(store.getState(), lastValue.current);\r\n useIsomorphicLayoutEffect(function () {\r\n lastValue.current = newLastValue;\r\n }, [newLastValue]);\r\n return currentState;\r\n };\r\n return {\r\n useQueryState: useQueryState,\r\n useQuerySubscription: useQuerySubscription,\r\n useLazyQuerySubscription: useLazyQuerySubscription,\r\n useLazyQuery: function (options) {\r\n var _c = useLazyQuerySubscription(options), trigger = _c[0], arg = _c[1];\r\n var queryStateResults = useQueryState(arg, __spreadProps(__spreadValues({}, options), {\r\n skip: arg === UNINITIALIZED_VALUE\r\n }));\r\n var info = useMemo2(function () { return ({ lastArg: arg }); }, [arg]);\r\n return useMemo2(function () { return [trigger, queryStateResults, info]; }, [trigger, queryStateResults, info]);\r\n },\r\n useQuery: function (arg, options) {\r\n var querySubscriptionResults = useQuerySubscription(arg, options);\r\n var queryStateResults = useQueryState(arg, __spreadValues({\r\n selectFromResult: arg === skipToken || (options == null ? void 0 : options.skip) ? void 0 : noPendingQueryStateSelector\r\n }, options));\r\n var data = queryStateResults.data, status = queryStateResults.status, isLoading = queryStateResults.isLoading, isSuccess = queryStateResults.isSuccess, isError = queryStateResults.isError, error = queryStateResults.error;\r\n useDebugValue({ data: data, status: status, isLoading: isLoading, isSuccess: isSuccess, isError: isError, error: error });\r\n return useMemo2(function () { return __spreadValues(__spreadValues({}, queryStateResults), querySubscriptionResults); }, [queryStateResults, querySubscriptionResults]);\r\n }\r\n };\r\n }\r\n function buildMutationHook(name) {\r\n return function (_c) {\r\n var _d = _c === void 0 ? {} : _c, _e = _d.selectFromResult, selectFromResult = _e === void 0 ? defaultMutationStateSelector : _e, fixedCacheKey = _d.fixedCacheKey;\r\n var _f = api.endpoints[name], select = _f.select, initiate = _f.initiate;\r\n var dispatch = useDispatch();\r\n var _g = useState(), promise = _g[0], setPromise = _g[1];\r\n useEffect3(function () { return function () {\r\n if (!(promise == null ? void 0 : promise.arg.fixedCacheKey)) {\r\n promise == null ? void 0 : promise.reset();\r\n }\r\n }; }, [promise]);\r\n var triggerMutation = useCallback(function (arg) {\r\n var promise2 = dispatch(initiate(arg, { fixedCacheKey: fixedCacheKey }));\r\n setPromise(promise2);\r\n return promise2;\r\n }, [dispatch, initiate, fixedCacheKey]);\r\n var requestId = (promise || {}).requestId;\r\n var mutationSelector = useMemo2(function () { return createSelector([select({ fixedCacheKey: fixedCacheKey, requestId: promise == null ? void 0 : promise.requestId })], selectFromResult); }, [select, promise, selectFromResult, fixedCacheKey]);\r\n var currentState = useSelector(mutationSelector, shallowEqual2);\r\n var originalArgs = fixedCacheKey == null ? promise == null ? void 0 : promise.arg.originalArgs : void 0;\r\n var reset = useCallback(function () {\r\n batch(function () {\r\n if (promise) {\r\n setPromise(void 0);\r\n }\r\n if (fixedCacheKey) {\r\n dispatch(api.internalActions.removeMutationResult({\r\n requestId: requestId,\r\n fixedCacheKey: fixedCacheKey\r\n }));\r\n }\r\n });\r\n }, [dispatch, fixedCacheKey, promise, requestId]);\r\n var endpointName = currentState.endpointName, data = currentState.data, status = currentState.status, isLoading = currentState.isLoading, isSuccess = currentState.isSuccess, isError = currentState.isError, error = currentState.error;\r\n useDebugValue({\r\n endpointName: endpointName,\r\n data: data,\r\n status: status,\r\n isLoading: isLoading,\r\n isSuccess: isSuccess,\r\n isError: isError,\r\n error: error\r\n });\r\n var finalState = useMemo2(function () { return __spreadProps(__spreadValues({}, currentState), { originalArgs: originalArgs, reset: reset }); }, [currentState, originalArgs, reset]);\r\n return useMemo2(function () { return [triggerMutation, finalState]; }, [triggerMutation, finalState]);\r\n };\r\n }\r\n}\r\n// src/query/endpointDefinitions.ts\r\nvar DefinitionType;\r\n(function (DefinitionType2) {\r\n DefinitionType2[\"query\"] = \"query\";\r\n DefinitionType2[\"mutation\"] = \"mutation\";\r\n})(DefinitionType || (DefinitionType = {}));\r\nfunction isQueryDefinition(e) {\r\n return e.type === DefinitionType.query;\r\n}\r\nfunction isMutationDefinition(e) {\r\n return e.type === DefinitionType.mutation;\r\n}\r\n// src/query/utils/capitalize.ts\r\nfunction capitalize(str) {\r\n return str.replace(str[0], str[0].toUpperCase());\r\n}\r\n// src/query/tsHelpers.ts\r\nfunction safeAssign(target) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n Object.assign.apply(Object, __spreadArray([target], args));\r\n}\r\n// src/query/react/module.ts\r\nimport { useDispatch as rrUseDispatch, useSelector as rrUseSelector, useStore as rrUseStore, batch as rrBatch } from \"react-redux\";\r\nvar reactHooksModuleName = /* @__PURE__ */ Symbol();\r\nvar reactHooksModule = function (_c) {\r\n var _d = _c === void 0 ? {} : _c, _e = _d.batch, batch = _e === void 0 ? rrBatch : _e, _f = _d.useDispatch, useDispatch = _f === void 0 ? rrUseDispatch : _f, _g = _d.useSelector, useSelector = _g === void 0 ? rrUseSelector : _g, _h = _d.useStore, useStore = _h === void 0 ? rrUseStore : _h, _j = _d.unstable__sideEffectsInRender, unstable__sideEffectsInRender = _j === void 0 ? false : _j;\r\n return ({\r\n name: reactHooksModuleName,\r\n init: function (api, _c, context) {\r\n var serializeQueryArgs = _c.serializeQueryArgs;\r\n var anyApi = api;\r\n var _d = buildHooks({\r\n api: api,\r\n moduleOptions: {\r\n batch: batch,\r\n useDispatch: useDispatch,\r\n useSelector: useSelector,\r\n useStore: useStore,\r\n unstable__sideEffectsInRender: unstable__sideEffectsInRender\r\n },\r\n serializeQueryArgs: serializeQueryArgs,\r\n context: context\r\n }), buildQueryHooks = _d.buildQueryHooks, buildMutationHook = _d.buildMutationHook, usePrefetch = _d.usePrefetch;\r\n safeAssign(anyApi, { usePrefetch: usePrefetch });\r\n safeAssign(context, { batch: batch });\r\n return {\r\n injectEndpoint: function (endpointName, definition) {\r\n if (isQueryDefinition(definition)) {\r\n var _c = buildQueryHooks(endpointName), useQuery = _c.useQuery, useLazyQuery = _c.useLazyQuery, useLazyQuerySubscription = _c.useLazyQuerySubscription, useQueryState = _c.useQueryState, useQuerySubscription = _c.useQuerySubscription;\r\n safeAssign(anyApi.endpoints[endpointName], {\r\n useQuery: useQuery,\r\n useLazyQuery: useLazyQuery,\r\n useLazyQuerySubscription: useLazyQuerySubscription,\r\n useQueryState: useQueryState,\r\n useQuerySubscription: useQuerySubscription\r\n });\r\n api[\"use\" + capitalize(endpointName) + \"Query\"] = useQuery;\r\n api[\"useLazy\" + capitalize(endpointName) + \"Query\"] = useLazyQuery;\r\n }\r\n else if (isMutationDefinition(definition)) {\r\n var useMutation = buildMutationHook(endpointName);\r\n safeAssign(anyApi.endpoints[endpointName], {\r\n useMutation: useMutation\r\n });\r\n api[\"use\" + capitalize(endpointName) + \"Mutation\"] = useMutation;\r\n }\r\n }\r\n };\r\n }\r\n });\r\n};\r\n// src/query/react/index.ts\r\nexport * from \"@reduxjs/toolkit/query\";\r\n// src/query/react/ApiProvider.tsx\r\nimport { configureStore } from \"@reduxjs/toolkit\";\r\nimport { useEffect as useEffect4 } from \"react\";\r\nimport React from \"react\";\r\nimport { Provider } from \"react-redux\";\r\nimport { setupListeners } from \"@reduxjs/toolkit/query\";\r\nfunction ApiProvider(props) {\r\n var store = React.useState(function () {\r\n var _c;\r\n return configureStore({\r\n reducer: (_c = {},\r\n _c[props.api.reducerPath] = props.api.reducer,\r\n _c),\r\n middleware: function (gDM) { return gDM().concat(props.api.middleware); }\r\n });\r\n })[0];\r\n useEffect4(function () { return props.setupListeners === false ? void 0 : setupListeners(store.dispatch, props.setupListeners); }, [props.setupListeners, store.dispatch]);\r\n return /* @__PURE__ */ React.createElement(Provider, {\r\n store: store,\r\n context: props.context\r\n }, props.children);\r\n}\r\n// src/query/react/index.ts\r\nvar createApi = /* @__PURE__ */ buildCreateApi(coreModule(), reactHooksModule());\r\nexport { ApiProvider, createApi, reactHooksModule };\r\n//# sourceMappingURL=rtk-query-react.esm.js.map","var __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n};\r\nvar __defProp = Object.defineProperty;\r\nvar __defProps = Object.defineProperties;\r\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\r\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\r\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\r\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\r\nvar __defNormalProp = function (obj, key, value) { return key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value: value }) : obj[key] = value; };\r\nvar __spreadValues = function (a, b) {\r\n for (var prop in b || (b = {}))\r\n if (__hasOwnProp.call(b, prop))\r\n __defNormalProp(a, prop, b[prop]);\r\n if (__getOwnPropSymbols)\r\n for (var _j = 0, _k = __getOwnPropSymbols(b); _j < _k.length; _j++) {\r\n var prop = _k[_j];\r\n if (__propIsEnum.call(b, prop))\r\n __defNormalProp(a, prop, b[prop]);\r\n }\r\n return a;\r\n};\r\nvar __spreadProps = function (a, b) { return __defProps(a, __getOwnPropDescs(b)); };\r\nvar __objRest = function (source, exclude) {\r\n var target = {};\r\n for (var prop in source)\r\n if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\r\n target[prop] = source[prop];\r\n if (source != null && __getOwnPropSymbols)\r\n for (var _j = 0, _k = __getOwnPropSymbols(source); _j < _k.length; _j++) {\r\n var prop = _k[_j];\r\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\r\n target[prop] = source[prop];\r\n }\r\n return target;\r\n};\r\nvar __async = function (__this, __arguments, generator) {\r\n return new Promise(function (resolve, reject) {\r\n var fulfilled = function (value) {\r\n try {\r\n step(generator.next(value));\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n };\r\n var rejected = function (value) {\r\n try {\r\n step(generator.throw(value));\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n };\r\n var step = function (x) { return x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); };\r\n step((generator = generator.apply(__this, __arguments)).next());\r\n });\r\n};\r\n// src/query/core/apiState.ts\r\nvar QueryStatus;\r\n(function (QueryStatus2) {\r\n QueryStatus2[\"uninitialized\"] = \"uninitialized\";\r\n QueryStatus2[\"pending\"] = \"pending\";\r\n QueryStatus2[\"fulfilled\"] = \"fulfilled\";\r\n QueryStatus2[\"rejected\"] = \"rejected\";\r\n})(QueryStatus || (QueryStatus = {}));\r\nfunction getRequestStatusFlags(status) {\r\n return {\r\n status: status,\r\n isUninitialized: status === QueryStatus.uninitialized,\r\n isLoading: status === QueryStatus.pending,\r\n isSuccess: status === QueryStatus.fulfilled,\r\n isError: status === QueryStatus.rejected\r\n };\r\n}\r\n// src/query/utils/isAbsoluteUrl.ts\r\nfunction isAbsoluteUrl(url) {\r\n return new RegExp(\"(^|:)//\").test(url);\r\n}\r\n// src/query/utils/joinUrls.ts\r\nvar withoutTrailingSlash = function (url) { return url.replace(/\\/$/, \"\"); };\r\nvar withoutLeadingSlash = function (url) { return url.replace(/^\\//, \"\"); };\r\nfunction joinUrls(base, url) {\r\n if (!base) {\r\n return url;\r\n }\r\n if (!url) {\r\n return base;\r\n }\r\n if (isAbsoluteUrl(url)) {\r\n return url;\r\n }\r\n var delimiter = base.endsWith(\"/\") || !url.startsWith(\"?\") ? \"/\" : \"\";\r\n base = withoutTrailingSlash(base);\r\n url = withoutLeadingSlash(url);\r\n return \"\" + base + delimiter + url;\r\n}\r\n// src/query/utils/flatten.ts\r\nvar flatten = function (arr) { return [].concat.apply([], arr); };\r\n// src/query/utils/isOnline.ts\r\nfunction isOnline() {\r\n return typeof navigator === \"undefined\" ? true : navigator.onLine === void 0 ? true : navigator.onLine;\r\n}\r\n// src/query/utils/isDocumentVisible.ts\r\nfunction isDocumentVisible() {\r\n if (typeof document === \"undefined\") {\r\n return true;\r\n }\r\n return document.visibilityState !== \"hidden\";\r\n}\r\n// src/query/utils/copyWithStructuralSharing.ts\r\nimport { isPlainObject as _iPO } from \"@reduxjs/toolkit\";\r\nvar isPlainObject = _iPO;\r\nfunction copyWithStructuralSharing(oldObj, newObj) {\r\n if (oldObj === newObj || !(isPlainObject(oldObj) && isPlainObject(newObj) || Array.isArray(oldObj) && Array.isArray(newObj))) {\r\n return newObj;\r\n }\r\n var newKeys = Object.keys(newObj);\r\n var oldKeys = Object.keys(oldObj);\r\n var isSameObject = newKeys.length === oldKeys.length;\r\n var mergeObj = Array.isArray(newObj) ? [] : {};\r\n for (var _j = 0, newKeys_1 = newKeys; _j < newKeys_1.length; _j++) {\r\n var key = newKeys_1[_j];\r\n mergeObj[key] = copyWithStructuralSharing(oldObj[key], newObj[key]);\r\n if (isSameObject)\r\n isSameObject = oldObj[key] === mergeObj[key];\r\n }\r\n return isSameObject ? oldObj : mergeObj;\r\n}\r\n// src/query/fetchBaseQuery.ts\r\nimport { isPlainObject as isPlainObject2 } from \"@reduxjs/toolkit\";\r\nvar defaultFetchFn = function () {\r\n var args = [];\r\n for (var _j = 0; _j < arguments.length; _j++) {\r\n args[_j] = arguments[_j];\r\n }\r\n return fetch.apply(void 0, args);\r\n};\r\nvar defaultValidateStatus = function (response) { return response.status >= 200 && response.status <= 299; };\r\nvar defaultIsJsonContentType = function (headers) { return /ion\\/(vnd\\.api\\+)?json/.test(headers.get(\"content-type\") || \"\"); };\r\nfunction stripUndefined(obj) {\r\n if (!isPlainObject2(obj)) {\r\n return obj;\r\n }\r\n var copy = __spreadValues({}, obj);\r\n for (var _j = 0, _k = Object.entries(copy); _j < _k.length; _j++) {\r\n var _l = _k[_j], k = _l[0], v = _l[1];\r\n if (v === void 0)\r\n delete copy[k];\r\n }\r\n return copy;\r\n}\r\nfunction fetchBaseQuery(_a) {\r\n var _this = this;\r\n if (_a === void 0) { _a = {}; }\r\n var _b = _a, baseUrl = _b.baseUrl, _j = _b.prepareHeaders, prepareHeaders = _j === void 0 ? function (x) { return x; } : _j, _k = _b.fetchFn, fetchFn = _k === void 0 ? defaultFetchFn : _k, paramsSerializer = _b.paramsSerializer, _l = _b.isJsonContentType, isJsonContentType = _l === void 0 ? defaultIsJsonContentType : _l, _m = _b.jsonContentType, jsonContentType = _m === void 0 ? \"application/json\" : _m, jsonReplacer = _b.jsonReplacer, defaultTimeout = _b.timeout, globalValidateStatus = _b.validateStatus, baseFetchOptions = __objRest(_b, [\r\n \"baseUrl\",\r\n \"prepareHeaders\",\r\n \"fetchFn\",\r\n \"paramsSerializer\",\r\n \"isJsonContentType\",\r\n \"jsonContentType\",\r\n \"jsonReplacer\",\r\n \"timeout\",\r\n \"validateStatus\"\r\n ]);\r\n if (typeof fetch === \"undefined\" && fetchFn === defaultFetchFn) {\r\n console.warn(\"Warning: `fetch` is not available. Please supply a custom `fetchFn` property to use `fetchBaseQuery` on SSR environments.\");\r\n }\r\n return function (arg, api) { return __async(_this, null, function () {\r\n var signal, getState, extra, endpoint, forced, type, meta, _a2, url, _j, headers, _k, params, _l, responseHandler, _m, validateStatus, _o, timeout, rest, config, _p, isJsonifiable, divider, query, request, requestClone, response, timedOut, timeoutId, e_1, responseClone, resultData, responseText, handleResponseError_1, e_2;\r\n return __generator(this, function (_q) {\r\n switch (_q.label) {\r\n case 0:\r\n signal = api.signal, getState = api.getState, extra = api.extra, endpoint = api.endpoint, forced = api.forced, type = api.type;\r\n _a2 = typeof arg == \"string\" ? { url: arg } : arg, url = _a2.url, _j = _a2.headers, headers = _j === void 0 ? new Headers(baseFetchOptions.headers) : _j, _k = _a2.params, params = _k === void 0 ? void 0 : _k, _l = _a2.responseHandler, responseHandler = _l === void 0 ? \"json\" : _l, _m = _a2.validateStatus, validateStatus = _m === void 0 ? globalValidateStatus != null ? globalValidateStatus : defaultValidateStatus : _m, _o = _a2.timeout, timeout = _o === void 0 ? defaultTimeout : _o, rest = __objRest(_a2, [\r\n \"url\",\r\n \"headers\",\r\n \"params\",\r\n \"responseHandler\",\r\n \"validateStatus\",\r\n \"timeout\"\r\n ]);\r\n config = __spreadValues(__spreadProps(__spreadValues({}, baseFetchOptions), {\r\n signal: signal\r\n }), rest);\r\n headers = new Headers(stripUndefined(headers));\r\n _p = config;\r\n return [4 /*yield*/, prepareHeaders(headers, {\r\n getState: getState,\r\n extra: extra,\r\n endpoint: endpoint,\r\n forced: forced,\r\n type: type\r\n })];\r\n case 1:\r\n _p.headers = (_q.sent()) || headers;\r\n isJsonifiable = function (body) { return typeof body === \"object\" && (isPlainObject2(body) || Array.isArray(body) || typeof body.toJSON === \"function\"); };\r\n if (!config.headers.has(\"content-type\") && isJsonifiable(config.body)) {\r\n config.headers.set(\"content-type\", jsonContentType);\r\n }\r\n if (isJsonifiable(config.body) && isJsonContentType(config.headers)) {\r\n config.body = JSON.stringify(config.body, jsonReplacer);\r\n }\r\n if (params) {\r\n divider = ~url.indexOf(\"?\") ? \"&\" : \"?\";\r\n query = paramsSerializer ? paramsSerializer(params) : new URLSearchParams(stripUndefined(params));\r\n url += divider + query;\r\n }\r\n url = joinUrls(baseUrl, url);\r\n request = new Request(url, config);\r\n requestClone = request.clone();\r\n meta = { request: requestClone };\r\n timedOut = false, timeoutId = timeout && setTimeout(function () {\r\n timedOut = true;\r\n api.abort();\r\n }, timeout);\r\n _q.label = 2;\r\n case 2:\r\n _q.trys.push([2, 4, 5, 6]);\r\n return [4 /*yield*/, fetchFn(request)];\r\n case 3:\r\n response = _q.sent();\r\n return [3 /*break*/, 6];\r\n case 4:\r\n e_1 = _q.sent();\r\n return [2 /*return*/, {\r\n error: {\r\n status: timedOut ? \"TIMEOUT_ERROR\" : \"FETCH_ERROR\",\r\n error: String(e_1)\r\n },\r\n meta: meta\r\n }];\r\n case 5:\r\n if (timeoutId)\r\n clearTimeout(timeoutId);\r\n return [7 /*endfinally*/];\r\n case 6:\r\n responseClone = response.clone();\r\n meta.response = responseClone;\r\n responseText = \"\";\r\n _q.label = 7;\r\n case 7:\r\n _q.trys.push([7, 9, , 10]);\r\n return [4 /*yield*/, Promise.all([\r\n handleResponse(response, responseHandler).then(function (r) { return resultData = r; }, function (e) { return handleResponseError_1 = e; }),\r\n responseClone.text().then(function (r) { return responseText = r; }, function () {\r\n })\r\n ])];\r\n case 8:\r\n _q.sent();\r\n if (handleResponseError_1)\r\n throw handleResponseError_1;\r\n return [3 /*break*/, 10];\r\n case 9:\r\n e_2 = _q.sent();\r\n return [2 /*return*/, {\r\n error: {\r\n status: \"PARSING_ERROR\",\r\n originalStatus: response.status,\r\n data: responseText,\r\n error: String(e_2)\r\n },\r\n meta: meta\r\n }];\r\n case 10: return [2 /*return*/, validateStatus(response, resultData) ? {\r\n data: resultData,\r\n meta: meta\r\n } : {\r\n error: {\r\n status: response.status,\r\n data: resultData\r\n },\r\n meta: meta\r\n }];\r\n }\r\n });\r\n }); };\r\n function handleResponse(response, responseHandler) {\r\n return __async(this, null, function () {\r\n var text;\r\n return __generator(this, function (_j) {\r\n switch (_j.label) {\r\n case 0:\r\n if (typeof responseHandler === \"function\") {\r\n return [2 /*return*/, responseHandler(response)];\r\n }\r\n if (responseHandler === \"content-type\") {\r\n responseHandler = isJsonContentType(response.headers) ? \"json\" : \"text\";\r\n }\r\n if (!(responseHandler === \"json\")) return [3 /*break*/, 2];\r\n return [4 /*yield*/, response.text()];\r\n case 1:\r\n text = _j.sent();\r\n return [2 /*return*/, text.length ? JSON.parse(text) : null];\r\n case 2: return [2 /*return*/, response.text()];\r\n }\r\n });\r\n });\r\n }\r\n}\r\n// src/query/HandledError.ts\r\nvar HandledError = /** @class */ (function () {\r\n function HandledError(value, meta) {\r\n if (meta === void 0) { meta = void 0; }\r\n this.value = value;\r\n this.meta = meta;\r\n }\r\n return HandledError;\r\n}());\r\n// src/query/retry.ts\r\nfunction defaultBackoff(attempt, maxRetries) {\r\n if (attempt === void 0) { attempt = 0; }\r\n if (maxRetries === void 0) { maxRetries = 5; }\r\n return __async(this, null, function () {\r\n var attempts, timeout;\r\n return __generator(this, function (_j) {\r\n switch (_j.label) {\r\n case 0:\r\n attempts = Math.min(attempt, maxRetries);\r\n timeout = ~~((Math.random() + 0.4) * (300 << attempts));\r\n return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(function (res) { return resolve(res); }, timeout); })];\r\n case 1:\r\n _j.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction fail(e) {\r\n throw Object.assign(new HandledError({ error: e }), {\r\n throwImmediately: true\r\n });\r\n}\r\nvar EMPTY_OPTIONS = {};\r\nvar retryWithBackoff = function (baseQuery, defaultOptions) { return function (args, api, extraOptions) { return __async(void 0, null, function () {\r\n var possibleMaxRetries, maxRetries, defaultRetryCondition, options, retry2, result, e_3;\r\n return __generator(this, function (_j) {\r\n switch (_j.label) {\r\n case 0:\r\n possibleMaxRetries = [\r\n 5,\r\n (defaultOptions || EMPTY_OPTIONS).maxRetries,\r\n (extraOptions || EMPTY_OPTIONS).maxRetries\r\n ].filter(function (x) { return x !== void 0; });\r\n maxRetries = possibleMaxRetries.slice(-1)[0];\r\n defaultRetryCondition = function (_, __, _j) {\r\n var attempt = _j.attempt;\r\n return attempt <= maxRetries;\r\n };\r\n options = __spreadValues(__spreadValues({\r\n maxRetries: maxRetries,\r\n backoff: defaultBackoff,\r\n retryCondition: defaultRetryCondition\r\n }, defaultOptions), extraOptions);\r\n retry2 = 0;\r\n _j.label = 1;\r\n case 1:\r\n if (!true) return [3 /*break*/, 7];\r\n _j.label = 2;\r\n case 2:\r\n _j.trys.push([2, 4, , 6]);\r\n return [4 /*yield*/, baseQuery(args, api, extraOptions)];\r\n case 3:\r\n result = _j.sent();\r\n if (result.error) {\r\n throw new HandledError(result);\r\n }\r\n return [2 /*return*/, result];\r\n case 4:\r\n e_3 = _j.sent();\r\n retry2++;\r\n if (e_3.throwImmediately) {\r\n if (e_3 instanceof HandledError) {\r\n return [2 /*return*/, e_3.value];\r\n }\r\n throw e_3;\r\n }\r\n if (e_3 instanceof HandledError && !options.retryCondition(e_3.value.error, args, {\r\n attempt: retry2,\r\n baseQueryApi: api,\r\n extraOptions: extraOptions\r\n })) {\r\n return [2 /*return*/, e_3.value];\r\n }\r\n return [4 /*yield*/, options.backoff(retry2, options.maxRetries)];\r\n case 5:\r\n _j.sent();\r\n return [3 /*break*/, 6];\r\n case 6: return [3 /*break*/, 1];\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n}); }; };\r\nvar retry = /* @__PURE__ */ Object.assign(retryWithBackoff, { fail: fail });\r\n// src/query/core/setupListeners.ts\r\nimport { createAction } from \"@reduxjs/toolkit\";\r\nvar onFocus = /* @__PURE__ */ createAction(\"__rtkq/focused\");\r\nvar onFocusLost = /* @__PURE__ */ createAction(\"__rtkq/unfocused\");\r\nvar onOnline = /* @__PURE__ */ createAction(\"__rtkq/online\");\r\nvar onOffline = /* @__PURE__ */ createAction(\"__rtkq/offline\");\r\nvar initialized = false;\r\nfunction setupListeners(dispatch, customHandler) {\r\n function defaultHandler() {\r\n var handleFocus = function () { return dispatch(onFocus()); };\r\n var handleFocusLost = function () { return dispatch(onFocusLost()); };\r\n var handleOnline = function () { return dispatch(onOnline()); };\r\n var handleOffline = function () { return dispatch(onOffline()); };\r\n var handleVisibilityChange = function () {\r\n if (window.document.visibilityState === \"visible\") {\r\n handleFocus();\r\n }\r\n else {\r\n handleFocusLost();\r\n }\r\n };\r\n if (!initialized) {\r\n if (typeof window !== \"undefined\" && window.addEventListener) {\r\n window.addEventListener(\"visibilitychange\", handleVisibilityChange, false);\r\n window.addEventListener(\"focus\", handleFocus, false);\r\n window.addEventListener(\"online\", handleOnline, false);\r\n window.addEventListener(\"offline\", handleOffline, false);\r\n initialized = true;\r\n }\r\n }\r\n var unsubscribe = function () {\r\n window.removeEventListener(\"focus\", handleFocus);\r\n window.removeEventListener(\"visibilitychange\", handleVisibilityChange);\r\n window.removeEventListener(\"online\", handleOnline);\r\n window.removeEventListener(\"offline\", handleOffline);\r\n initialized = false;\r\n };\r\n return unsubscribe;\r\n }\r\n return customHandler ? customHandler(dispatch, { onFocus: onFocus, onFocusLost: onFocusLost, onOffline: onOffline, onOnline: onOnline }) : defaultHandler();\r\n}\r\n// src/query/core/buildSelectors.ts\r\nimport { createNextState as createNextState2, createSelector } from \"@reduxjs/toolkit\";\r\n// src/query/endpointDefinitions.ts\r\nvar DefinitionType;\r\n(function (DefinitionType2) {\r\n DefinitionType2[\"query\"] = \"query\";\r\n DefinitionType2[\"mutation\"] = \"mutation\";\r\n})(DefinitionType || (DefinitionType = {}));\r\nfunction isQueryDefinition(e) {\r\n return e.type === DefinitionType.query;\r\n}\r\nfunction isMutationDefinition(e) {\r\n return e.type === DefinitionType.mutation;\r\n}\r\nfunction calculateProvidedBy(description, result, error, queryArg, meta, assertTagTypes) {\r\n if (isFunction(description)) {\r\n return description(result, error, queryArg, meta).map(expandTagDescription).map(assertTagTypes);\r\n }\r\n if (Array.isArray(description)) {\r\n return description.map(expandTagDescription).map(assertTagTypes);\r\n }\r\n return [];\r\n}\r\nfunction isFunction(t) {\r\n return typeof t === \"function\";\r\n}\r\nfunction expandTagDescription(description) {\r\n return typeof description === \"string\" ? { type: description } : description;\r\n}\r\n// src/query/core/buildSlice.ts\r\nimport { combineReducers, createAction as createAction2, createSlice, isAnyOf, isFulfilled as isFulfilled2, isRejectedWithValue as isRejectedWithValue2, createNextState, prepareAutoBatched } from \"@reduxjs/toolkit\";\r\n// src/query/utils/isNotNullish.ts\r\nfunction isNotNullish(v) {\r\n return v != null;\r\n}\r\n// src/query/core/buildInitiate.ts\r\nvar forceQueryFnSymbol = Symbol(\"forceQueryFn\");\r\nvar isUpsertQuery = function (arg) { return typeof arg[forceQueryFnSymbol] === \"function\"; };\r\nfunction buildInitiate(_j) {\r\n var serializeQueryArgs = _j.serializeQueryArgs, queryThunk = _j.queryThunk, mutationThunk = _j.mutationThunk, api = _j.api, context = _j.context;\r\n var runningQueries = new Map();\r\n var runningMutations = new Map();\r\n var _k = api.internalActions, unsubscribeQueryResult = _k.unsubscribeQueryResult, removeMutationResult = _k.removeMutationResult, updateSubscriptionOptions = _k.updateSubscriptionOptions;\r\n return {\r\n buildInitiateQuery: buildInitiateQuery,\r\n buildInitiateMutation: buildInitiateMutation,\r\n getRunningQueryThunk: getRunningQueryThunk,\r\n getRunningMutationThunk: getRunningMutationThunk,\r\n getRunningQueriesThunk: getRunningQueriesThunk,\r\n getRunningMutationsThunk: getRunningMutationsThunk,\r\n getRunningOperationPromises: getRunningOperationPromises,\r\n removalWarning: removalWarning\r\n };\r\n function removalWarning() {\r\n throw new Error(\"This method had to be removed due to a conceptual bug in RTK.\\n Please see https://github.com/reduxjs/redux-toolkit/pull/2481 for details.\\n See https://redux-toolkit.js.org/rtk-query/usage/server-side-rendering for new guidance on SSR.\");\r\n }\r\n function getRunningOperationPromises() {\r\n if (typeof process !== \"undefined\" && process.env.NODE_ENV === \"development\") {\r\n removalWarning();\r\n }\r\n else {\r\n var extract = function (v) { return Array.from(v.values()).flatMap(function (queriesForStore) { return queriesForStore ? Object.values(queriesForStore) : []; }); };\r\n return __spreadArray(__spreadArray([], extract(runningQueries)), extract(runningMutations)).filter(isNotNullish);\r\n }\r\n }\r\n function getRunningQueryThunk(endpointName, queryArgs) {\r\n return function (dispatch) {\r\n var _a;\r\n var endpointDefinition = context.endpointDefinitions[endpointName];\r\n var queryCacheKey = serializeQueryArgs({\r\n queryArgs: queryArgs,\r\n endpointDefinition: endpointDefinition,\r\n endpointName: endpointName\r\n });\r\n return (_a = runningQueries.get(dispatch)) == null ? void 0 : _a[queryCacheKey];\r\n };\r\n }\r\n function getRunningMutationThunk(_endpointName, fixedCacheKeyOrRequestId) {\r\n return function (dispatch) {\r\n var _a;\r\n return (_a = runningMutations.get(dispatch)) == null ? void 0 : _a[fixedCacheKeyOrRequestId];\r\n };\r\n }\r\n function getRunningQueriesThunk() {\r\n return function (dispatch) { return Object.values(runningQueries.get(dispatch) || {}).filter(isNotNullish); };\r\n }\r\n function getRunningMutationsThunk() {\r\n return function (dispatch) { return Object.values(runningMutations.get(dispatch) || {}).filter(isNotNullish); };\r\n }\r\n function middlewareWarning(dispatch) {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (middlewareWarning.triggered)\r\n return;\r\n var registered = dispatch(api.internalActions.internal_probeSubscription({\r\n queryCacheKey: \"DOES_NOT_EXIST\",\r\n requestId: \"DUMMY_REQUEST_ID\"\r\n }));\r\n middlewareWarning.triggered = true;\r\n if (typeof registered !== \"boolean\") {\r\n throw new Error(\"Warning: Middleware for RTK-Query API at reducerPath \\\"\" + api.reducerPath + \"\\\" has not been added to the store.\\nYou must add the middleware for RTK-Query to function correctly!\");\r\n }\r\n }\r\n }\r\n function buildInitiateQuery(endpointName, endpointDefinition) {\r\n var queryAction = function (arg, _j) {\r\n var _k = _j === void 0 ? {} : _j, _l = _k.subscribe, subscribe = _l === void 0 ? true : _l, forceRefetch = _k.forceRefetch, subscriptionOptions = _k.subscriptionOptions, _m = forceQueryFnSymbol, forceQueryFn = _k[_m];\r\n return function (dispatch, getState) {\r\n var _j;\r\n var _a;\r\n var queryCacheKey = serializeQueryArgs({\r\n queryArgs: arg,\r\n endpointDefinition: endpointDefinition,\r\n endpointName: endpointName\r\n });\r\n var thunk = queryThunk((_j = {\r\n type: \"query\",\r\n subscribe: subscribe,\r\n forceRefetch: forceRefetch,\r\n subscriptionOptions: subscriptionOptions,\r\n endpointName: endpointName,\r\n originalArgs: arg,\r\n queryCacheKey: queryCacheKey\r\n },\r\n _j[forceQueryFnSymbol] = forceQueryFn,\r\n _j));\r\n var selector = api.endpoints[endpointName].select(arg);\r\n var thunkResult = dispatch(thunk);\r\n var stateAfter = selector(getState());\r\n middlewareWarning(dispatch);\r\n var requestId = thunkResult.requestId, abort = thunkResult.abort;\r\n var skippedSynchronously = stateAfter.requestId !== requestId;\r\n var runningQuery = (_a = runningQueries.get(dispatch)) == null ? void 0 : _a[queryCacheKey];\r\n var selectFromState = function () { return selector(getState()); };\r\n var statePromise = Object.assign(forceQueryFn ? thunkResult.then(selectFromState) : skippedSynchronously && !runningQuery ? Promise.resolve(stateAfter) : Promise.all([runningQuery, thunkResult]).then(selectFromState), {\r\n arg: arg,\r\n requestId: requestId,\r\n subscriptionOptions: subscriptionOptions,\r\n queryCacheKey: queryCacheKey,\r\n abort: abort,\r\n unwrap: function () {\r\n return __async(this, null, function () {\r\n var result;\r\n return __generator(this, function (_j) {\r\n switch (_j.label) {\r\n case 0: return [4 /*yield*/, statePromise];\r\n case 1:\r\n result = _j.sent();\r\n if (result.isError) {\r\n throw result.error;\r\n }\r\n return [2 /*return*/, result.data];\r\n }\r\n });\r\n });\r\n },\r\n refetch: function () { return dispatch(queryAction(arg, { subscribe: false, forceRefetch: true })); },\r\n unsubscribe: function () {\r\n if (subscribe)\r\n dispatch(unsubscribeQueryResult({\r\n queryCacheKey: queryCacheKey,\r\n requestId: requestId\r\n }));\r\n },\r\n updateSubscriptionOptions: function (options) {\r\n statePromise.subscriptionOptions = options;\r\n dispatch(updateSubscriptionOptions({\r\n endpointName: endpointName,\r\n requestId: requestId,\r\n queryCacheKey: queryCacheKey,\r\n options: options\r\n }));\r\n }\r\n });\r\n if (!runningQuery && !skippedSynchronously && !forceQueryFn) {\r\n var running_1 = runningQueries.get(dispatch) || {};\r\n running_1[queryCacheKey] = statePromise;\r\n runningQueries.set(dispatch, running_1);\r\n statePromise.then(function () {\r\n delete running_1[queryCacheKey];\r\n if (!Object.keys(running_1).length) {\r\n runningQueries.delete(dispatch);\r\n }\r\n });\r\n }\r\n return statePromise;\r\n };\r\n };\r\n return queryAction;\r\n }\r\n function buildInitiateMutation(endpointName) {\r\n return function (arg, _j) {\r\n var _k = _j === void 0 ? {} : _j, _l = _k.track, track = _l === void 0 ? true : _l, fixedCacheKey = _k.fixedCacheKey;\r\n return function (dispatch, getState) {\r\n var thunk = mutationThunk({\r\n type: \"mutation\",\r\n endpointName: endpointName,\r\n originalArgs: arg,\r\n track: track,\r\n fixedCacheKey: fixedCacheKey\r\n });\r\n var thunkResult = dispatch(thunk);\r\n middlewareWarning(dispatch);\r\n var requestId = thunkResult.requestId, abort = thunkResult.abort, unwrap = thunkResult.unwrap;\r\n var returnValuePromise = thunkResult.unwrap().then(function (data) { return ({ data: data }); }).catch(function (error) { return ({ error: error }); });\r\n var reset = function () {\r\n dispatch(removeMutationResult({ requestId: requestId, fixedCacheKey: fixedCacheKey }));\r\n };\r\n var ret = Object.assign(returnValuePromise, {\r\n arg: thunkResult.arg,\r\n requestId: requestId,\r\n abort: abort,\r\n unwrap: unwrap,\r\n unsubscribe: reset,\r\n reset: reset\r\n });\r\n var running = runningMutations.get(dispatch) || {};\r\n runningMutations.set(dispatch, running);\r\n running[requestId] = ret;\r\n ret.then(function () {\r\n delete running[requestId];\r\n if (!Object.keys(running).length) {\r\n runningMutations.delete(dispatch);\r\n }\r\n });\r\n if (fixedCacheKey) {\r\n running[fixedCacheKey] = ret;\r\n ret.then(function () {\r\n if (running[fixedCacheKey] === ret) {\r\n delete running[fixedCacheKey];\r\n if (!Object.keys(running).length) {\r\n runningMutations.delete(dispatch);\r\n }\r\n }\r\n });\r\n }\r\n return ret;\r\n };\r\n };\r\n }\r\n}\r\n// src/query/core/buildThunks.ts\r\nimport { isAllOf, isFulfilled, isPending, isRejected, isRejectedWithValue } from \"@reduxjs/toolkit\";\r\nimport { isDraftable, produceWithPatches } from \"immer\";\r\nimport { createAsyncThunk, SHOULD_AUTOBATCH } from \"@reduxjs/toolkit\";\r\nfunction defaultTransformResponse(baseQueryReturnValue) {\r\n return baseQueryReturnValue;\r\n}\r\nfunction buildThunks(_j) {\r\n var _this = this;\r\n var reducerPath = _j.reducerPath, baseQuery = _j.baseQuery, endpointDefinitions = _j.context.endpointDefinitions, serializeQueryArgs = _j.serializeQueryArgs, api = _j.api;\r\n var patchQueryData = function (endpointName, args, patches) { return function (dispatch) {\r\n var endpointDefinition = endpointDefinitions[endpointName];\r\n dispatch(api.internalActions.queryResultPatched({\r\n queryCacheKey: serializeQueryArgs({\r\n queryArgs: args,\r\n endpointDefinition: endpointDefinition,\r\n endpointName: endpointName\r\n }),\r\n patches: patches\r\n }));\r\n }; };\r\n var updateQueryData = function (endpointName, args, updateRecipe) { return function (dispatch, getState) {\r\n var _j, _k;\r\n var currentState = api.endpoints[endpointName].select(args)(getState());\r\n var ret = {\r\n patches: [],\r\n inversePatches: [],\r\n undo: function () { return dispatch(api.util.patchQueryData(endpointName, args, ret.inversePatches)); }\r\n };\r\n if (currentState.status === QueryStatus.uninitialized) {\r\n return ret;\r\n }\r\n if (\"data\" in currentState) {\r\n if (isDraftable(currentState.data)) {\r\n var _l = produceWithPatches(currentState.data, updateRecipe), patches = _l[1], inversePatches = _l[2];\r\n (_j = ret.patches).push.apply(_j, patches);\r\n (_k = ret.inversePatches).push.apply(_k, inversePatches);\r\n }\r\n else {\r\n var value = updateRecipe(currentState.data);\r\n ret.patches.push({ op: \"replace\", path: [], value: value });\r\n ret.inversePatches.push({\r\n op: \"replace\",\r\n path: [],\r\n value: currentState.data\r\n });\r\n }\r\n }\r\n dispatch(api.util.patchQueryData(endpointName, args, ret.patches));\r\n return ret;\r\n }; };\r\n var upsertQueryData = function (endpointName, args, value) { return function (dispatch) {\r\n var _j;\r\n return dispatch(api.endpoints[endpointName].initiate(args, (_j = {\r\n subscribe: false,\r\n forceRefetch: true\r\n },\r\n _j[forceQueryFnSymbol] = function () { return ({\r\n data: value\r\n }); },\r\n _j)));\r\n }; };\r\n var executeEndpoint = function (_0, _1) { return __async(_this, [_0, _1], function (arg, _j) {\r\n var endpointDefinition, transformResponse, result, baseQueryApi_1, forceQueryFn, what, err, _k, _l, key, _m, error_1, catchedError, transformErrorResponse, _o, e_4;\r\n var _p, _q;\r\n var signal = _j.signal, abort = _j.abort, rejectWithValue = _j.rejectWithValue, fulfillWithValue = _j.fulfillWithValue, dispatch = _j.dispatch, getState = _j.getState, extra = _j.extra;\r\n return __generator(this, function (_r) {\r\n switch (_r.label) {\r\n case 0:\r\n endpointDefinition = endpointDefinitions[arg.endpointName];\r\n _r.label = 1;\r\n case 1:\r\n _r.trys.push([1, 8, , 13]);\r\n transformResponse = defaultTransformResponse;\r\n result = void 0;\r\n baseQueryApi_1 = {\r\n signal: signal,\r\n abort: abort,\r\n dispatch: dispatch,\r\n getState: getState,\r\n extra: extra,\r\n endpoint: arg.endpointName,\r\n type: arg.type,\r\n forced: arg.type === \"query\" ? isForcedQuery(arg, getState()) : void 0\r\n };\r\n forceQueryFn = arg.type === \"query\" ? arg[forceQueryFnSymbol] : void 0;\r\n if (!forceQueryFn) return [3 /*break*/, 2];\r\n result = forceQueryFn();\r\n return [3 /*break*/, 6];\r\n case 2:\r\n if (!endpointDefinition.query) return [3 /*break*/, 4];\r\n return [4 /*yield*/, baseQuery(endpointDefinition.query(arg.originalArgs), baseQueryApi_1, endpointDefinition.extraOptions)];\r\n case 3:\r\n result = _r.sent();\r\n if (endpointDefinition.transformResponse) {\r\n transformResponse = endpointDefinition.transformResponse;\r\n }\r\n return [3 /*break*/, 6];\r\n case 4: return [4 /*yield*/, endpointDefinition.queryFn(arg.originalArgs, baseQueryApi_1, endpointDefinition.extraOptions, function (arg2) { return baseQuery(arg2, baseQueryApi_1, endpointDefinition.extraOptions); })];\r\n case 5:\r\n result = _r.sent();\r\n _r.label = 6;\r\n case 6:\r\n if (typeof process !== \"undefined\" && process.env.NODE_ENV === \"development\") {\r\n what = endpointDefinition.query ? \"`baseQuery`\" : \"`queryFn`\";\r\n err = void 0;\r\n if (!result) {\r\n err = what + \" did not return anything.\";\r\n }\r\n else if (typeof result !== \"object\") {\r\n err = what + \" did not return an object.\";\r\n }\r\n else if (result.error && result.data) {\r\n err = what + \" returned an object containing both `error` and `result`.\";\r\n }\r\n else if (result.error === void 0 && result.data === void 0) {\r\n err = what + \" returned an object containing neither a valid `error` and `result`. At least one of them should not be `undefined`\";\r\n }\r\n else {\r\n for (_k = 0, _l = Object.keys(result); _k < _l.length; _k++) {\r\n key = _l[_k];\r\n if (key !== \"error\" && key !== \"data\" && key !== \"meta\") {\r\n err = \"The object returned by \" + what + \" has the unknown property \" + key + \".\";\r\n break;\r\n }\r\n }\r\n }\r\n if (err) {\r\n console.error(\"Error encountered handling the endpoint \" + arg.endpointName + \".\\n \" + err + \"\\n It needs to return an object with either the shape `{ data: }` or `{ error: }` that may contain an optional `meta` property.\\n Object returned was:\", result);\r\n }\r\n }\r\n if (result.error)\r\n throw new HandledError(result.error, result.meta);\r\n _m = fulfillWithValue;\r\n return [4 /*yield*/, transformResponse(result.data, result.meta, arg.originalArgs)];\r\n case 7: return [2 /*return*/, _m.apply(void 0, [_r.sent(), (_p = {\r\n fulfilledTimeStamp: Date.now(),\r\n baseQueryMeta: result.meta\r\n },\r\n _p[SHOULD_AUTOBATCH] = true,\r\n _p)])];\r\n case 8:\r\n error_1 = _r.sent();\r\n catchedError = error_1;\r\n if (!(catchedError instanceof HandledError)) return [3 /*break*/, 12];\r\n transformErrorResponse = defaultTransformResponse;\r\n if (endpointDefinition.query && endpointDefinition.transformErrorResponse) {\r\n transformErrorResponse = endpointDefinition.transformErrorResponse;\r\n }\r\n _r.label = 9;\r\n case 9:\r\n _r.trys.push([9, 11, , 12]);\r\n _o = rejectWithValue;\r\n return [4 /*yield*/, transformErrorResponse(catchedError.value, catchedError.meta, arg.originalArgs)];\r\n case 10: return [2 /*return*/, _o.apply(void 0, [_r.sent(), (_q = { baseQueryMeta: catchedError.meta }, _q[SHOULD_AUTOBATCH] = true, _q)])];\r\n case 11:\r\n e_4 = _r.sent();\r\n catchedError = e_4;\r\n return [3 /*break*/, 12];\r\n case 12:\r\n if (typeof process !== \"undefined\" && process.env.NODE_ENV !== \"production\") {\r\n console.error(\"An unhandled error occurred processing a request for the endpoint \\\"\" + arg.endpointName + \"\\\".\\nIn the case of an unhandled error, no tags will be \\\"provided\\\" or \\\"invalidated\\\".\", catchedError);\r\n }\r\n else {\r\n console.error(catchedError);\r\n }\r\n throw catchedError;\r\n case 13: return [2 /*return*/];\r\n }\r\n });\r\n }); };\r\n function isForcedQuery(arg, state) {\r\n var _a, _b, _c, _d;\r\n var requestState = (_b = (_a = state[reducerPath]) == null ? void 0 : _a.queries) == null ? void 0 : _b[arg.queryCacheKey];\r\n var baseFetchOnMountOrArgChange = (_c = state[reducerPath]) == null ? void 0 : _c.config.refetchOnMountOrArgChange;\r\n var fulfilledVal = requestState == null ? void 0 : requestState.fulfilledTimeStamp;\r\n var refetchVal = (_d = arg.forceRefetch) != null ? _d : arg.subscribe && baseFetchOnMountOrArgChange;\r\n if (refetchVal) {\r\n return refetchVal === true || (Number(new Date()) - Number(fulfilledVal)) / 1e3 >= refetchVal;\r\n }\r\n return false;\r\n }\r\n var queryThunk = createAsyncThunk(reducerPath + \"/executeQuery\", executeEndpoint, {\r\n getPendingMeta: function () {\r\n var _j;\r\n return _j = { startedTimeStamp: Date.now() }, _j[SHOULD_AUTOBATCH] = true, _j;\r\n },\r\n condition: function (queryThunkArgs, _j) {\r\n var getState = _j.getState;\r\n var _a, _b, _c;\r\n var state = getState();\r\n var requestState = (_b = (_a = state[reducerPath]) == null ? void 0 : _a.queries) == null ? void 0 : _b[queryThunkArgs.queryCacheKey];\r\n var fulfilledVal = requestState == null ? void 0 : requestState.fulfilledTimeStamp;\r\n var currentArg = queryThunkArgs.originalArgs;\r\n var previousArg = requestState == null ? void 0 : requestState.originalArgs;\r\n var endpointDefinition = endpointDefinitions[queryThunkArgs.endpointName];\r\n if (isUpsertQuery(queryThunkArgs)) {\r\n return true;\r\n }\r\n if ((requestState == null ? void 0 : requestState.status) === \"pending\") {\r\n return false;\r\n }\r\n if (isForcedQuery(queryThunkArgs, state)) {\r\n return true;\r\n }\r\n if (isQueryDefinition(endpointDefinition) && ((_c = endpointDefinition == null ? void 0 : endpointDefinition.forceRefetch) == null ? void 0 : _c.call(endpointDefinition, {\r\n currentArg: currentArg,\r\n previousArg: previousArg,\r\n endpointState: requestState,\r\n state: state\r\n }))) {\r\n return true;\r\n }\r\n if (fulfilledVal) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n dispatchConditionRejection: true\r\n });\r\n var mutationThunk = createAsyncThunk(reducerPath + \"/executeMutation\", executeEndpoint, {\r\n getPendingMeta: function () {\r\n var _j;\r\n return _j = { startedTimeStamp: Date.now() }, _j[SHOULD_AUTOBATCH] = true, _j;\r\n }\r\n });\r\n var hasTheForce = function (options) { return \"force\" in options; };\r\n var hasMaxAge = function (options) { return \"ifOlderThan\" in options; };\r\n var prefetch = function (endpointName, arg, options) { return function (dispatch, getState) {\r\n var force = hasTheForce(options) && options.force;\r\n var maxAge = hasMaxAge(options) && options.ifOlderThan;\r\n var queryAction = function (force2) {\r\n if (force2 === void 0) { force2 = true; }\r\n return api.endpoints[endpointName].initiate(arg, { forceRefetch: force2 });\r\n };\r\n var latestStateValue = api.endpoints[endpointName].select(arg)(getState());\r\n if (force) {\r\n dispatch(queryAction());\r\n }\r\n else if (maxAge) {\r\n var lastFulfilledTs = latestStateValue == null ? void 0 : latestStateValue.fulfilledTimeStamp;\r\n if (!lastFulfilledTs) {\r\n dispatch(queryAction());\r\n return;\r\n }\r\n var shouldRetrigger = (Number(new Date()) - Number(new Date(lastFulfilledTs))) / 1e3 >= maxAge;\r\n if (shouldRetrigger) {\r\n dispatch(queryAction());\r\n }\r\n }\r\n else {\r\n dispatch(queryAction(false));\r\n }\r\n }; };\r\n function matchesEndpoint(endpointName) {\r\n return function (action) {\r\n var _a, _b;\r\n return ((_b = (_a = action == null ? void 0 : action.meta) == null ? void 0 : _a.arg) == null ? void 0 : _b.endpointName) === endpointName;\r\n };\r\n }\r\n function buildMatchThunkActions(thunk, endpointName) {\r\n return {\r\n matchPending: isAllOf(isPending(thunk), matchesEndpoint(endpointName)),\r\n matchFulfilled: isAllOf(isFulfilled(thunk), matchesEndpoint(endpointName)),\r\n matchRejected: isAllOf(isRejected(thunk), matchesEndpoint(endpointName))\r\n };\r\n }\r\n return {\r\n queryThunk: queryThunk,\r\n mutationThunk: mutationThunk,\r\n prefetch: prefetch,\r\n updateQueryData: updateQueryData,\r\n upsertQueryData: upsertQueryData,\r\n patchQueryData: patchQueryData,\r\n buildMatchThunkActions: buildMatchThunkActions\r\n };\r\n}\r\nfunction calculateProvidedByThunk(action, type, endpointDefinitions, assertTagType) {\r\n return calculateProvidedBy(endpointDefinitions[action.meta.arg.endpointName][type], isFulfilled(action) ? action.payload : void 0, isRejectedWithValue(action) ? action.payload : void 0, action.meta.arg.originalArgs, \"baseQueryMeta\" in action.meta ? action.meta.baseQueryMeta : void 0, assertTagType);\r\n}\r\n// src/query/core/buildSlice.ts\r\nimport { applyPatches } from \"immer\";\r\nfunction updateQuerySubstateIfExists(state, queryCacheKey, update) {\r\n var substate = state[queryCacheKey];\r\n if (substate) {\r\n update(substate);\r\n }\r\n}\r\nfunction getMutationCacheKey(id) {\r\n var _a;\r\n return (_a = \"arg\" in id ? id.arg.fixedCacheKey : id.fixedCacheKey) != null ? _a : id.requestId;\r\n}\r\nfunction updateMutationSubstateIfExists(state, id, update) {\r\n var substate = state[getMutationCacheKey(id)];\r\n if (substate) {\r\n update(substate);\r\n }\r\n}\r\nvar initialState = {};\r\nfunction buildSlice(_j) {\r\n var reducerPath = _j.reducerPath, queryThunk = _j.queryThunk, mutationThunk = _j.mutationThunk, _k = _j.context, definitions = _k.endpointDefinitions, apiUid = _k.apiUid, extractRehydrationInfo = _k.extractRehydrationInfo, hasRehydrationInfo = _k.hasRehydrationInfo, assertTagType = _j.assertTagType, config = _j.config;\r\n var resetApiState = createAction2(reducerPath + \"/resetApiState\");\r\n var querySlice = createSlice({\r\n name: reducerPath + \"/queries\",\r\n initialState: initialState,\r\n reducers: {\r\n removeQueryResult: {\r\n reducer: function (draft, _j) {\r\n var queryCacheKey = _j.payload.queryCacheKey;\r\n delete draft[queryCacheKey];\r\n },\r\n prepare: prepareAutoBatched()\r\n },\r\n queryResultPatched: function (draft, _j) {\r\n var _k = _j.payload, queryCacheKey = _k.queryCacheKey, patches = _k.patches;\r\n updateQuerySubstateIfExists(draft, queryCacheKey, function (substate) {\r\n substate.data = applyPatches(substate.data, patches.concat());\r\n });\r\n }\r\n },\r\n extraReducers: function (builder) {\r\n builder.addCase(queryThunk.pending, function (draft, _j) {\r\n var meta = _j.meta, arg = _j.meta.arg;\r\n var _a, _b;\r\n var upserting = isUpsertQuery(arg);\r\n if (arg.subscribe || upserting) {\r\n (_b = draft[_a = arg.queryCacheKey]) != null ? _b : draft[_a] = {\r\n status: QueryStatus.uninitialized,\r\n endpointName: arg.endpointName\r\n };\r\n }\r\n updateQuerySubstateIfExists(draft, arg.queryCacheKey, function (substate) {\r\n substate.status = QueryStatus.pending;\r\n substate.requestId = upserting && substate.requestId ? substate.requestId : meta.requestId;\r\n if (arg.originalArgs !== void 0) {\r\n substate.originalArgs = arg.originalArgs;\r\n }\r\n substate.startedTimeStamp = meta.startedTimeStamp;\r\n });\r\n }).addCase(queryThunk.fulfilled, function (draft, _j) {\r\n var meta = _j.meta, payload = _j.payload;\r\n updateQuerySubstateIfExists(draft, meta.arg.queryCacheKey, function (substate) {\r\n var _a;\r\n if (substate.requestId !== meta.requestId && !isUpsertQuery(meta.arg))\r\n return;\r\n var merge = definitions[meta.arg.endpointName].merge;\r\n substate.status = QueryStatus.fulfilled;\r\n if (merge) {\r\n if (substate.data !== void 0) {\r\n var fulfilledTimeStamp_1 = meta.fulfilledTimeStamp, arg_1 = meta.arg, baseQueryMeta_1 = meta.baseQueryMeta, requestId_1 = meta.requestId;\r\n var newData = createNextState(substate.data, function (draftSubstateData) {\r\n return merge(draftSubstateData, payload, {\r\n arg: arg_1.originalArgs,\r\n baseQueryMeta: baseQueryMeta_1,\r\n fulfilledTimeStamp: fulfilledTimeStamp_1,\r\n requestId: requestId_1\r\n });\r\n });\r\n substate.data = newData;\r\n }\r\n else {\r\n substate.data = payload;\r\n }\r\n }\r\n else {\r\n substate.data = ((_a = definitions[meta.arg.endpointName].structuralSharing) != null ? _a : true) ? copyWithStructuralSharing(substate.data, payload) : payload;\r\n }\r\n delete substate.error;\r\n substate.fulfilledTimeStamp = meta.fulfilledTimeStamp;\r\n });\r\n }).addCase(queryThunk.rejected, function (draft, _j) {\r\n var _k = _j.meta, condition = _k.condition, arg = _k.arg, requestId = _k.requestId, error = _j.error, payload = _j.payload;\r\n updateQuerySubstateIfExists(draft, arg.queryCacheKey, function (substate) {\r\n if (condition) {\r\n }\r\n else {\r\n if (substate.requestId !== requestId)\r\n return;\r\n substate.status = QueryStatus.rejected;\r\n substate.error = payload != null ? payload : error;\r\n }\r\n });\r\n }).addMatcher(hasRehydrationInfo, function (draft, action) {\r\n var queries = extractRehydrationInfo(action).queries;\r\n for (var _j = 0, _k = Object.entries(queries); _j < _k.length; _j++) {\r\n var _l = _k[_j], key = _l[0], entry = _l[1];\r\n if ((entry == null ? void 0 : entry.status) === QueryStatus.fulfilled || (entry == null ? void 0 : entry.status) === QueryStatus.rejected) {\r\n draft[key] = entry;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n var mutationSlice = createSlice({\r\n name: reducerPath + \"/mutations\",\r\n initialState: initialState,\r\n reducers: {\r\n removeMutationResult: {\r\n reducer: function (draft, _j) {\r\n var payload = _j.payload;\r\n var cacheKey = getMutationCacheKey(payload);\r\n if (cacheKey in draft) {\r\n delete draft[cacheKey];\r\n }\r\n },\r\n prepare: prepareAutoBatched()\r\n }\r\n },\r\n extraReducers: function (builder) {\r\n builder.addCase(mutationThunk.pending, function (draft, _j) {\r\n var meta = _j.meta, _k = _j.meta, requestId = _k.requestId, arg = _k.arg, startedTimeStamp = _k.startedTimeStamp;\r\n if (!arg.track)\r\n return;\r\n draft[getMutationCacheKey(meta)] = {\r\n requestId: requestId,\r\n status: QueryStatus.pending,\r\n endpointName: arg.endpointName,\r\n startedTimeStamp: startedTimeStamp\r\n };\r\n }).addCase(mutationThunk.fulfilled, function (draft, _j) {\r\n var payload = _j.payload, meta = _j.meta;\r\n if (!meta.arg.track)\r\n return;\r\n updateMutationSubstateIfExists(draft, meta, function (substate) {\r\n if (substate.requestId !== meta.requestId)\r\n return;\r\n substate.status = QueryStatus.fulfilled;\r\n substate.data = payload;\r\n substate.fulfilledTimeStamp = meta.fulfilledTimeStamp;\r\n });\r\n }).addCase(mutationThunk.rejected, function (draft, _j) {\r\n var payload = _j.payload, error = _j.error, meta = _j.meta;\r\n if (!meta.arg.track)\r\n return;\r\n updateMutationSubstateIfExists(draft, meta, function (substate) {\r\n if (substate.requestId !== meta.requestId)\r\n return;\r\n substate.status = QueryStatus.rejected;\r\n substate.error = payload != null ? payload : error;\r\n });\r\n }).addMatcher(hasRehydrationInfo, function (draft, action) {\r\n var mutations = extractRehydrationInfo(action).mutations;\r\n for (var _j = 0, _k = Object.entries(mutations); _j < _k.length; _j++) {\r\n var _l = _k[_j], key = _l[0], entry = _l[1];\r\n if (((entry == null ? void 0 : entry.status) === QueryStatus.fulfilled || (entry == null ? void 0 : entry.status) === QueryStatus.rejected) && key !== (entry == null ? void 0 : entry.requestId)) {\r\n draft[key] = entry;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n var invalidationSlice = createSlice({\r\n name: reducerPath + \"/invalidation\",\r\n initialState: initialState,\r\n reducers: {},\r\n extraReducers: function (builder) {\r\n builder.addCase(querySlice.actions.removeQueryResult, function (draft, _j) {\r\n var queryCacheKey = _j.payload.queryCacheKey;\r\n for (var _k = 0, _l = Object.values(draft); _k < _l.length; _k++) {\r\n var tagTypeSubscriptions = _l[_k];\r\n for (var _m = 0, _o = Object.values(tagTypeSubscriptions); _m < _o.length; _m++) {\r\n var idSubscriptions = _o[_m];\r\n var foundAt = idSubscriptions.indexOf(queryCacheKey);\r\n if (foundAt !== -1) {\r\n idSubscriptions.splice(foundAt, 1);\r\n }\r\n }\r\n }\r\n }).addMatcher(hasRehydrationInfo, function (draft, action) {\r\n var _a, _b, _c, _d;\r\n var provided = extractRehydrationInfo(action).provided;\r\n for (var _j = 0, _k = Object.entries(provided); _j < _k.length; _j++) {\r\n var _l = _k[_j], type = _l[0], incomingTags = _l[1];\r\n for (var _m = 0, _o = Object.entries(incomingTags); _m < _o.length; _m++) {\r\n var _p = _o[_m], id = _p[0], cacheKeys = _p[1];\r\n var subscribedQueries = (_d = (_b = (_a = draft[type]) != null ? _a : draft[type] = {})[_c = id || \"__internal_without_id\"]) != null ? _d : _b[_c] = [];\r\n for (var _q = 0, cacheKeys_1 = cacheKeys; _q < cacheKeys_1.length; _q++) {\r\n var queryCacheKey = cacheKeys_1[_q];\r\n var alreadySubscribed = subscribedQueries.includes(queryCacheKey);\r\n if (!alreadySubscribed) {\r\n subscribedQueries.push(queryCacheKey);\r\n }\r\n }\r\n }\r\n }\r\n }).addMatcher(isAnyOf(isFulfilled2(queryThunk), isRejectedWithValue2(queryThunk)), function (draft, action) {\r\n var _a, _b, _c, _d;\r\n var providedTags = calculateProvidedByThunk(action, \"providesTags\", definitions, assertTagType);\r\n var queryCacheKey = action.meta.arg.queryCacheKey;\r\n for (var _j = 0, _k = Object.values(draft); _j < _k.length; _j++) {\r\n var tagTypeSubscriptions = _k[_j];\r\n for (var _l = 0, _m = Object.values(tagTypeSubscriptions); _l < _m.length; _l++) {\r\n var idSubscriptions = _m[_l];\r\n var foundAt = idSubscriptions.indexOf(queryCacheKey);\r\n if (foundAt !== -1) {\r\n idSubscriptions.splice(foundAt, 1);\r\n }\r\n }\r\n }\r\n for (var _o = 0, providedTags_1 = providedTags; _o < providedTags_1.length; _o++) {\r\n var _p = providedTags_1[_o], type = _p.type, id = _p.id;\r\n var subscribedQueries = (_d = (_b = (_a = draft[type]) != null ? _a : draft[type] = {})[_c = id || \"__internal_without_id\"]) != null ? _d : _b[_c] = [];\r\n var alreadySubscribed = subscribedQueries.includes(queryCacheKey);\r\n if (!alreadySubscribed) {\r\n subscribedQueries.push(queryCacheKey);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n var subscriptionSlice = createSlice({\r\n name: reducerPath + \"/subscriptions\",\r\n initialState: initialState,\r\n reducers: {\r\n updateSubscriptionOptions: function (d, a) {\r\n },\r\n unsubscribeQueryResult: function (d, a) {\r\n },\r\n internal_probeSubscription: function (d, a) {\r\n }\r\n }\r\n });\r\n var internalSubscriptionsSlice = createSlice({\r\n name: reducerPath + \"/internalSubscriptions\",\r\n initialState: initialState,\r\n reducers: {\r\n subscriptionsUpdated: function (state, action) {\r\n return applyPatches(state, action.payload);\r\n }\r\n }\r\n });\r\n var configSlice = createSlice({\r\n name: reducerPath + \"/config\",\r\n initialState: __spreadValues({\r\n online: isOnline(),\r\n focused: isDocumentVisible(),\r\n middlewareRegistered: false\r\n }, config),\r\n reducers: {\r\n middlewareRegistered: function (state, _j) {\r\n var payload = _j.payload;\r\n state.middlewareRegistered = state.middlewareRegistered === \"conflict\" || apiUid !== payload ? \"conflict\" : true;\r\n }\r\n },\r\n extraReducers: function (builder) {\r\n builder.addCase(onOnline, function (state) {\r\n state.online = true;\r\n }).addCase(onOffline, function (state) {\r\n state.online = false;\r\n }).addCase(onFocus, function (state) {\r\n state.focused = true;\r\n }).addCase(onFocusLost, function (state) {\r\n state.focused = false;\r\n }).addMatcher(hasRehydrationInfo, function (draft) { return __spreadValues({}, draft); });\r\n }\r\n });\r\n var combinedReducer = combineReducers({\r\n queries: querySlice.reducer,\r\n mutations: mutationSlice.reducer,\r\n provided: invalidationSlice.reducer,\r\n subscriptions: internalSubscriptionsSlice.reducer,\r\n config: configSlice.reducer\r\n });\r\n var reducer = function (state, action) { return combinedReducer(resetApiState.match(action) ? void 0 : state, action); };\r\n var actions = __spreadProps(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({}, configSlice.actions), querySlice.actions), subscriptionSlice.actions), internalSubscriptionsSlice.actions), mutationSlice.actions), {\r\n unsubscribeMutationResult: mutationSlice.actions.removeMutationResult,\r\n resetApiState: resetApiState\r\n });\r\n return { reducer: reducer, actions: actions };\r\n}\r\n// src/query/core/buildSelectors.ts\r\nvar skipToken = /* @__PURE__ */ Symbol.for(\"RTKQ/skipToken\");\r\nvar skipSelector = skipToken;\r\nvar initialSubState = {\r\n status: QueryStatus.uninitialized\r\n};\r\nvar defaultQuerySubState = /* @__PURE__ */ createNextState2(initialSubState, function () {\r\n});\r\nvar defaultMutationSubState = /* @__PURE__ */ createNextState2(initialSubState, function () {\r\n});\r\nfunction buildSelectors(_j) {\r\n var serializeQueryArgs = _j.serializeQueryArgs, reducerPath = _j.reducerPath;\r\n var selectSkippedQuery = function (state) { return defaultQuerySubState; };\r\n var selectSkippedMutation = function (state) { return defaultMutationSubState; };\r\n return { buildQuerySelector: buildQuerySelector, buildMutationSelector: buildMutationSelector, selectInvalidatedBy: selectInvalidatedBy };\r\n function withRequestFlags(substate) {\r\n return __spreadValues(__spreadValues({}, substate), getRequestStatusFlags(substate.status));\r\n }\r\n function selectInternalState(rootState) {\r\n var state = rootState[reducerPath];\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (!state) {\r\n if (selectInternalState.triggered)\r\n return state;\r\n selectInternalState.triggered = true;\r\n console.error(\"Error: No data found at `state.\" + reducerPath + \"`. Did you forget to add the reducer to the store?\");\r\n }\r\n }\r\n return state;\r\n }\r\n function buildQuerySelector(endpointName, endpointDefinition) {\r\n return function (queryArgs) {\r\n var serializedArgs = serializeQueryArgs({\r\n queryArgs: queryArgs,\r\n endpointDefinition: endpointDefinition,\r\n endpointName: endpointName\r\n });\r\n var selectQuerySubstate = function (state) {\r\n var _a, _b, _c;\r\n return (_c = (_b = (_a = selectInternalState(state)) == null ? void 0 : _a.queries) == null ? void 0 : _b[serializedArgs]) != null ? _c : defaultQuerySubState;\r\n };\r\n var finalSelectQuerySubState = queryArgs === skipToken ? selectSkippedQuery : selectQuerySubstate;\r\n return createSelector(finalSelectQuerySubState, withRequestFlags);\r\n };\r\n }\r\n function buildMutationSelector() {\r\n return function (id) {\r\n var _a;\r\n var mutationId;\r\n if (typeof id === \"object\") {\r\n mutationId = (_a = getMutationCacheKey(id)) != null ? _a : skipToken;\r\n }\r\n else {\r\n mutationId = id;\r\n }\r\n var selectMutationSubstate = function (state) {\r\n var _a2, _b, _c;\r\n return (_c = (_b = (_a2 = selectInternalState(state)) == null ? void 0 : _a2.mutations) == null ? void 0 : _b[mutationId]) != null ? _c : defaultMutationSubState;\r\n };\r\n var finalSelectMutationSubstate = mutationId === skipToken ? selectSkippedMutation : selectMutationSubstate;\r\n return createSelector(finalSelectMutationSubstate, withRequestFlags);\r\n };\r\n }\r\n function selectInvalidatedBy(state, tags) {\r\n var _a;\r\n var apiState = state[reducerPath];\r\n var toInvalidate = new Set();\r\n for (var _j = 0, _k = tags.map(expandTagDescription); _j < _k.length; _j++) {\r\n var tag = _k[_j];\r\n var provided = apiState.provided[tag.type];\r\n if (!provided) {\r\n continue;\r\n }\r\n var invalidateSubscriptions = (_a = tag.id !== void 0 ? provided[tag.id] : flatten(Object.values(provided))) != null ? _a : [];\r\n for (var _l = 0, invalidateSubscriptions_1 = invalidateSubscriptions; _l < invalidateSubscriptions_1.length; _l++) {\r\n var invalidate = invalidateSubscriptions_1[_l];\r\n toInvalidate.add(invalidate);\r\n }\r\n }\r\n return flatten(Array.from(toInvalidate.values()).map(function (queryCacheKey) {\r\n var querySubState = apiState.queries[queryCacheKey];\r\n return querySubState ? [\r\n {\r\n queryCacheKey: queryCacheKey,\r\n endpointName: querySubState.endpointName,\r\n originalArgs: querySubState.originalArgs\r\n }\r\n ] : [];\r\n }));\r\n }\r\n}\r\n// src/query/defaultSerializeQueryArgs.ts\r\nimport { isPlainObject as isPlainObject3 } from \"@reduxjs/toolkit\";\r\nvar cache = WeakMap ? new WeakMap() : void 0;\r\nvar defaultSerializeQueryArgs = function (_j) {\r\n var endpointName = _j.endpointName, queryArgs = _j.queryArgs;\r\n var serialized = \"\";\r\n var cached = cache == null ? void 0 : cache.get(queryArgs);\r\n if (typeof cached === \"string\") {\r\n serialized = cached;\r\n }\r\n else {\r\n var stringified = JSON.stringify(queryArgs, function (key, value) { return isPlainObject3(value) ? Object.keys(value).sort().reduce(function (acc, key2) {\r\n acc[key2] = value[key2];\r\n return acc;\r\n }, {}) : value; });\r\n if (isPlainObject3(queryArgs)) {\r\n cache == null ? void 0 : cache.set(queryArgs, stringified);\r\n }\r\n serialized = stringified;\r\n }\r\n return endpointName + \"(\" + serialized + \")\";\r\n};\r\n// src/query/createApi.ts\r\nimport { nanoid } from \"@reduxjs/toolkit\";\r\nimport { defaultMemoize } from \"reselect\";\r\nfunction buildCreateApi() {\r\n var modules = [];\r\n for (var _j = 0; _j < arguments.length; _j++) {\r\n modules[_j] = arguments[_j];\r\n }\r\n return function baseCreateApi(options) {\r\n var extractRehydrationInfo = defaultMemoize(function (action) {\r\n var _a, _b;\r\n return (_b = options.extractRehydrationInfo) == null ? void 0 : _b.call(options, action, {\r\n reducerPath: (_a = options.reducerPath) != null ? _a : \"api\"\r\n });\r\n });\r\n var optionsWithDefaults = __spreadProps(__spreadValues({\r\n reducerPath: \"api\",\r\n keepUnusedDataFor: 60,\r\n refetchOnMountOrArgChange: false,\r\n refetchOnFocus: false,\r\n refetchOnReconnect: false\r\n }, options), {\r\n extractRehydrationInfo: extractRehydrationInfo,\r\n serializeQueryArgs: function (queryArgsApi) {\r\n var finalSerializeQueryArgs = defaultSerializeQueryArgs;\r\n if (\"serializeQueryArgs\" in queryArgsApi.endpointDefinition) {\r\n var endpointSQA_1 = queryArgsApi.endpointDefinition.serializeQueryArgs;\r\n finalSerializeQueryArgs = function (queryArgsApi2) {\r\n var initialResult = endpointSQA_1(queryArgsApi2);\r\n if (typeof initialResult === \"string\") {\r\n return initialResult;\r\n }\r\n else {\r\n return defaultSerializeQueryArgs(__spreadProps(__spreadValues({}, queryArgsApi2), {\r\n queryArgs: initialResult\r\n }));\r\n }\r\n };\r\n }\r\n else if (options.serializeQueryArgs) {\r\n finalSerializeQueryArgs = options.serializeQueryArgs;\r\n }\r\n return finalSerializeQueryArgs(queryArgsApi);\r\n },\r\n tagTypes: __spreadArray([], options.tagTypes || [])\r\n });\r\n var context = {\r\n endpointDefinitions: {},\r\n batch: function (fn) {\r\n fn();\r\n },\r\n apiUid: nanoid(),\r\n extractRehydrationInfo: extractRehydrationInfo,\r\n hasRehydrationInfo: defaultMemoize(function (action) { return extractRehydrationInfo(action) != null; })\r\n };\r\n var api = {\r\n injectEndpoints: injectEndpoints,\r\n enhanceEndpoints: function (_j) {\r\n var addTagTypes = _j.addTagTypes, endpoints = _j.endpoints;\r\n if (addTagTypes) {\r\n for (var _k = 0, addTagTypes_1 = addTagTypes; _k < addTagTypes_1.length; _k++) {\r\n var eT = addTagTypes_1[_k];\r\n if (!optionsWithDefaults.tagTypes.includes(eT)) {\r\n ;\r\n optionsWithDefaults.tagTypes.push(eT);\r\n }\r\n }\r\n }\r\n if (endpoints) {\r\n for (var _l = 0, _m = Object.entries(endpoints); _l < _m.length; _l++) {\r\n var _o = _m[_l], endpointName = _o[0], partialDefinition = _o[1];\r\n if (typeof partialDefinition === \"function\") {\r\n partialDefinition(context.endpointDefinitions[endpointName]);\r\n }\r\n else {\r\n Object.assign(context.endpointDefinitions[endpointName] || {}, partialDefinition);\r\n }\r\n }\r\n }\r\n return api;\r\n }\r\n };\r\n var initializedModules = modules.map(function (m) { return m.init(api, optionsWithDefaults, context); });\r\n function injectEndpoints(inject) {\r\n var evaluatedEndpoints = inject.endpoints({\r\n query: function (x) { return __spreadProps(__spreadValues({}, x), { type: DefinitionType.query }); },\r\n mutation: function (x) { return __spreadProps(__spreadValues({}, x), { type: DefinitionType.mutation }); }\r\n });\r\n for (var _j = 0, _k = Object.entries(evaluatedEndpoints); _j < _k.length; _j++) {\r\n var _l = _k[_j], endpointName = _l[0], definition = _l[1];\r\n if (!inject.overrideExisting && endpointName in context.endpointDefinitions) {\r\n if (typeof process !== \"undefined\" && process.env.NODE_ENV === \"development\") {\r\n console.error(\"called `injectEndpoints` to override already-existing endpointName \" + endpointName + \" without specifying `overrideExisting: true`\");\r\n }\r\n continue;\r\n }\r\n context.endpointDefinitions[endpointName] = definition;\r\n for (var _m = 0, initializedModules_1 = initializedModules; _m < initializedModules_1.length; _m++) {\r\n var m = initializedModules_1[_m];\r\n m.injectEndpoint(endpointName, definition);\r\n }\r\n }\r\n return api;\r\n }\r\n return api.injectEndpoints({ endpoints: options.endpoints });\r\n };\r\n}\r\n// src/query/fakeBaseQuery.ts\r\nfunction fakeBaseQuery() {\r\n return function () {\r\n throw new Error(\"When using `fakeBaseQuery`, all queries & mutations must use the `queryFn` definition syntax.\");\r\n };\r\n}\r\n// src/query/core/buildMiddleware/index.ts\r\nimport { createAction as createAction3 } from \"@reduxjs/toolkit\";\r\n// src/query/core/buildMiddleware/cacheCollection.ts\r\nfunction isObjectEmpty(obj) {\r\n for (var k in obj) {\r\n return false;\r\n }\r\n return true;\r\n}\r\nvar THIRTY_TWO_BIT_MAX_TIMER_SECONDS = 2147483647 / 1e3 - 1;\r\nvar buildCacheCollectionHandler = function (_j) {\r\n var reducerPath = _j.reducerPath, api = _j.api, context = _j.context, internalState = _j.internalState;\r\n var _k = api.internalActions, removeQueryResult = _k.removeQueryResult, unsubscribeQueryResult = _k.unsubscribeQueryResult;\r\n function anySubscriptionsRemainingForKey(queryCacheKey) {\r\n var subscriptions = internalState.currentSubscriptions[queryCacheKey];\r\n return !!subscriptions && !isObjectEmpty(subscriptions);\r\n }\r\n var currentRemovalTimeouts = {};\r\n var handler = function (action, mwApi, internalState2) {\r\n var _a;\r\n if (unsubscribeQueryResult.match(action)) {\r\n var state = mwApi.getState()[reducerPath];\r\n var queryCacheKey = action.payload.queryCacheKey;\r\n handleUnsubscribe(queryCacheKey, (_a = state.queries[queryCacheKey]) == null ? void 0 : _a.endpointName, mwApi, state.config);\r\n }\r\n if (api.util.resetApiState.match(action)) {\r\n for (var _j = 0, _k = Object.entries(currentRemovalTimeouts); _j < _k.length; _j++) {\r\n var _l = _k[_j], key = _l[0], timeout = _l[1];\r\n if (timeout)\r\n clearTimeout(timeout);\r\n delete currentRemovalTimeouts[key];\r\n }\r\n }\r\n if (context.hasRehydrationInfo(action)) {\r\n var state = mwApi.getState()[reducerPath];\r\n var queries = context.extractRehydrationInfo(action).queries;\r\n for (var _m = 0, _o = Object.entries(queries); _m < _o.length; _m++) {\r\n var _p = _o[_m], queryCacheKey = _p[0], queryState = _p[1];\r\n handleUnsubscribe(queryCacheKey, queryState == null ? void 0 : queryState.endpointName, mwApi, state.config);\r\n }\r\n }\r\n };\r\n function handleUnsubscribe(queryCacheKey, endpointName, api2, config) {\r\n var _a;\r\n var endpointDefinition = context.endpointDefinitions[endpointName];\r\n var keepUnusedDataFor = (_a = endpointDefinition == null ? void 0 : endpointDefinition.keepUnusedDataFor) != null ? _a : config.keepUnusedDataFor;\r\n if (keepUnusedDataFor === Infinity) {\r\n return;\r\n }\r\n var finalKeepUnusedDataFor = Math.max(0, Math.min(keepUnusedDataFor, THIRTY_TWO_BIT_MAX_TIMER_SECONDS));\r\n if (!anySubscriptionsRemainingForKey(queryCacheKey)) {\r\n var currentTimeout = currentRemovalTimeouts[queryCacheKey];\r\n if (currentTimeout) {\r\n clearTimeout(currentTimeout);\r\n }\r\n currentRemovalTimeouts[queryCacheKey] = setTimeout(function () {\r\n if (!anySubscriptionsRemainingForKey(queryCacheKey)) {\r\n api2.dispatch(removeQueryResult({ queryCacheKey: queryCacheKey }));\r\n }\r\n delete currentRemovalTimeouts[queryCacheKey];\r\n }, finalKeepUnusedDataFor * 1e3);\r\n }\r\n }\r\n return handler;\r\n};\r\n// src/query/core/buildMiddleware/invalidationByTags.ts\r\nimport { isAnyOf as isAnyOf2, isFulfilled as isFulfilled3, isRejectedWithValue as isRejectedWithValue3 } from \"@reduxjs/toolkit\";\r\nvar buildInvalidationByTagsHandler = function (_j) {\r\n var reducerPath = _j.reducerPath, context = _j.context, endpointDefinitions = _j.context.endpointDefinitions, mutationThunk = _j.mutationThunk, api = _j.api, assertTagType = _j.assertTagType, refetchQuery = _j.refetchQuery;\r\n var removeQueryResult = api.internalActions.removeQueryResult;\r\n var isThunkActionWithTags = isAnyOf2(isFulfilled3(mutationThunk), isRejectedWithValue3(mutationThunk));\r\n var handler = function (action, mwApi) {\r\n if (isThunkActionWithTags(action)) {\r\n invalidateTags(calculateProvidedByThunk(action, \"invalidatesTags\", endpointDefinitions, assertTagType), mwApi);\r\n }\r\n if (api.util.invalidateTags.match(action)) {\r\n invalidateTags(calculateProvidedBy(action.payload, void 0, void 0, void 0, void 0, assertTagType), mwApi);\r\n }\r\n };\r\n function invalidateTags(tags, mwApi) {\r\n var rootState = mwApi.getState();\r\n var state = rootState[reducerPath];\r\n var toInvalidate = api.util.selectInvalidatedBy(rootState, tags);\r\n context.batch(function () {\r\n var _a;\r\n var valuesArray = Array.from(toInvalidate.values());\r\n for (var _j = 0, valuesArray_1 = valuesArray; _j < valuesArray_1.length; _j++) {\r\n var queryCacheKey = valuesArray_1[_j].queryCacheKey;\r\n var querySubState = state.queries[queryCacheKey];\r\n var subscriptionSubState = (_a = state.subscriptions[queryCacheKey]) != null ? _a : {};\r\n if (querySubState) {\r\n if (Object.keys(subscriptionSubState).length === 0) {\r\n mwApi.dispatch(removeQueryResult({\r\n queryCacheKey: queryCacheKey\r\n }));\r\n }\r\n else if (querySubState.status !== QueryStatus.uninitialized) {\r\n mwApi.dispatch(refetchQuery(querySubState, queryCacheKey));\r\n }\r\n }\r\n }\r\n });\r\n }\r\n return handler;\r\n};\r\n// src/query/core/buildMiddleware/polling.ts\r\nvar buildPollingHandler = function (_j) {\r\n var reducerPath = _j.reducerPath, queryThunk = _j.queryThunk, api = _j.api, refetchQuery = _j.refetchQuery, internalState = _j.internalState;\r\n var currentPolls = {};\r\n var handler = function (action, mwApi) {\r\n if (api.internalActions.updateSubscriptionOptions.match(action) || api.internalActions.unsubscribeQueryResult.match(action)) {\r\n updatePollingInterval(action.payload, mwApi);\r\n }\r\n if (queryThunk.pending.match(action) || queryThunk.rejected.match(action) && action.meta.condition) {\r\n updatePollingInterval(action.meta.arg, mwApi);\r\n }\r\n if (queryThunk.fulfilled.match(action) || queryThunk.rejected.match(action) && !action.meta.condition) {\r\n startNextPoll(action.meta.arg, mwApi);\r\n }\r\n if (api.util.resetApiState.match(action)) {\r\n clearPolls();\r\n }\r\n };\r\n function startNextPoll(_j, api2) {\r\n var queryCacheKey = _j.queryCacheKey;\r\n var state = api2.getState()[reducerPath];\r\n var querySubState = state.queries[queryCacheKey];\r\n var subscriptions = internalState.currentSubscriptions[queryCacheKey];\r\n if (!querySubState || querySubState.status === QueryStatus.uninitialized)\r\n return;\r\n var lowestPollingInterval = findLowestPollingInterval(subscriptions);\r\n if (!Number.isFinite(lowestPollingInterval))\r\n return;\r\n var currentPoll = currentPolls[queryCacheKey];\r\n if (currentPoll == null ? void 0 : currentPoll.timeout) {\r\n clearTimeout(currentPoll.timeout);\r\n currentPoll.timeout = void 0;\r\n }\r\n var nextPollTimestamp = Date.now() + lowestPollingInterval;\r\n var currentInterval = currentPolls[queryCacheKey] = {\r\n nextPollTimestamp: nextPollTimestamp,\r\n pollingInterval: lowestPollingInterval,\r\n timeout: setTimeout(function () {\r\n currentInterval.timeout = void 0;\r\n api2.dispatch(refetchQuery(querySubState, queryCacheKey));\r\n }, lowestPollingInterval)\r\n };\r\n }\r\n function updatePollingInterval(_j, api2) {\r\n var queryCacheKey = _j.queryCacheKey;\r\n var state = api2.getState()[reducerPath];\r\n var querySubState = state.queries[queryCacheKey];\r\n var subscriptions = internalState.currentSubscriptions[queryCacheKey];\r\n if (!querySubState || querySubState.status === QueryStatus.uninitialized) {\r\n return;\r\n }\r\n var lowestPollingInterval = findLowestPollingInterval(subscriptions);\r\n if (!Number.isFinite(lowestPollingInterval)) {\r\n cleanupPollForKey(queryCacheKey);\r\n return;\r\n }\r\n var currentPoll = currentPolls[queryCacheKey];\r\n var nextPollTimestamp = Date.now() + lowestPollingInterval;\r\n if (!currentPoll || nextPollTimestamp < currentPoll.nextPollTimestamp) {\r\n startNextPoll({ queryCacheKey: queryCacheKey }, api2);\r\n }\r\n }\r\n function cleanupPollForKey(key) {\r\n var existingPoll = currentPolls[key];\r\n if (existingPoll == null ? void 0 : existingPoll.timeout) {\r\n clearTimeout(existingPoll.timeout);\r\n }\r\n delete currentPolls[key];\r\n }\r\n function clearPolls() {\r\n for (var _j = 0, _k = Object.keys(currentPolls); _j < _k.length; _j++) {\r\n var key = _k[_j];\r\n cleanupPollForKey(key);\r\n }\r\n }\r\n function findLowestPollingInterval(subscribers) {\r\n if (subscribers === void 0) { subscribers = {}; }\r\n var lowestPollingInterval = Number.POSITIVE_INFINITY;\r\n for (var key in subscribers) {\r\n if (!!subscribers[key].pollingInterval) {\r\n lowestPollingInterval = Math.min(subscribers[key].pollingInterval, lowestPollingInterval);\r\n }\r\n }\r\n return lowestPollingInterval;\r\n }\r\n return handler;\r\n};\r\n// src/query/core/buildMiddleware/windowEventHandling.ts\r\nvar buildWindowEventHandler = function (_j) {\r\n var reducerPath = _j.reducerPath, context = _j.context, api = _j.api, refetchQuery = _j.refetchQuery, internalState = _j.internalState;\r\n var removeQueryResult = api.internalActions.removeQueryResult;\r\n var handler = function (action, mwApi) {\r\n if (onFocus.match(action)) {\r\n refetchValidQueries(mwApi, \"refetchOnFocus\");\r\n }\r\n if (onOnline.match(action)) {\r\n refetchValidQueries(mwApi, \"refetchOnReconnect\");\r\n }\r\n };\r\n function refetchValidQueries(api2, type) {\r\n var state = api2.getState()[reducerPath];\r\n var queries = state.queries;\r\n var subscriptions = internalState.currentSubscriptions;\r\n context.batch(function () {\r\n for (var _j = 0, _k = Object.keys(subscriptions); _j < _k.length; _j++) {\r\n var queryCacheKey = _k[_j];\r\n var querySubState = queries[queryCacheKey];\r\n var subscriptionSubState = subscriptions[queryCacheKey];\r\n if (!subscriptionSubState || !querySubState)\r\n continue;\r\n var shouldRefetch = Object.values(subscriptionSubState).some(function (sub) { return sub[type] === true; }) || Object.values(subscriptionSubState).every(function (sub) { return sub[type] === void 0; }) && state.config[type];\r\n if (shouldRefetch) {\r\n if (Object.keys(subscriptionSubState).length === 0) {\r\n api2.dispatch(removeQueryResult({\r\n queryCacheKey: queryCacheKey\r\n }));\r\n }\r\n else if (querySubState.status !== QueryStatus.uninitialized) {\r\n api2.dispatch(refetchQuery(querySubState, queryCacheKey));\r\n }\r\n }\r\n }\r\n });\r\n }\r\n return handler;\r\n};\r\n// src/query/core/buildMiddleware/cacheLifecycle.ts\r\nimport { isAsyncThunkAction, isFulfilled as isFulfilled4 } from \"@reduxjs/toolkit\";\r\nvar neverResolvedError = new Error(\"Promise never resolved before cacheEntryRemoved.\");\r\nvar buildCacheLifecycleHandler = function (_j) {\r\n var api = _j.api, reducerPath = _j.reducerPath, context = _j.context, queryThunk = _j.queryThunk, mutationThunk = _j.mutationThunk, internalState = _j.internalState;\r\n var isQueryThunk = isAsyncThunkAction(queryThunk);\r\n var isMutationThunk = isAsyncThunkAction(mutationThunk);\r\n var isFulfilledThunk = isFulfilled4(queryThunk, mutationThunk);\r\n var lifecycleMap = {};\r\n var handler = function (action, mwApi, stateBefore) {\r\n var cacheKey = getCacheKey(action);\r\n if (queryThunk.pending.match(action)) {\r\n var oldState = stateBefore[reducerPath].queries[cacheKey];\r\n var state = mwApi.getState()[reducerPath].queries[cacheKey];\r\n if (!oldState && state) {\r\n handleNewKey(action.meta.arg.endpointName, action.meta.arg.originalArgs, cacheKey, mwApi, action.meta.requestId);\r\n }\r\n }\r\n else if (mutationThunk.pending.match(action)) {\r\n var state = mwApi.getState()[reducerPath].mutations[cacheKey];\r\n if (state) {\r\n handleNewKey(action.meta.arg.endpointName, action.meta.arg.originalArgs, cacheKey, mwApi, action.meta.requestId);\r\n }\r\n }\r\n else if (isFulfilledThunk(action)) {\r\n var lifecycle = lifecycleMap[cacheKey];\r\n if (lifecycle == null ? void 0 : lifecycle.valueResolved) {\r\n lifecycle.valueResolved({\r\n data: action.payload,\r\n meta: action.meta.baseQueryMeta\r\n });\r\n delete lifecycle.valueResolved;\r\n }\r\n }\r\n else if (api.internalActions.removeQueryResult.match(action) || api.internalActions.removeMutationResult.match(action)) {\r\n var lifecycle = lifecycleMap[cacheKey];\r\n if (lifecycle) {\r\n delete lifecycleMap[cacheKey];\r\n lifecycle.cacheEntryRemoved();\r\n }\r\n }\r\n else if (api.util.resetApiState.match(action)) {\r\n for (var _j = 0, _k = Object.entries(lifecycleMap); _j < _k.length; _j++) {\r\n var _l = _k[_j], cacheKey2 = _l[0], lifecycle = _l[1];\r\n delete lifecycleMap[cacheKey2];\r\n lifecycle.cacheEntryRemoved();\r\n }\r\n }\r\n };\r\n function getCacheKey(action) {\r\n if (isQueryThunk(action))\r\n return action.meta.arg.queryCacheKey;\r\n if (isMutationThunk(action))\r\n return action.meta.requestId;\r\n if (api.internalActions.removeQueryResult.match(action))\r\n return action.payload.queryCacheKey;\r\n if (api.internalActions.removeMutationResult.match(action))\r\n return getMutationCacheKey(action.payload);\r\n return \"\";\r\n }\r\n function handleNewKey(endpointName, originalArgs, queryCacheKey, mwApi, requestId) {\r\n var endpointDefinition = context.endpointDefinitions[endpointName];\r\n var onCacheEntryAdded = endpointDefinition == null ? void 0 : endpointDefinition.onCacheEntryAdded;\r\n if (!onCacheEntryAdded)\r\n return;\r\n var lifecycle = {};\r\n var cacheEntryRemoved = new Promise(function (resolve) {\r\n lifecycle.cacheEntryRemoved = resolve;\r\n });\r\n var cacheDataLoaded = Promise.race([\r\n new Promise(function (resolve) {\r\n lifecycle.valueResolved = resolve;\r\n }),\r\n cacheEntryRemoved.then(function () {\r\n throw neverResolvedError;\r\n })\r\n ]);\r\n cacheDataLoaded.catch(function () {\r\n });\r\n lifecycleMap[queryCacheKey] = lifecycle;\r\n var selector = api.endpoints[endpointName].select(endpointDefinition.type === DefinitionType.query ? originalArgs : queryCacheKey);\r\n var extra = mwApi.dispatch(function (_, __, extra2) { return extra2; });\r\n var lifecycleApi = __spreadProps(__spreadValues({}, mwApi), {\r\n getCacheEntry: function () { return selector(mwApi.getState()); },\r\n requestId: requestId,\r\n extra: extra,\r\n updateCachedData: endpointDefinition.type === DefinitionType.query ? function (updateRecipe) { return mwApi.dispatch(api.util.updateQueryData(endpointName, originalArgs, updateRecipe)); } : void 0,\r\n cacheDataLoaded: cacheDataLoaded,\r\n cacheEntryRemoved: cacheEntryRemoved\r\n });\r\n var runningHandler = onCacheEntryAdded(originalArgs, lifecycleApi);\r\n Promise.resolve(runningHandler).catch(function (e) {\r\n if (e === neverResolvedError)\r\n return;\r\n throw e;\r\n });\r\n }\r\n return handler;\r\n};\r\n// src/query/core/buildMiddleware/queryLifecycle.ts\r\nimport { isPending as isPending2, isRejected as isRejected2, isFulfilled as isFulfilled5 } from \"@reduxjs/toolkit\";\r\nvar buildQueryLifecycleHandler = function (_j) {\r\n var api = _j.api, context = _j.context, queryThunk = _j.queryThunk, mutationThunk = _j.mutationThunk;\r\n var isPendingThunk = isPending2(queryThunk, mutationThunk);\r\n var isRejectedThunk = isRejected2(queryThunk, mutationThunk);\r\n var isFullfilledThunk = isFulfilled5(queryThunk, mutationThunk);\r\n var lifecycleMap = {};\r\n var handler = function (action, mwApi) {\r\n var _a, _b, _c;\r\n if (isPendingThunk(action)) {\r\n var _j = action.meta, requestId = _j.requestId, _k = _j.arg, endpointName_1 = _k.endpointName, originalArgs_1 = _k.originalArgs;\r\n var endpointDefinition = context.endpointDefinitions[endpointName_1];\r\n var onQueryStarted = endpointDefinition == null ? void 0 : endpointDefinition.onQueryStarted;\r\n if (onQueryStarted) {\r\n var lifecycle_1 = {};\r\n var queryFulfilled = new Promise(function (resolve, reject) {\r\n lifecycle_1.resolve = resolve;\r\n lifecycle_1.reject = reject;\r\n });\r\n queryFulfilled.catch(function () {\r\n });\r\n lifecycleMap[requestId] = lifecycle_1;\r\n var selector_1 = api.endpoints[endpointName_1].select(endpointDefinition.type === DefinitionType.query ? originalArgs_1 : requestId);\r\n var extra = mwApi.dispatch(function (_, __, extra2) { return extra2; });\r\n var lifecycleApi = __spreadProps(__spreadValues({}, mwApi), {\r\n getCacheEntry: function () { return selector_1(mwApi.getState()); },\r\n requestId: requestId,\r\n extra: extra,\r\n updateCachedData: endpointDefinition.type === DefinitionType.query ? function (updateRecipe) { return mwApi.dispatch(api.util.updateQueryData(endpointName_1, originalArgs_1, updateRecipe)); } : void 0,\r\n queryFulfilled: queryFulfilled\r\n });\r\n onQueryStarted(originalArgs_1, lifecycleApi);\r\n }\r\n }\r\n else if (isFullfilledThunk(action)) {\r\n var _l = action.meta, requestId = _l.requestId, baseQueryMeta = _l.baseQueryMeta;\r\n (_a = lifecycleMap[requestId]) == null ? void 0 : _a.resolve({\r\n data: action.payload,\r\n meta: baseQueryMeta\r\n });\r\n delete lifecycleMap[requestId];\r\n }\r\n else if (isRejectedThunk(action)) {\r\n var _m = action.meta, requestId = _m.requestId, rejectedWithValue = _m.rejectedWithValue, baseQueryMeta = _m.baseQueryMeta;\r\n (_c = lifecycleMap[requestId]) == null ? void 0 : _c.reject({\r\n error: (_b = action.payload) != null ? _b : action.error,\r\n isUnhandledError: !rejectedWithValue,\r\n meta: baseQueryMeta\r\n });\r\n delete lifecycleMap[requestId];\r\n }\r\n };\r\n return handler;\r\n};\r\n// src/query/core/buildMiddleware/devMiddleware.ts\r\nvar buildDevCheckHandler = function (_j) {\r\n var api = _j.api, apiUid = _j.context.apiUid, reducerPath = _j.reducerPath;\r\n return function (action, mwApi) {\r\n var _a, _b;\r\n if (api.util.resetApiState.match(action)) {\r\n mwApi.dispatch(api.internalActions.middlewareRegistered(apiUid));\r\n }\r\n if (typeof process !== \"undefined\" && process.env.NODE_ENV === \"development\") {\r\n if (api.internalActions.middlewareRegistered.match(action) && action.payload === apiUid && ((_b = (_a = mwApi.getState()[reducerPath]) == null ? void 0 : _a.config) == null ? void 0 : _b.middlewareRegistered) === \"conflict\") {\r\n console.warn(\"There is a mismatch between slice and middleware for the reducerPath \\\"\" + reducerPath + \"\\\".\\nYou can only have one api per reducer path, this will lead to crashes in various situations!\" + (reducerPath === \"api\" ? \"\\nIf you have multiple apis, you *have* to specify the reducerPath option when using createApi!\" : \"\"));\r\n }\r\n }\r\n };\r\n};\r\n// src/query/core/buildMiddleware/batchActions.ts\r\nimport { produceWithPatches as produceWithPatches2 } from \"immer\";\r\nvar promise;\r\nvar queueMicrotaskShim = typeof queueMicrotask === \"function\" ? queueMicrotask.bind(typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : globalThis) : function (cb) { return (promise || (promise = Promise.resolve())).then(cb).catch(function (err) { return setTimeout(function () {\r\n throw err;\r\n}, 0); }); };\r\nvar buildBatchedActionsHandler = function (_j) {\r\n var api = _j.api, queryThunk = _j.queryThunk, internalState = _j.internalState;\r\n var subscriptionsPrefix = api.reducerPath + \"/subscriptions\";\r\n var previousSubscriptions = null;\r\n var dispatchQueued = false;\r\n var _k = api.internalActions, updateSubscriptionOptions = _k.updateSubscriptionOptions, unsubscribeQueryResult = _k.unsubscribeQueryResult;\r\n var actuallyMutateSubscriptions = function (mutableState, action) {\r\n var _a, _b, _c, _d, _e, _f, _g, _h, _i;\r\n if (updateSubscriptionOptions.match(action)) {\r\n var _j = action.payload, queryCacheKey = _j.queryCacheKey, requestId = _j.requestId, options = _j.options;\r\n if ((_a = mutableState == null ? void 0 : mutableState[queryCacheKey]) == null ? void 0 : _a[requestId]) {\r\n mutableState[queryCacheKey][requestId] = options;\r\n }\r\n return true;\r\n }\r\n if (unsubscribeQueryResult.match(action)) {\r\n var _k = action.payload, queryCacheKey = _k.queryCacheKey, requestId = _k.requestId;\r\n if (mutableState[queryCacheKey]) {\r\n delete mutableState[queryCacheKey][requestId];\r\n }\r\n return true;\r\n }\r\n if (api.internalActions.removeQueryResult.match(action)) {\r\n delete mutableState[action.payload.queryCacheKey];\r\n return true;\r\n }\r\n if (queryThunk.pending.match(action)) {\r\n var _l = action.meta, arg = _l.arg, requestId = _l.requestId;\r\n if (arg.subscribe) {\r\n var substate = (_c = mutableState[_b = arg.queryCacheKey]) != null ? _c : mutableState[_b] = {};\r\n substate[requestId] = (_e = (_d = arg.subscriptionOptions) != null ? _d : substate[requestId]) != null ? _e : {};\r\n return true;\r\n }\r\n }\r\n if (queryThunk.rejected.match(action)) {\r\n var _m = action.meta, condition = _m.condition, arg = _m.arg, requestId = _m.requestId;\r\n if (condition && arg.subscribe) {\r\n var substate = (_g = mutableState[_f = arg.queryCacheKey]) != null ? _g : mutableState[_f] = {};\r\n substate[requestId] = (_i = (_h = arg.subscriptionOptions) != null ? _h : substate[requestId]) != null ? _i : {};\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n return function (action, mwApi) {\r\n var _a, _b;\r\n if (!previousSubscriptions) {\r\n previousSubscriptions = JSON.parse(JSON.stringify(internalState.currentSubscriptions));\r\n }\r\n if (api.internalActions.internal_probeSubscription.match(action)) {\r\n var _j = action.payload, queryCacheKey = _j.queryCacheKey, requestId = _j.requestId;\r\n var hasSubscription = !!((_a = internalState.currentSubscriptions[queryCacheKey]) == null ? void 0 : _a[requestId]);\r\n return [false, hasSubscription];\r\n }\r\n var didMutate = actuallyMutateSubscriptions(internalState.currentSubscriptions, action);\r\n if (didMutate) {\r\n if (!dispatchQueued) {\r\n queueMicrotaskShim(function () {\r\n var newSubscriptions = JSON.parse(JSON.stringify(internalState.currentSubscriptions));\r\n var _j = produceWithPatches2(previousSubscriptions, function () { return newSubscriptions; }), patches = _j[1];\r\n mwApi.next(api.internalActions.subscriptionsUpdated(patches));\r\n previousSubscriptions = newSubscriptions;\r\n dispatchQueued = false;\r\n });\r\n dispatchQueued = true;\r\n }\r\n var isSubscriptionSliceAction = !!((_b = action.type) == null ? void 0 : _b.startsWith(subscriptionsPrefix));\r\n var isAdditionalSubscriptionAction = queryThunk.rejected.match(action) && action.meta.condition && !!action.meta.arg.subscribe;\r\n var actionShouldContinue = !isSubscriptionSliceAction && !isAdditionalSubscriptionAction;\r\n return [actionShouldContinue, false];\r\n }\r\n return [true, false];\r\n };\r\n};\r\n// src/query/core/buildMiddleware/index.ts\r\nfunction buildMiddleware(input) {\r\n var reducerPath = input.reducerPath, queryThunk = input.queryThunk, api = input.api, context = input.context;\r\n var apiUid = context.apiUid;\r\n var actions = {\r\n invalidateTags: createAction3(reducerPath + \"/invalidateTags\")\r\n };\r\n var isThisApiSliceAction = function (action) {\r\n return !!action && typeof action.type === \"string\" && action.type.startsWith(reducerPath + \"/\");\r\n };\r\n var handlerBuilders = [\r\n buildDevCheckHandler,\r\n buildCacheCollectionHandler,\r\n buildInvalidationByTagsHandler,\r\n buildPollingHandler,\r\n buildCacheLifecycleHandler,\r\n buildQueryLifecycleHandler\r\n ];\r\n var middleware = function (mwApi) {\r\n var initialized2 = false;\r\n var internalState = {\r\n currentSubscriptions: {}\r\n };\r\n var builderArgs = __spreadProps(__spreadValues({}, input), {\r\n internalState: internalState,\r\n refetchQuery: refetchQuery\r\n });\r\n var handlers = handlerBuilders.map(function (build) { return build(builderArgs); });\r\n var batchedActionsHandler = buildBatchedActionsHandler(builderArgs);\r\n var windowEventsHandler = buildWindowEventHandler(builderArgs);\r\n return function (next) {\r\n return function (action) {\r\n if (!initialized2) {\r\n initialized2 = true;\r\n mwApi.dispatch(api.internalActions.middlewareRegistered(apiUid));\r\n }\r\n var mwApiWithNext = __spreadProps(__spreadValues({}, mwApi), { next: next });\r\n var stateBefore = mwApi.getState();\r\n var _j = batchedActionsHandler(action, mwApiWithNext, stateBefore), actionShouldContinue = _j[0], hasSubscription = _j[1];\r\n var res;\r\n if (actionShouldContinue) {\r\n res = next(action);\r\n }\r\n else {\r\n res = hasSubscription;\r\n }\r\n if (!!mwApi.getState()[reducerPath]) {\r\n windowEventsHandler(action, mwApiWithNext, stateBefore);\r\n if (isThisApiSliceAction(action) || context.hasRehydrationInfo(action)) {\r\n for (var _k = 0, handlers_1 = handlers; _k < handlers_1.length; _k++) {\r\n var handler = handlers_1[_k];\r\n handler(action, mwApiWithNext, stateBefore);\r\n }\r\n }\r\n }\r\n return res;\r\n };\r\n };\r\n };\r\n return { middleware: middleware, actions: actions };\r\n function refetchQuery(querySubState, queryCacheKey, override) {\r\n if (override === void 0) { override = {}; }\r\n return queryThunk(__spreadValues({\r\n type: \"query\",\r\n endpointName: querySubState.endpointName,\r\n originalArgs: querySubState.originalArgs,\r\n subscribe: false,\r\n forceRefetch: true,\r\n queryCacheKey: queryCacheKey\r\n }, override));\r\n }\r\n}\r\n// src/query/tsHelpers.ts\r\nfunction assertCast(v) {\r\n}\r\nfunction safeAssign(target) {\r\n var args = [];\r\n for (var _j = 1; _j < arguments.length; _j++) {\r\n args[_j - 1] = arguments[_j];\r\n }\r\n Object.assign.apply(Object, __spreadArray([target], args));\r\n}\r\n// src/query/core/module.ts\r\nimport { enablePatches } from \"immer\";\r\nvar coreModuleName = /* @__PURE__ */ Symbol();\r\nvar coreModule = function () { return ({\r\n name: coreModuleName,\r\n init: function (api, _j, context) {\r\n var baseQuery = _j.baseQuery, tagTypes = _j.tagTypes, reducerPath = _j.reducerPath, serializeQueryArgs = _j.serializeQueryArgs, keepUnusedDataFor = _j.keepUnusedDataFor, refetchOnMountOrArgChange = _j.refetchOnMountOrArgChange, refetchOnFocus = _j.refetchOnFocus, refetchOnReconnect = _j.refetchOnReconnect;\r\n enablePatches();\r\n assertCast(serializeQueryArgs);\r\n var assertTagType = function (tag) {\r\n if (typeof process !== \"undefined\" && process.env.NODE_ENV === \"development\") {\r\n if (!tagTypes.includes(tag.type)) {\r\n console.error(\"Tag type '\" + tag.type + \"' was used, but not specified in `tagTypes`!\");\r\n }\r\n }\r\n return tag;\r\n };\r\n Object.assign(api, {\r\n reducerPath: reducerPath,\r\n endpoints: {},\r\n internalActions: {\r\n onOnline: onOnline,\r\n onOffline: onOffline,\r\n onFocus: onFocus,\r\n onFocusLost: onFocusLost\r\n },\r\n util: {}\r\n });\r\n var _k = buildThunks({\r\n baseQuery: baseQuery,\r\n reducerPath: reducerPath,\r\n context: context,\r\n api: api,\r\n serializeQueryArgs: serializeQueryArgs\r\n }), queryThunk = _k.queryThunk, mutationThunk = _k.mutationThunk, patchQueryData = _k.patchQueryData, updateQueryData = _k.updateQueryData, upsertQueryData = _k.upsertQueryData, prefetch = _k.prefetch, buildMatchThunkActions = _k.buildMatchThunkActions;\r\n var _l = buildSlice({\r\n context: context,\r\n queryThunk: queryThunk,\r\n mutationThunk: mutationThunk,\r\n reducerPath: reducerPath,\r\n assertTagType: assertTagType,\r\n config: {\r\n refetchOnFocus: refetchOnFocus,\r\n refetchOnReconnect: refetchOnReconnect,\r\n refetchOnMountOrArgChange: refetchOnMountOrArgChange,\r\n keepUnusedDataFor: keepUnusedDataFor,\r\n reducerPath: reducerPath\r\n }\r\n }), reducer = _l.reducer, sliceActions = _l.actions;\r\n safeAssign(api.util, {\r\n patchQueryData: patchQueryData,\r\n updateQueryData: updateQueryData,\r\n upsertQueryData: upsertQueryData,\r\n prefetch: prefetch,\r\n resetApiState: sliceActions.resetApiState\r\n });\r\n safeAssign(api.internalActions, sliceActions);\r\n var _m = buildMiddleware({\r\n reducerPath: reducerPath,\r\n context: context,\r\n queryThunk: queryThunk,\r\n mutationThunk: mutationThunk,\r\n api: api,\r\n assertTagType: assertTagType\r\n }), middleware = _m.middleware, middlewareActions = _m.actions;\r\n safeAssign(api.util, middlewareActions);\r\n safeAssign(api, { reducer: reducer, middleware: middleware });\r\n var _o = buildSelectors({\r\n serializeQueryArgs: serializeQueryArgs,\r\n reducerPath: reducerPath\r\n }), buildQuerySelector = _o.buildQuerySelector, buildMutationSelector = _o.buildMutationSelector, selectInvalidatedBy = _o.selectInvalidatedBy;\r\n safeAssign(api.util, { selectInvalidatedBy: selectInvalidatedBy });\r\n var _p = buildInitiate({\r\n queryThunk: queryThunk,\r\n mutationThunk: mutationThunk,\r\n api: api,\r\n serializeQueryArgs: serializeQueryArgs,\r\n context: context\r\n }), buildInitiateQuery = _p.buildInitiateQuery, buildInitiateMutation = _p.buildInitiateMutation, getRunningMutationThunk = _p.getRunningMutationThunk, getRunningMutationsThunk = _p.getRunningMutationsThunk, getRunningQueriesThunk = _p.getRunningQueriesThunk, getRunningQueryThunk = _p.getRunningQueryThunk, getRunningOperationPromises = _p.getRunningOperationPromises, removalWarning = _p.removalWarning;\r\n safeAssign(api.util, {\r\n getRunningOperationPromises: getRunningOperationPromises,\r\n getRunningOperationPromise: removalWarning,\r\n getRunningMutationThunk: getRunningMutationThunk,\r\n getRunningMutationsThunk: getRunningMutationsThunk,\r\n getRunningQueryThunk: getRunningQueryThunk,\r\n getRunningQueriesThunk: getRunningQueriesThunk\r\n });\r\n return {\r\n name: coreModuleName,\r\n injectEndpoint: function (endpointName, definition) {\r\n var _a, _b;\r\n var anyApi = api;\r\n (_b = (_a = anyApi.endpoints)[endpointName]) != null ? _b : _a[endpointName] = {};\r\n if (isQueryDefinition(definition)) {\r\n safeAssign(anyApi.endpoints[endpointName], {\r\n name: endpointName,\r\n select: buildQuerySelector(endpointName, definition),\r\n initiate: buildInitiateQuery(endpointName, definition)\r\n }, buildMatchThunkActions(queryThunk, endpointName));\r\n }\r\n else if (isMutationDefinition(definition)) {\r\n safeAssign(anyApi.endpoints[endpointName], {\r\n name: endpointName,\r\n select: buildMutationSelector(),\r\n initiate: buildInitiateMutation(endpointName)\r\n }, buildMatchThunkActions(mutationThunk, endpointName));\r\n }\r\n }\r\n };\r\n }\r\n}); };\r\n// src/query/core/index.ts\r\nvar createApi = /* @__PURE__ */ buildCreateApi(coreModule());\r\nexport { QueryStatus, buildCreateApi, copyWithStructuralSharing, coreModule, createApi, defaultSerializeQueryArgs, fakeBaseQuery, fetchBaseQuery, retry, setupListeners, skipSelector, skipToken };\r\n//# sourceMappingURL=rtk-query.esm.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n};\r\nvar __defProp = Object.defineProperty;\r\nvar __defProps = Object.defineProperties;\r\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\r\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\r\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\r\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\r\nvar __defNormalProp = function (obj, key, value) { return key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value: value }) : obj[key] = value; };\r\nvar __spreadValues = function (a, b) {\r\n for (var prop in b || (b = {}))\r\n if (__hasOwnProp.call(b, prop))\r\n __defNormalProp(a, prop, b[prop]);\r\n if (__getOwnPropSymbols)\r\n for (var _i = 0, _c = __getOwnPropSymbols(b); _i < _c.length; _i++) {\r\n var prop = _c[_i];\r\n if (__propIsEnum.call(b, prop))\r\n __defNormalProp(a, prop, b[prop]);\r\n }\r\n return a;\r\n};\r\nvar __spreadProps = function (a, b) { return __defProps(a, __getOwnPropDescs(b)); };\r\nvar __async = function (__this, __arguments, generator) {\r\n return new Promise(function (resolve, reject) {\r\n var fulfilled = function (value) {\r\n try {\r\n step(generator.next(value));\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n };\r\n var rejected = function (value) {\r\n try {\r\n step(generator.throw(value));\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n };\r\n var step = function (x) { return x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); };\r\n step((generator = generator.apply(__this, __arguments)).next());\r\n });\r\n};\r\n// src/index.ts\r\nimport { enableES5 } from \"immer\";\r\nexport * from \"redux\";\r\nimport { default as default2, current as current2, freeze, original, isDraft as isDraft4 } from \"immer\";\r\nimport { createSelector as createSelector2 } from \"reselect\";\r\n// src/createDraftSafeSelector.ts\r\nimport { current, isDraft } from \"immer\";\r\nimport { createSelector } from \"reselect\";\r\nvar createDraftSafeSelector = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var selector = createSelector.apply(void 0, args);\r\n var wrappedSelector = function (value) {\r\n var rest = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n rest[_i - 1] = arguments[_i];\r\n }\r\n return selector.apply(void 0, __spreadArray([isDraft(value) ? current(value) : value], rest));\r\n };\r\n return wrappedSelector;\r\n};\r\n// src/configureStore.ts\r\nimport { createStore, compose as compose2, applyMiddleware, combineReducers } from \"redux\";\r\n// src/devtoolsExtension.ts\r\nimport { compose } from \"redux\";\r\nvar composeWithDevTools = typeof window !== \"undefined\" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : function () {\r\n if (arguments.length === 0)\r\n return void 0;\r\n if (typeof arguments[0] === \"object\")\r\n return compose;\r\n return compose.apply(null, arguments);\r\n};\r\nvar devToolsEnhancer = typeof window !== \"undefined\" && window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ : function () {\r\n return function (noop2) {\r\n return noop2;\r\n };\r\n};\r\n// src/isPlainObject.ts\r\nfunction isPlainObject(value) {\r\n if (typeof value !== \"object\" || value === null)\r\n return false;\r\n var proto = Object.getPrototypeOf(value);\r\n if (proto === null)\r\n return true;\r\n var baseProto = proto;\r\n while (Object.getPrototypeOf(baseProto) !== null) {\r\n baseProto = Object.getPrototypeOf(baseProto);\r\n }\r\n return proto === baseProto;\r\n}\r\n// src/getDefaultMiddleware.ts\r\nimport thunkMiddleware from \"redux-thunk\";\r\n// src/utils.ts\r\nimport createNextState, { isDraftable } from \"immer\";\r\nfunction getTimeMeasureUtils(maxDelay, fnName) {\r\n var elapsed = 0;\r\n return {\r\n measureTime: function (fn) {\r\n var started = Date.now();\r\n try {\r\n return fn();\r\n }\r\n finally {\r\n var finished = Date.now();\r\n elapsed += finished - started;\r\n }\r\n },\r\n warnIfExceeded: function () {\r\n if (elapsed > maxDelay) {\r\n console.warn(fnName + \" took \" + elapsed + \"ms, which is more than the warning threshold of \" + maxDelay + \"ms. \\nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\\nIt is disabled in production builds, so you don't need to worry about that.\");\r\n }\r\n }\r\n };\r\n}\r\nvar MiddlewareArray = /** @class */ (function (_super) {\r\n __extends(MiddlewareArray, _super);\r\n function MiddlewareArray() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var _this = _super.apply(this, args) || this;\r\n Object.setPrototypeOf(_this, MiddlewareArray.prototype);\r\n return _this;\r\n }\r\n Object.defineProperty(MiddlewareArray, Symbol.species, {\r\n get: function () {\r\n return MiddlewareArray;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n MiddlewareArray.prototype.concat = function () {\r\n var arr = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n arr[_i] = arguments[_i];\r\n }\r\n return _super.prototype.concat.apply(this, arr);\r\n };\r\n MiddlewareArray.prototype.prepend = function () {\r\n var arr = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n arr[_i] = arguments[_i];\r\n }\r\n if (arr.length === 1 && Array.isArray(arr[0])) {\r\n return new (MiddlewareArray.bind.apply(MiddlewareArray, __spreadArray([void 0], arr[0].concat(this))))();\r\n }\r\n return new (MiddlewareArray.bind.apply(MiddlewareArray, __spreadArray([void 0], arr.concat(this))))();\r\n };\r\n return MiddlewareArray;\r\n}(Array));\r\nfunction freezeDraftable(val) {\r\n return isDraftable(val) ? createNextState(val, function () {\r\n }) : val;\r\n}\r\n// src/immutableStateInvariantMiddleware.ts\r\nvar isProduction = process.env.NODE_ENV === \"production\";\r\nvar prefix = \"Invariant failed\";\r\nfunction invariant(condition, message) {\r\n if (condition) {\r\n return;\r\n }\r\n if (isProduction) {\r\n throw new Error(prefix);\r\n }\r\n throw new Error(prefix + \": \" + (message || \"\"));\r\n}\r\nfunction stringify(obj, serializer, indent, decycler) {\r\n return JSON.stringify(obj, getSerialize(serializer, decycler), indent);\r\n}\r\nfunction getSerialize(serializer, decycler) {\r\n var stack = [], keys = [];\r\n if (!decycler)\r\n decycler = function (_, value) {\r\n if (stack[0] === value)\r\n return \"[Circular ~]\";\r\n return \"[Circular ~.\" + keys.slice(0, stack.indexOf(value)).join(\".\") + \"]\";\r\n };\r\n return function (key, value) {\r\n if (stack.length > 0) {\r\n var thisPos = stack.indexOf(this);\r\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\r\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\r\n if (~stack.indexOf(value))\r\n value = decycler.call(this, key, value);\r\n }\r\n else\r\n stack.push(value);\r\n return serializer == null ? value : serializer.call(this, key, value);\r\n };\r\n}\r\nfunction isImmutableDefault(value) {\r\n return typeof value !== \"object\" || value == null || Object.isFrozen(value);\r\n}\r\nfunction trackForMutations(isImmutable, ignorePaths, obj) {\r\n var trackedProperties = trackProperties(isImmutable, ignorePaths, obj);\r\n return {\r\n detectMutations: function () {\r\n return detectMutations(isImmutable, ignorePaths, trackedProperties, obj);\r\n }\r\n };\r\n}\r\nfunction trackProperties(isImmutable, ignorePaths, obj, path) {\r\n if (ignorePaths === void 0) { ignorePaths = []; }\r\n if (path === void 0) { path = \"\"; }\r\n var tracked = { value: obj };\r\n if (!isImmutable(obj)) {\r\n tracked.children = {};\r\n for (var key in obj) {\r\n var childPath = path ? path + \".\" + key : key;\r\n if (ignorePaths.length && ignorePaths.indexOf(childPath) !== -1) {\r\n continue;\r\n }\r\n tracked.children[key] = trackProperties(isImmutable, ignorePaths, obj[key], childPath);\r\n }\r\n }\r\n return tracked;\r\n}\r\nfunction detectMutations(isImmutable, ignoredPaths, trackedProperty, obj, sameParentRef, path) {\r\n if (ignoredPaths === void 0) { ignoredPaths = []; }\r\n if (sameParentRef === void 0) { sameParentRef = false; }\r\n if (path === void 0) { path = \"\"; }\r\n var prevObj = trackedProperty ? trackedProperty.value : void 0;\r\n var sameRef = prevObj === obj;\r\n if (sameParentRef && !sameRef && !Number.isNaN(obj)) {\r\n return { wasMutated: true, path: path };\r\n }\r\n if (isImmutable(prevObj) || isImmutable(obj)) {\r\n return { wasMutated: false };\r\n }\r\n var keysToDetect = {};\r\n for (var key in trackedProperty.children) {\r\n keysToDetect[key] = true;\r\n }\r\n for (var key in obj) {\r\n keysToDetect[key] = true;\r\n }\r\n var hasIgnoredPaths = ignoredPaths.length > 0;\r\n var _loop_1 = function (key) {\r\n var nestedPath = path ? path + \".\" + key : key;\r\n if (hasIgnoredPaths) {\r\n var hasMatches = ignoredPaths.some(function (ignored) {\r\n if (ignored instanceof RegExp) {\r\n return ignored.test(nestedPath);\r\n }\r\n return nestedPath === ignored;\r\n });\r\n if (hasMatches) {\r\n return \"continue\";\r\n }\r\n }\r\n var result = detectMutations(isImmutable, ignoredPaths, trackedProperty.children[key], obj[key], sameRef, nestedPath);\r\n if (result.wasMutated) {\r\n return { value: result };\r\n }\r\n };\r\n for (var key in keysToDetect) {\r\n var state_1 = _loop_1(key);\r\n if (typeof state_1 === \"object\")\r\n return state_1.value;\r\n }\r\n return { wasMutated: false };\r\n}\r\nfunction createImmutableStateInvariantMiddleware(options) {\r\n if (options === void 0) { options = {}; }\r\n if (process.env.NODE_ENV === \"production\") {\r\n return function () { return function (next) { return function (action) { return next(action); }; }; };\r\n }\r\n var _c = options.isImmutable, isImmutable = _c === void 0 ? isImmutableDefault : _c, ignoredPaths = options.ignoredPaths, _d = options.warnAfter, warnAfter = _d === void 0 ? 32 : _d, ignore = options.ignore;\r\n ignoredPaths = ignoredPaths || ignore;\r\n var track = trackForMutations.bind(null, isImmutable, ignoredPaths);\r\n return function (_c) {\r\n var getState = _c.getState;\r\n var state = getState();\r\n var tracker = track(state);\r\n var result;\r\n return function (next) { return function (action) {\r\n var measureUtils = getTimeMeasureUtils(warnAfter, \"ImmutableStateInvariantMiddleware\");\r\n measureUtils.measureTime(function () {\r\n state = getState();\r\n result = tracker.detectMutations();\r\n tracker = track(state);\r\n invariant(!result.wasMutated, \"A state mutation was detected between dispatches, in the path '\" + (result.path || \"\") + \"'. This may cause incorrect behavior. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)\");\r\n });\r\n var dispatchedAction = next(action);\r\n measureUtils.measureTime(function () {\r\n state = getState();\r\n result = tracker.detectMutations();\r\n tracker = track(state);\r\n result.wasMutated && invariant(!result.wasMutated, \"A state mutation was detected inside a dispatch, in the path: \" + (result.path || \"\") + \". Take a look at the reducer(s) handling the action \" + stringify(action) + \". (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)\");\r\n });\r\n measureUtils.warnIfExceeded();\r\n return dispatchedAction;\r\n }; };\r\n };\r\n}\r\n// src/serializableStateInvariantMiddleware.ts\r\nfunction isPlain(val) {\r\n var type = typeof val;\r\n return val == null || type === \"string\" || type === \"boolean\" || type === \"number\" || Array.isArray(val) || isPlainObject(val);\r\n}\r\nfunction findNonSerializableValue(value, path, isSerializable, getEntries, ignoredPaths, cache) {\r\n if (path === void 0) { path = \"\"; }\r\n if (isSerializable === void 0) { isSerializable = isPlain; }\r\n if (ignoredPaths === void 0) { ignoredPaths = []; }\r\n var foundNestedSerializable;\r\n if (!isSerializable(value)) {\r\n return {\r\n keyPath: path || \"\",\r\n value: value\r\n };\r\n }\r\n if (typeof value !== \"object\" || value === null) {\r\n return false;\r\n }\r\n if (cache == null ? void 0 : cache.has(value))\r\n return false;\r\n var entries = getEntries != null ? getEntries(value) : Object.entries(value);\r\n var hasIgnoredPaths = ignoredPaths.length > 0;\r\n var _loop_2 = function (key, nestedValue) {\r\n var nestedPath = path ? path + \".\" + key : key;\r\n if (hasIgnoredPaths) {\r\n var hasMatches = ignoredPaths.some(function (ignored) {\r\n if (ignored instanceof RegExp) {\r\n return ignored.test(nestedPath);\r\n }\r\n return nestedPath === ignored;\r\n });\r\n if (hasMatches) {\r\n return \"continue\";\r\n }\r\n }\r\n if (!isSerializable(nestedValue)) {\r\n return { value: {\r\n keyPath: nestedPath,\r\n value: nestedValue\r\n } };\r\n }\r\n if (typeof nestedValue === \"object\") {\r\n foundNestedSerializable = findNonSerializableValue(nestedValue, nestedPath, isSerializable, getEntries, ignoredPaths, cache);\r\n if (foundNestedSerializable) {\r\n return { value: foundNestedSerializable };\r\n }\r\n }\r\n };\r\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\r\n var _c = entries_1[_i], key = _c[0], nestedValue = _c[1];\r\n var state_2 = _loop_2(key, nestedValue);\r\n if (typeof state_2 === \"object\")\r\n return state_2.value;\r\n }\r\n if (cache && isNestedFrozen(value))\r\n cache.add(value);\r\n return false;\r\n}\r\nfunction isNestedFrozen(value) {\r\n if (!Object.isFrozen(value))\r\n return false;\r\n for (var _i = 0, _c = Object.values(value); _i < _c.length; _i++) {\r\n var nestedValue = _c[_i];\r\n if (typeof nestedValue !== \"object\" || nestedValue === null)\r\n continue;\r\n if (!isNestedFrozen(nestedValue))\r\n return false;\r\n }\r\n return true;\r\n}\r\nfunction createSerializableStateInvariantMiddleware(options) {\r\n if (options === void 0) { options = {}; }\r\n if (process.env.NODE_ENV === \"production\") {\r\n return function () { return function (next) { return function (action) { return next(action); }; }; };\r\n }\r\n var _c = options.isSerializable, isSerializable = _c === void 0 ? isPlain : _c, getEntries = options.getEntries, _d = options.ignoredActions, ignoredActions = _d === void 0 ? [] : _d, _e = options.ignoredActionPaths, ignoredActionPaths = _e === void 0 ? [\"meta.arg\", \"meta.baseQueryMeta\"] : _e, _f = options.ignoredPaths, ignoredPaths = _f === void 0 ? [] : _f, _g = options.warnAfter, warnAfter = _g === void 0 ? 32 : _g, _h = options.ignoreState, ignoreState = _h === void 0 ? false : _h, _j = options.ignoreActions, ignoreActions = _j === void 0 ? false : _j, _k = options.disableCache, disableCache = _k === void 0 ? false : _k;\r\n var cache = !disableCache && WeakSet ? new WeakSet() : void 0;\r\n return function (storeAPI) { return function (next) { return function (action) {\r\n var result = next(action);\r\n var measureUtils = getTimeMeasureUtils(warnAfter, \"SerializableStateInvariantMiddleware\");\r\n if (!ignoreActions && !(ignoredActions.length && ignoredActions.indexOf(action.type) !== -1)) {\r\n measureUtils.measureTime(function () {\r\n var foundActionNonSerializableValue = findNonSerializableValue(action, \"\", isSerializable, getEntries, ignoredActionPaths, cache);\r\n if (foundActionNonSerializableValue) {\r\n var keyPath = foundActionNonSerializableValue.keyPath, value = foundActionNonSerializableValue.value;\r\n console.error(\"A non-serializable value was detected in an action, in the path: `\" + keyPath + \"`. Value:\", value, \"\\nTake a look at the logic that dispatched this action: \", action, \"\\n(See https://redux.js.org/faq/actions#why-should-type-be-a-string-or-at-least-serializable-why-should-my-action-types-be-constants)\", \"\\n(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)\");\r\n }\r\n });\r\n }\r\n if (!ignoreState) {\r\n measureUtils.measureTime(function () {\r\n var state = storeAPI.getState();\r\n var foundStateNonSerializableValue = findNonSerializableValue(state, \"\", isSerializable, getEntries, ignoredPaths, cache);\r\n if (foundStateNonSerializableValue) {\r\n var keyPath = foundStateNonSerializableValue.keyPath, value = foundStateNonSerializableValue.value;\r\n console.error(\"A non-serializable value was detected in the state, in the path: `\" + keyPath + \"`. Value:\", value, \"\\nTake a look at the reducer(s) handling this action type: \" + action.type + \".\\n(See https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state)\");\r\n }\r\n });\r\n measureUtils.warnIfExceeded();\r\n }\r\n return result;\r\n }; }; };\r\n}\r\n// src/getDefaultMiddleware.ts\r\nfunction isBoolean(x) {\r\n return typeof x === \"boolean\";\r\n}\r\nfunction curryGetDefaultMiddleware() {\r\n return function curriedGetDefaultMiddleware(options) {\r\n return getDefaultMiddleware(options);\r\n };\r\n}\r\nfunction getDefaultMiddleware(options) {\r\n if (options === void 0) { options = {}; }\r\n var _c = options.thunk, thunk = _c === void 0 ? true : _c, _d = options.immutableCheck, immutableCheck = _d === void 0 ? true : _d, _e = options.serializableCheck, serializableCheck = _e === void 0 ? true : _e;\r\n var middlewareArray = new MiddlewareArray();\r\n if (thunk) {\r\n if (isBoolean(thunk)) {\r\n middlewareArray.push(thunkMiddleware);\r\n }\r\n else {\r\n middlewareArray.push(thunkMiddleware.withExtraArgument(thunk.extraArgument));\r\n }\r\n }\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (immutableCheck) {\r\n var immutableOptions = {};\r\n if (!isBoolean(immutableCheck)) {\r\n immutableOptions = immutableCheck;\r\n }\r\n middlewareArray.unshift(createImmutableStateInvariantMiddleware(immutableOptions));\r\n }\r\n if (serializableCheck) {\r\n var serializableOptions = {};\r\n if (!isBoolean(serializableCheck)) {\r\n serializableOptions = serializableCheck;\r\n }\r\n middlewareArray.push(createSerializableStateInvariantMiddleware(serializableOptions));\r\n }\r\n }\r\n return middlewareArray;\r\n}\r\n// src/configureStore.ts\r\nvar IS_PRODUCTION = process.env.NODE_ENV === \"production\";\r\nfunction configureStore(options) {\r\n var curriedGetDefaultMiddleware = curryGetDefaultMiddleware();\r\n var _c = options || {}, _d = _c.reducer, reducer = _d === void 0 ? void 0 : _d, _e = _c.middleware, middleware = _e === void 0 ? curriedGetDefaultMiddleware() : _e, _f = _c.devTools, devTools = _f === void 0 ? true : _f, _g = _c.preloadedState, preloadedState = _g === void 0 ? void 0 : _g, _h = _c.enhancers, enhancers = _h === void 0 ? void 0 : _h;\r\n var rootReducer;\r\n if (typeof reducer === \"function\") {\r\n rootReducer = reducer;\r\n }\r\n else if (isPlainObject(reducer)) {\r\n rootReducer = combineReducers(reducer);\r\n }\r\n else {\r\n throw new Error('\"reducer\" is a required argument, and must be a function or an object of functions that can be passed to combineReducers');\r\n }\r\n var finalMiddleware = middleware;\r\n if (typeof finalMiddleware === \"function\") {\r\n finalMiddleware = finalMiddleware(curriedGetDefaultMiddleware);\r\n if (!IS_PRODUCTION && !Array.isArray(finalMiddleware)) {\r\n throw new Error(\"when using a middleware builder function, an array of middleware must be returned\");\r\n }\r\n }\r\n if (!IS_PRODUCTION && finalMiddleware.some(function (item) { return typeof item !== \"function\"; })) {\r\n throw new Error(\"each middleware provided to configureStore must be a function\");\r\n }\r\n var middlewareEnhancer = applyMiddleware.apply(void 0, finalMiddleware);\r\n var finalCompose = compose2;\r\n if (devTools) {\r\n finalCompose = composeWithDevTools(__spreadValues({\r\n trace: !IS_PRODUCTION\r\n }, typeof devTools === \"object\" && devTools));\r\n }\r\n var storeEnhancers = [middlewareEnhancer];\r\n if (Array.isArray(enhancers)) {\r\n storeEnhancers = __spreadArray([middlewareEnhancer], enhancers);\r\n }\r\n else if (typeof enhancers === \"function\") {\r\n storeEnhancers = enhancers(storeEnhancers);\r\n }\r\n var composedEnhancer = finalCompose.apply(void 0, storeEnhancers);\r\n return createStore(rootReducer, preloadedState, composedEnhancer);\r\n}\r\n// src/createAction.ts\r\nfunction createAction(type, prepareAction) {\r\n function actionCreator() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (prepareAction) {\r\n var prepared = prepareAction.apply(void 0, args);\r\n if (!prepared) {\r\n throw new Error(\"prepareAction did not return an object\");\r\n }\r\n return __spreadValues(__spreadValues({\r\n type: type,\r\n payload: prepared.payload\r\n }, \"meta\" in prepared && { meta: prepared.meta }), \"error\" in prepared && { error: prepared.error });\r\n }\r\n return { type: type, payload: args[0] };\r\n }\r\n actionCreator.toString = function () { return \"\" + type; };\r\n actionCreator.type = type;\r\n actionCreator.match = function (action) { return action.type === type; };\r\n return actionCreator;\r\n}\r\nfunction isFSA(action) {\r\n return isPlainObject(action) && typeof action.type === \"string\" && Object.keys(action).every(isValidKey);\r\n}\r\nfunction isValidKey(key) {\r\n return [\"type\", \"payload\", \"error\", \"meta\"].indexOf(key) > -1;\r\n}\r\nfunction getType(actionCreator) {\r\n return \"\" + actionCreator;\r\n}\r\n// src/createReducer.ts\r\nimport createNextState2, { isDraft as isDraft2, isDraftable as isDraftable2 } from \"immer\";\r\n// src/mapBuilders.ts\r\nfunction executeReducerBuilderCallback(builderCallback) {\r\n var actionsMap = {};\r\n var actionMatchers = [];\r\n var defaultCaseReducer;\r\n var builder = {\r\n addCase: function (typeOrActionCreator, reducer) {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (actionMatchers.length > 0) {\r\n throw new Error(\"`builder.addCase` should only be called before calling `builder.addMatcher`\");\r\n }\r\n if (defaultCaseReducer) {\r\n throw new Error(\"`builder.addCase` should only be called before calling `builder.addDefaultCase`\");\r\n }\r\n }\r\n var type = typeof typeOrActionCreator === \"string\" ? typeOrActionCreator : typeOrActionCreator.type;\r\n if (type in actionsMap) {\r\n throw new Error(\"addCase cannot be called with two reducers for the same action type\");\r\n }\r\n actionsMap[type] = reducer;\r\n return builder;\r\n },\r\n addMatcher: function (matcher, reducer) {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (defaultCaseReducer) {\r\n throw new Error(\"`builder.addMatcher` should only be called before calling `builder.addDefaultCase`\");\r\n }\r\n }\r\n actionMatchers.push({ matcher: matcher, reducer: reducer });\r\n return builder;\r\n },\r\n addDefaultCase: function (reducer) {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (defaultCaseReducer) {\r\n throw new Error(\"`builder.addDefaultCase` can only be called once\");\r\n }\r\n }\r\n defaultCaseReducer = reducer;\r\n return builder;\r\n }\r\n };\r\n builderCallback(builder);\r\n return [actionsMap, actionMatchers, defaultCaseReducer];\r\n}\r\n// src/createReducer.ts\r\nfunction isStateFunction(x) {\r\n return typeof x === \"function\";\r\n}\r\nvar hasWarnedAboutObjectNotation = false;\r\nfunction createReducer(initialState, mapOrBuilderCallback, actionMatchers, defaultCaseReducer) {\r\n if (actionMatchers === void 0) { actionMatchers = []; }\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (typeof mapOrBuilderCallback === \"object\") {\r\n if (!hasWarnedAboutObjectNotation) {\r\n hasWarnedAboutObjectNotation = true;\r\n console.warn(\"The object notation for `createReducer` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer\");\r\n }\r\n }\r\n }\r\n var _c = typeof mapOrBuilderCallback === \"function\" ? executeReducerBuilderCallback(mapOrBuilderCallback) : [mapOrBuilderCallback, actionMatchers, defaultCaseReducer], actionsMap = _c[0], finalActionMatchers = _c[1], finalDefaultCaseReducer = _c[2];\r\n var getInitialState;\r\n if (isStateFunction(initialState)) {\r\n getInitialState = function () { return freezeDraftable(initialState()); };\r\n }\r\n else {\r\n var frozenInitialState_1 = freezeDraftable(initialState);\r\n getInitialState = function () { return frozenInitialState_1; };\r\n }\r\n function reducer(state, action) {\r\n if (state === void 0) { state = getInitialState(); }\r\n var caseReducers = __spreadArray([\r\n actionsMap[action.type]\r\n ], finalActionMatchers.filter(function (_c) {\r\n var matcher = _c.matcher;\r\n return matcher(action);\r\n }).map(function (_c) {\r\n var reducer2 = _c.reducer;\r\n return reducer2;\r\n }));\r\n if (caseReducers.filter(function (cr) { return !!cr; }).length === 0) {\r\n caseReducers = [finalDefaultCaseReducer];\r\n }\r\n return caseReducers.reduce(function (previousState, caseReducer) {\r\n if (caseReducer) {\r\n if (isDraft2(previousState)) {\r\n var draft = previousState;\r\n var result = caseReducer(draft, action);\r\n if (result === void 0) {\r\n return previousState;\r\n }\r\n return result;\r\n }\r\n else if (!isDraftable2(previousState)) {\r\n var result = caseReducer(previousState, action);\r\n if (result === void 0) {\r\n if (previousState === null) {\r\n return previousState;\r\n }\r\n throw Error(\"A case reducer on a non-draftable value must not return undefined\");\r\n }\r\n return result;\r\n }\r\n else {\r\n return createNextState2(previousState, function (draft) {\r\n return caseReducer(draft, action);\r\n });\r\n }\r\n }\r\n return previousState;\r\n }, state);\r\n }\r\n reducer.getInitialState = getInitialState;\r\n return reducer;\r\n}\r\n// src/createSlice.ts\r\nvar hasWarnedAboutObjectNotation2 = false;\r\nfunction getType2(slice, actionKey) {\r\n return slice + \"/\" + actionKey;\r\n}\r\nfunction createSlice(options) {\r\n var name = options.name;\r\n if (!name) {\r\n throw new Error(\"`name` is a required option for createSlice\");\r\n }\r\n if (typeof process !== \"undefined\" && process.env.NODE_ENV === \"development\") {\r\n if (options.initialState === void 0) {\r\n console.error(\"You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`\");\r\n }\r\n }\r\n var initialState = typeof options.initialState == \"function\" ? options.initialState : freezeDraftable(options.initialState);\r\n var reducers = options.reducers || {};\r\n var reducerNames = Object.keys(reducers);\r\n var sliceCaseReducersByName = {};\r\n var sliceCaseReducersByType = {};\r\n var actionCreators = {};\r\n reducerNames.forEach(function (reducerName) {\r\n var maybeReducerWithPrepare = reducers[reducerName];\r\n var type = getType2(name, reducerName);\r\n var caseReducer;\r\n var prepareCallback;\r\n if (\"reducer\" in maybeReducerWithPrepare) {\r\n caseReducer = maybeReducerWithPrepare.reducer;\r\n prepareCallback = maybeReducerWithPrepare.prepare;\r\n }\r\n else {\r\n caseReducer = maybeReducerWithPrepare;\r\n }\r\n sliceCaseReducersByName[reducerName] = caseReducer;\r\n sliceCaseReducersByType[type] = caseReducer;\r\n actionCreators[reducerName] = prepareCallback ? createAction(type, prepareCallback) : createAction(type);\r\n });\r\n function buildReducer() {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (typeof options.extraReducers === \"object\") {\r\n if (!hasWarnedAboutObjectNotation2) {\r\n hasWarnedAboutObjectNotation2 = true;\r\n console.warn(\"The object notation for `createSlice.extraReducers` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice\");\r\n }\r\n }\r\n }\r\n var _c = typeof options.extraReducers === \"function\" ? executeReducerBuilderCallback(options.extraReducers) : [options.extraReducers], _d = _c[0], extraReducers = _d === void 0 ? {} : _d, _e = _c[1], actionMatchers = _e === void 0 ? [] : _e, _f = _c[2], defaultCaseReducer = _f === void 0 ? void 0 : _f;\r\n var finalCaseReducers = __spreadValues(__spreadValues({}, extraReducers), sliceCaseReducersByType);\r\n return createReducer(initialState, function (builder) {\r\n for (var key in finalCaseReducers) {\r\n builder.addCase(key, finalCaseReducers[key]);\r\n }\r\n for (var _i = 0, actionMatchers_1 = actionMatchers; _i < actionMatchers_1.length; _i++) {\r\n var m = actionMatchers_1[_i];\r\n builder.addMatcher(m.matcher, m.reducer);\r\n }\r\n if (defaultCaseReducer) {\r\n builder.addDefaultCase(defaultCaseReducer);\r\n }\r\n });\r\n }\r\n var _reducer;\r\n return {\r\n name: name,\r\n reducer: function (state, action) {\r\n if (!_reducer)\r\n _reducer = buildReducer();\r\n return _reducer(state, action);\r\n },\r\n actions: actionCreators,\r\n caseReducers: sliceCaseReducersByName,\r\n getInitialState: function () {\r\n if (!_reducer)\r\n _reducer = buildReducer();\r\n return _reducer.getInitialState();\r\n }\r\n };\r\n}\r\n// src/entities/entity_state.ts\r\nfunction getInitialEntityState() {\r\n return {\r\n ids: [],\r\n entities: {}\r\n };\r\n}\r\nfunction createInitialStateFactory() {\r\n function getInitialState(additionalState) {\r\n if (additionalState === void 0) { additionalState = {}; }\r\n return Object.assign(getInitialEntityState(), additionalState);\r\n }\r\n return { getInitialState: getInitialState };\r\n}\r\n// src/entities/state_selectors.ts\r\nfunction createSelectorsFactory() {\r\n function getSelectors(selectState) {\r\n var selectIds = function (state) { return state.ids; };\r\n var selectEntities = function (state) { return state.entities; };\r\n var selectAll = createDraftSafeSelector(selectIds, selectEntities, function (ids, entities) { return ids.map(function (id) { return entities[id]; }); });\r\n var selectId = function (_, id) { return id; };\r\n var selectById = function (entities, id) { return entities[id]; };\r\n var selectTotal = createDraftSafeSelector(selectIds, function (ids) { return ids.length; });\r\n if (!selectState) {\r\n return {\r\n selectIds: selectIds,\r\n selectEntities: selectEntities,\r\n selectAll: selectAll,\r\n selectTotal: selectTotal,\r\n selectById: createDraftSafeSelector(selectEntities, selectId, selectById)\r\n };\r\n }\r\n var selectGlobalizedEntities = createDraftSafeSelector(selectState, selectEntities);\r\n return {\r\n selectIds: createDraftSafeSelector(selectState, selectIds),\r\n selectEntities: selectGlobalizedEntities,\r\n selectAll: createDraftSafeSelector(selectState, selectAll),\r\n selectTotal: createDraftSafeSelector(selectState, selectTotal),\r\n selectById: createDraftSafeSelector(selectGlobalizedEntities, selectId, selectById)\r\n };\r\n }\r\n return { getSelectors: getSelectors };\r\n}\r\n// src/entities/state_adapter.ts\r\nimport createNextState3, { isDraft as isDraft3 } from \"immer\";\r\nfunction createSingleArgumentStateOperator(mutator) {\r\n var operator = createStateOperator(function (_, state) { return mutator(state); });\r\n return function operation(state) {\r\n return operator(state, void 0);\r\n };\r\n}\r\nfunction createStateOperator(mutator) {\r\n return function operation(state, arg) {\r\n function isPayloadActionArgument(arg2) {\r\n return isFSA(arg2);\r\n }\r\n var runMutator = function (draft) {\r\n if (isPayloadActionArgument(arg)) {\r\n mutator(arg.payload, draft);\r\n }\r\n else {\r\n mutator(arg, draft);\r\n }\r\n };\r\n if (isDraft3(state)) {\r\n runMutator(state);\r\n return state;\r\n }\r\n else {\r\n return createNextState3(state, runMutator);\r\n }\r\n };\r\n}\r\n// src/entities/utils.ts\r\nfunction selectIdValue(entity, selectId) {\r\n var key = selectId(entity);\r\n if (process.env.NODE_ENV !== \"production\" && key === void 0) {\r\n console.warn(\"The entity passed to the `selectId` implementation returned undefined.\", \"You should probably provide your own `selectId` implementation.\", \"The entity that was passed:\", entity, \"The `selectId` implementation:\", selectId.toString());\r\n }\r\n return key;\r\n}\r\nfunction ensureEntitiesArray(entities) {\r\n if (!Array.isArray(entities)) {\r\n entities = Object.values(entities);\r\n }\r\n return entities;\r\n}\r\nfunction splitAddedUpdatedEntities(newEntities, selectId, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n var added = [];\r\n var updated = [];\r\n for (var _i = 0, newEntities_1 = newEntities; _i < newEntities_1.length; _i++) {\r\n var entity = newEntities_1[_i];\r\n var id = selectIdValue(entity, selectId);\r\n if (id in state.entities) {\r\n updated.push({ id: id, changes: entity });\r\n }\r\n else {\r\n added.push(entity);\r\n }\r\n }\r\n return [added, updated];\r\n}\r\n// src/entities/unsorted_state_adapter.ts\r\nfunction createUnsortedStateAdapter(selectId) {\r\n function addOneMutably(entity, state) {\r\n var key = selectIdValue(entity, selectId);\r\n if (key in state.entities) {\r\n return;\r\n }\r\n state.ids.push(key);\r\n state.entities[key] = entity;\r\n }\r\n function addManyMutably(newEntities, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n for (var _i = 0, newEntities_2 = newEntities; _i < newEntities_2.length; _i++) {\r\n var entity = newEntities_2[_i];\r\n addOneMutably(entity, state);\r\n }\r\n }\r\n function setOneMutably(entity, state) {\r\n var key = selectIdValue(entity, selectId);\r\n if (!(key in state.entities)) {\r\n state.ids.push(key);\r\n }\r\n state.entities[key] = entity;\r\n }\r\n function setManyMutably(newEntities, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n for (var _i = 0, newEntities_3 = newEntities; _i < newEntities_3.length; _i++) {\r\n var entity = newEntities_3[_i];\r\n setOneMutably(entity, state);\r\n }\r\n }\r\n function setAllMutably(newEntities, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n state.ids = [];\r\n state.entities = {};\r\n addManyMutably(newEntities, state);\r\n }\r\n function removeOneMutably(key, state) {\r\n return removeManyMutably([key], state);\r\n }\r\n function removeManyMutably(keys, state) {\r\n var didMutate = false;\r\n keys.forEach(function (key) {\r\n if (key in state.entities) {\r\n delete state.entities[key];\r\n didMutate = true;\r\n }\r\n });\r\n if (didMutate) {\r\n state.ids = state.ids.filter(function (id) { return id in state.entities; });\r\n }\r\n }\r\n function removeAllMutably(state) {\r\n Object.assign(state, {\r\n ids: [],\r\n entities: {}\r\n });\r\n }\r\n function takeNewKey(keys, update, state) {\r\n var original2 = state.entities[update.id];\r\n var updated = Object.assign({}, original2, update.changes);\r\n var newKey = selectIdValue(updated, selectId);\r\n var hasNewKey = newKey !== update.id;\r\n if (hasNewKey) {\r\n keys[update.id] = newKey;\r\n delete state.entities[update.id];\r\n }\r\n state.entities[newKey] = updated;\r\n return hasNewKey;\r\n }\r\n function updateOneMutably(update, state) {\r\n return updateManyMutably([update], state);\r\n }\r\n function updateManyMutably(updates, state) {\r\n var newKeys = {};\r\n var updatesPerEntity = {};\r\n updates.forEach(function (update) {\r\n if (update.id in state.entities) {\r\n updatesPerEntity[update.id] = {\r\n id: update.id,\r\n changes: __spreadValues(__spreadValues({}, updatesPerEntity[update.id] ? updatesPerEntity[update.id].changes : null), update.changes)\r\n };\r\n }\r\n });\r\n updates = Object.values(updatesPerEntity);\r\n var didMutateEntities = updates.length > 0;\r\n if (didMutateEntities) {\r\n var didMutateIds = updates.filter(function (update) { return takeNewKey(newKeys, update, state); }).length > 0;\r\n if (didMutateIds) {\r\n state.ids = Object.keys(state.entities);\r\n }\r\n }\r\n }\r\n function upsertOneMutably(entity, state) {\r\n return upsertManyMutably([entity], state);\r\n }\r\n function upsertManyMutably(newEntities, state) {\r\n var _c = splitAddedUpdatedEntities(newEntities, selectId, state), added = _c[0], updated = _c[1];\r\n updateManyMutably(updated, state);\r\n addManyMutably(added, state);\r\n }\r\n return {\r\n removeAll: createSingleArgumentStateOperator(removeAllMutably),\r\n addOne: createStateOperator(addOneMutably),\r\n addMany: createStateOperator(addManyMutably),\r\n setOne: createStateOperator(setOneMutably),\r\n setMany: createStateOperator(setManyMutably),\r\n setAll: createStateOperator(setAllMutably),\r\n updateOne: createStateOperator(updateOneMutably),\r\n updateMany: createStateOperator(updateManyMutably),\r\n upsertOne: createStateOperator(upsertOneMutably),\r\n upsertMany: createStateOperator(upsertManyMutably),\r\n removeOne: createStateOperator(removeOneMutably),\r\n removeMany: createStateOperator(removeManyMutably)\r\n };\r\n}\r\n// src/entities/sorted_state_adapter.ts\r\nfunction createSortedStateAdapter(selectId, sort) {\r\n var _c = createUnsortedStateAdapter(selectId), removeOne = _c.removeOne, removeMany = _c.removeMany, removeAll = _c.removeAll;\r\n function addOneMutably(entity, state) {\r\n return addManyMutably([entity], state);\r\n }\r\n function addManyMutably(newEntities, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n var models = newEntities.filter(function (model) { return !(selectIdValue(model, selectId) in state.entities); });\r\n if (models.length !== 0) {\r\n merge(models, state);\r\n }\r\n }\r\n function setOneMutably(entity, state) {\r\n return setManyMutably([entity], state);\r\n }\r\n function setManyMutably(newEntities, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n if (newEntities.length !== 0) {\r\n merge(newEntities, state);\r\n }\r\n }\r\n function setAllMutably(newEntities, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n state.entities = {};\r\n state.ids = [];\r\n addManyMutably(newEntities, state);\r\n }\r\n function updateOneMutably(update, state) {\r\n return updateManyMutably([update], state);\r\n }\r\n function updateManyMutably(updates, state) {\r\n var appliedUpdates = false;\r\n for (var _i = 0, updates_1 = updates; _i < updates_1.length; _i++) {\r\n var update = updates_1[_i];\r\n var entity = state.entities[update.id];\r\n if (!entity) {\r\n continue;\r\n }\r\n appliedUpdates = true;\r\n Object.assign(entity, update.changes);\r\n var newId = selectId(entity);\r\n if (update.id !== newId) {\r\n delete state.entities[update.id];\r\n state.entities[newId] = entity;\r\n }\r\n }\r\n if (appliedUpdates) {\r\n resortEntities(state);\r\n }\r\n }\r\n function upsertOneMutably(entity, state) {\r\n return upsertManyMutably([entity], state);\r\n }\r\n function upsertManyMutably(newEntities, state) {\r\n var _c = splitAddedUpdatedEntities(newEntities, selectId, state), added = _c[0], updated = _c[1];\r\n updateManyMutably(updated, state);\r\n addManyMutably(added, state);\r\n }\r\n function areArraysEqual(a, b) {\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < a.length && i < b.length; i++) {\r\n if (a[i] === b[i]) {\r\n continue;\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n function merge(models, state) {\r\n models.forEach(function (model) {\r\n state.entities[selectId(model)] = model;\r\n });\r\n resortEntities(state);\r\n }\r\n function resortEntities(state) {\r\n var allEntities = Object.values(state.entities);\r\n allEntities.sort(sort);\r\n var newSortedIds = allEntities.map(selectId);\r\n var ids = state.ids;\r\n if (!areArraysEqual(ids, newSortedIds)) {\r\n state.ids = newSortedIds;\r\n }\r\n }\r\n return {\r\n removeOne: removeOne,\r\n removeMany: removeMany,\r\n removeAll: removeAll,\r\n addOne: createStateOperator(addOneMutably),\r\n updateOne: createStateOperator(updateOneMutably),\r\n upsertOne: createStateOperator(upsertOneMutably),\r\n setOne: createStateOperator(setOneMutably),\r\n setMany: createStateOperator(setManyMutably),\r\n setAll: createStateOperator(setAllMutably),\r\n addMany: createStateOperator(addManyMutably),\r\n updateMany: createStateOperator(updateManyMutably),\r\n upsertMany: createStateOperator(upsertManyMutably)\r\n };\r\n}\r\n// src/entities/create_adapter.ts\r\nfunction createEntityAdapter(options) {\r\n if (options === void 0) { options = {}; }\r\n var _c = __spreadValues({\r\n sortComparer: false,\r\n selectId: function (instance) { return instance.id; }\r\n }, options), selectId = _c.selectId, sortComparer = _c.sortComparer;\r\n var stateFactory = createInitialStateFactory();\r\n var selectorsFactory = createSelectorsFactory();\r\n var stateAdapter = sortComparer ? createSortedStateAdapter(selectId, sortComparer) : createUnsortedStateAdapter(selectId);\r\n return __spreadValues(__spreadValues(__spreadValues({\r\n selectId: selectId,\r\n sortComparer: sortComparer\r\n }, stateFactory), selectorsFactory), stateAdapter);\r\n}\r\n// src/nanoid.ts\r\nvar urlAlphabet = \"ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW\";\r\nvar nanoid = function (size) {\r\n if (size === void 0) { size = 21; }\r\n var id = \"\";\r\n var i = size;\r\n while (i--) {\r\n id += urlAlphabet[Math.random() * 64 | 0];\r\n }\r\n return id;\r\n};\r\n// src/createAsyncThunk.ts\r\nvar commonProperties = [\r\n \"name\",\r\n \"message\",\r\n \"stack\",\r\n \"code\"\r\n];\r\nvar RejectWithValue = /** @class */ (function () {\r\n function RejectWithValue(payload, meta) {\r\n this.payload = payload;\r\n this.meta = meta;\r\n }\r\n return RejectWithValue;\r\n}());\r\nvar FulfillWithMeta = /** @class */ (function () {\r\n function FulfillWithMeta(payload, meta) {\r\n this.payload = payload;\r\n this.meta = meta;\r\n }\r\n return FulfillWithMeta;\r\n}());\r\nvar miniSerializeError = function (value) {\r\n if (typeof value === \"object\" && value !== null) {\r\n var simpleError = {};\r\n for (var _i = 0, commonProperties_1 = commonProperties; _i < commonProperties_1.length; _i++) {\r\n var property = commonProperties_1[_i];\r\n if (typeof value[property] === \"string\") {\r\n simpleError[property] = value[property];\r\n }\r\n }\r\n return simpleError;\r\n }\r\n return { message: String(value) };\r\n};\r\nvar createAsyncThunk = (function () {\r\n function createAsyncThunk2(typePrefix, payloadCreator, options) {\r\n var fulfilled = createAction(typePrefix + \"/fulfilled\", function (payload, requestId, arg, meta) { return ({\r\n payload: payload,\r\n meta: __spreadProps(__spreadValues({}, meta || {}), {\r\n arg: arg,\r\n requestId: requestId,\r\n requestStatus: \"fulfilled\"\r\n })\r\n }); });\r\n var pending = createAction(typePrefix + \"/pending\", function (requestId, arg, meta) { return ({\r\n payload: void 0,\r\n meta: __spreadProps(__spreadValues({}, meta || {}), {\r\n arg: arg,\r\n requestId: requestId,\r\n requestStatus: \"pending\"\r\n })\r\n }); });\r\n var rejected = createAction(typePrefix + \"/rejected\", function (error, requestId, arg, payload, meta) { return ({\r\n payload: payload,\r\n error: (options && options.serializeError || miniSerializeError)(error || \"Rejected\"),\r\n meta: __spreadProps(__spreadValues({}, meta || {}), {\r\n arg: arg,\r\n requestId: requestId,\r\n rejectedWithValue: !!payload,\r\n requestStatus: \"rejected\",\r\n aborted: (error == null ? void 0 : error.name) === \"AbortError\",\r\n condition: (error == null ? void 0 : error.name) === \"ConditionError\"\r\n })\r\n }); });\r\n var displayedWarning = false;\r\n var AC = typeof AbortController !== \"undefined\" ? AbortController : /** @class */ (function () {\r\n function class_1() {\r\n this.signal = {\r\n aborted: false,\r\n addEventListener: function () {\r\n },\r\n dispatchEvent: function () {\r\n return false;\r\n },\r\n onabort: function () {\r\n },\r\n removeEventListener: function () {\r\n },\r\n reason: void 0,\r\n throwIfAborted: function () {\r\n }\r\n };\r\n }\r\n class_1.prototype.abort = function () {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (!displayedWarning) {\r\n displayedWarning = true;\r\n console.info(\"This platform does not implement AbortController. \\nIf you want to use the AbortController to react to `abort` events, please consider importing a polyfill like 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'.\");\r\n }\r\n }\r\n };\r\n return class_1;\r\n }());\r\n function actionCreator(arg) {\r\n return function (dispatch, getState, extra) {\r\n var requestId = (options == null ? void 0 : options.idGenerator) ? options.idGenerator(arg) : nanoid();\r\n var abortController = new AC();\r\n var abortReason;\r\n var started = false;\r\n function abort(reason) {\r\n abortReason = reason;\r\n abortController.abort();\r\n }\r\n var promise2 = function () {\r\n return __async(this, null, function () {\r\n var _a, _b, finalAction, conditionResult, abortedPromise, err_1, skipDispatch;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n _c.trys.push([0, 4, , 5]);\r\n conditionResult = (_a = options == null ? void 0 : options.condition) == null ? void 0 : _a.call(options, arg, { getState: getState, extra: extra });\r\n if (!isThenable(conditionResult)) return [3 /*break*/, 2];\r\n return [4 /*yield*/, conditionResult];\r\n case 1:\r\n conditionResult = _c.sent();\r\n _c.label = 2;\r\n case 2:\r\n if (conditionResult === false || abortController.signal.aborted) {\r\n throw {\r\n name: \"ConditionError\",\r\n message: \"Aborted due to condition callback returning false.\"\r\n };\r\n }\r\n started = true;\r\n abortedPromise = new Promise(function (_, reject) { return abortController.signal.addEventListener(\"abort\", function () { return reject({\r\n name: \"AbortError\",\r\n message: abortReason || \"Aborted\"\r\n }); }); });\r\n dispatch(pending(requestId, arg, (_b = options == null ? void 0 : options.getPendingMeta) == null ? void 0 : _b.call(options, { requestId: requestId, arg: arg }, { getState: getState, extra: extra })));\r\n return [4 /*yield*/, Promise.race([\r\n abortedPromise,\r\n Promise.resolve(payloadCreator(arg, {\r\n dispatch: dispatch,\r\n getState: getState,\r\n extra: extra,\r\n requestId: requestId,\r\n signal: abortController.signal,\r\n abort: abort,\r\n rejectWithValue: function (value, meta) {\r\n return new RejectWithValue(value, meta);\r\n },\r\n fulfillWithValue: function (value, meta) {\r\n return new FulfillWithMeta(value, meta);\r\n }\r\n })).then(function (result) {\r\n if (result instanceof RejectWithValue) {\r\n throw result;\r\n }\r\n if (result instanceof FulfillWithMeta) {\r\n return fulfilled(result.payload, requestId, arg, result.meta);\r\n }\r\n return fulfilled(result, requestId, arg);\r\n })\r\n ])];\r\n case 3:\r\n finalAction = _c.sent();\r\n return [3 /*break*/, 5];\r\n case 4:\r\n err_1 = _c.sent();\r\n finalAction = err_1 instanceof RejectWithValue ? rejected(null, requestId, arg, err_1.payload, err_1.meta) : rejected(err_1, requestId, arg);\r\n return [3 /*break*/, 5];\r\n case 5:\r\n skipDispatch = options && !options.dispatchConditionRejection && rejected.match(finalAction) && finalAction.meta.condition;\r\n if (!skipDispatch) {\r\n dispatch(finalAction);\r\n }\r\n return [2 /*return*/, finalAction];\r\n }\r\n });\r\n });\r\n }();\r\n return Object.assign(promise2, {\r\n abort: abort,\r\n requestId: requestId,\r\n arg: arg,\r\n unwrap: function () {\r\n return promise2.then(unwrapResult);\r\n }\r\n });\r\n };\r\n }\r\n return Object.assign(actionCreator, {\r\n pending: pending,\r\n rejected: rejected,\r\n fulfilled: fulfilled,\r\n typePrefix: typePrefix\r\n });\r\n }\r\n createAsyncThunk2.withTypes = function () { return createAsyncThunk2; };\r\n return createAsyncThunk2;\r\n})();\r\nfunction unwrapResult(action) {\r\n if (action.meta && action.meta.rejectedWithValue) {\r\n throw action.payload;\r\n }\r\n if (action.error) {\r\n throw action.error;\r\n }\r\n return action.payload;\r\n}\r\nfunction isThenable(value) {\r\n return value !== null && typeof value === \"object\" && typeof value.then === \"function\";\r\n}\r\n// src/tsHelpers.ts\r\nvar hasMatchFunction = function (v) {\r\n return v && typeof v.match === \"function\";\r\n};\r\n// src/matchers.ts\r\nvar matches = function (matcher, action) {\r\n if (hasMatchFunction(matcher)) {\r\n return matcher.match(action);\r\n }\r\n else {\r\n return matcher(action);\r\n }\r\n};\r\nfunction isAnyOf() {\r\n var matchers = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n matchers[_i] = arguments[_i];\r\n }\r\n return function (action) {\r\n return matchers.some(function (matcher) { return matches(matcher, action); });\r\n };\r\n}\r\nfunction isAllOf() {\r\n var matchers = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n matchers[_i] = arguments[_i];\r\n }\r\n return function (action) {\r\n return matchers.every(function (matcher) { return matches(matcher, action); });\r\n };\r\n}\r\nfunction hasExpectedRequestMetadata(action, validStatus) {\r\n if (!action || !action.meta)\r\n return false;\r\n var hasValidRequestId = typeof action.meta.requestId === \"string\";\r\n var hasValidRequestStatus = validStatus.indexOf(action.meta.requestStatus) > -1;\r\n return hasValidRequestId && hasValidRequestStatus;\r\n}\r\nfunction isAsyncThunkArray(a) {\r\n return typeof a[0] === \"function\" && \"pending\" in a[0] && \"fulfilled\" in a[0] && \"rejected\" in a[0];\r\n}\r\nfunction isPending() {\r\n var asyncThunks = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n asyncThunks[_i] = arguments[_i];\r\n }\r\n if (asyncThunks.length === 0) {\r\n return function (action) { return hasExpectedRequestMetadata(action, [\"pending\"]); };\r\n }\r\n if (!isAsyncThunkArray(asyncThunks)) {\r\n return isPending()(asyncThunks[0]);\r\n }\r\n return function (action) {\r\n var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.pending; });\r\n var combinedMatcher = isAnyOf.apply(void 0, matchers);\r\n return combinedMatcher(action);\r\n };\r\n}\r\nfunction isRejected() {\r\n var asyncThunks = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n asyncThunks[_i] = arguments[_i];\r\n }\r\n if (asyncThunks.length === 0) {\r\n return function (action) { return hasExpectedRequestMetadata(action, [\"rejected\"]); };\r\n }\r\n if (!isAsyncThunkArray(asyncThunks)) {\r\n return isRejected()(asyncThunks[0]);\r\n }\r\n return function (action) {\r\n var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.rejected; });\r\n var combinedMatcher = isAnyOf.apply(void 0, matchers);\r\n return combinedMatcher(action);\r\n };\r\n}\r\nfunction isRejectedWithValue() {\r\n var asyncThunks = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n asyncThunks[_i] = arguments[_i];\r\n }\r\n var hasFlag = function (action) {\r\n return action && action.meta && action.meta.rejectedWithValue;\r\n };\r\n if (asyncThunks.length === 0) {\r\n return function (action) {\r\n var combinedMatcher = isAllOf(isRejected.apply(void 0, asyncThunks), hasFlag);\r\n return combinedMatcher(action);\r\n };\r\n }\r\n if (!isAsyncThunkArray(asyncThunks)) {\r\n return isRejectedWithValue()(asyncThunks[0]);\r\n }\r\n return function (action) {\r\n var combinedMatcher = isAllOf(isRejected.apply(void 0, asyncThunks), hasFlag);\r\n return combinedMatcher(action);\r\n };\r\n}\r\nfunction isFulfilled() {\r\n var asyncThunks = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n asyncThunks[_i] = arguments[_i];\r\n }\r\n if (asyncThunks.length === 0) {\r\n return function (action) { return hasExpectedRequestMetadata(action, [\"fulfilled\"]); };\r\n }\r\n if (!isAsyncThunkArray(asyncThunks)) {\r\n return isFulfilled()(asyncThunks[0]);\r\n }\r\n return function (action) {\r\n var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.fulfilled; });\r\n var combinedMatcher = isAnyOf.apply(void 0, matchers);\r\n return combinedMatcher(action);\r\n };\r\n}\r\nfunction isAsyncThunkAction() {\r\n var asyncThunks = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n asyncThunks[_i] = arguments[_i];\r\n }\r\n if (asyncThunks.length === 0) {\r\n return function (action) { return hasExpectedRequestMetadata(action, [\"pending\", \"fulfilled\", \"rejected\"]); };\r\n }\r\n if (!isAsyncThunkArray(asyncThunks)) {\r\n return isAsyncThunkAction()(asyncThunks[0]);\r\n }\r\n return function (action) {\r\n var matchers = [];\r\n for (var _i = 0, asyncThunks_1 = asyncThunks; _i < asyncThunks_1.length; _i++) {\r\n var asyncThunk = asyncThunks_1[_i];\r\n matchers.push(asyncThunk.pending, asyncThunk.rejected, asyncThunk.fulfilled);\r\n }\r\n var combinedMatcher = isAnyOf.apply(void 0, matchers);\r\n return combinedMatcher(action);\r\n };\r\n}\r\n// src/listenerMiddleware/utils.ts\r\nvar assertFunction = function (func, expected) {\r\n if (typeof func !== \"function\") {\r\n throw new TypeError(expected + \" is not a function\");\r\n }\r\n};\r\nvar noop = function () {\r\n};\r\nvar catchRejection = function (promise2, onError) {\r\n if (onError === void 0) { onError = noop; }\r\n promise2.catch(onError);\r\n return promise2;\r\n};\r\nvar addAbortSignalListener = function (abortSignal, callback) {\r\n abortSignal.addEventListener(\"abort\", callback, { once: true });\r\n return function () { return abortSignal.removeEventListener(\"abort\", callback); };\r\n};\r\nvar abortControllerWithReason = function (abortController, reason) {\r\n var signal = abortController.signal;\r\n if (signal.aborted) {\r\n return;\r\n }\r\n if (!(\"reason\" in signal)) {\r\n Object.defineProperty(signal, \"reason\", {\r\n enumerable: true,\r\n value: reason,\r\n configurable: true,\r\n writable: true\r\n });\r\n }\r\n ;\r\n abortController.abort(reason);\r\n};\r\n// src/listenerMiddleware/exceptions.ts\r\nvar task = \"task\";\r\nvar listener = \"listener\";\r\nvar completed = \"completed\";\r\nvar cancelled = \"cancelled\";\r\nvar taskCancelled = \"task-\" + cancelled;\r\nvar taskCompleted = \"task-\" + completed;\r\nvar listenerCancelled = listener + \"-\" + cancelled;\r\nvar listenerCompleted = listener + \"-\" + completed;\r\nvar TaskAbortError = /** @class */ (function () {\r\n function TaskAbortError(code) {\r\n this.code = code;\r\n this.name = \"TaskAbortError\";\r\n this.message = task + \" \" + cancelled + \" (reason: \" + code + \")\";\r\n }\r\n return TaskAbortError;\r\n}());\r\n// src/listenerMiddleware/task.ts\r\nvar validateActive = function (signal) {\r\n if (signal.aborted) {\r\n throw new TaskAbortError(signal.reason);\r\n }\r\n};\r\nfunction raceWithSignal(signal, promise2) {\r\n var cleanup = noop;\r\n return new Promise(function (resolve, reject) {\r\n var notifyRejection = function () { return reject(new TaskAbortError(signal.reason)); };\r\n if (signal.aborted) {\r\n notifyRejection();\r\n return;\r\n }\r\n cleanup = addAbortSignalListener(signal, notifyRejection);\r\n promise2.finally(function () { return cleanup(); }).then(resolve, reject);\r\n }).finally(function () {\r\n cleanup = noop;\r\n });\r\n}\r\nvar runTask = function (task2, cleanUp) { return __async(void 0, null, function () {\r\n var value, error_1;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n _c.trys.push([0, 3, 4, 5]);\r\n return [4 /*yield*/, Promise.resolve()];\r\n case 1:\r\n _c.sent();\r\n return [4 /*yield*/, task2()];\r\n case 2:\r\n value = _c.sent();\r\n return [2 /*return*/, {\r\n status: \"ok\",\r\n value: value\r\n }];\r\n case 3:\r\n error_1 = _c.sent();\r\n return [2 /*return*/, {\r\n status: error_1 instanceof TaskAbortError ? \"cancelled\" : \"rejected\",\r\n error: error_1\r\n }];\r\n case 4:\r\n cleanUp == null ? void 0 : cleanUp();\r\n return [7 /*endfinally*/];\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n}); };\r\nvar createPause = function (signal) {\r\n return function (promise2) {\r\n return catchRejection(raceWithSignal(signal, promise2).then(function (output) {\r\n validateActive(signal);\r\n return output;\r\n }));\r\n };\r\n};\r\nvar createDelay = function (signal) {\r\n var pause = createPause(signal);\r\n return function (timeoutMs) {\r\n return pause(new Promise(function (resolve) { return setTimeout(resolve, timeoutMs); }));\r\n };\r\n};\r\n// src/listenerMiddleware/index.ts\r\nvar assign = Object.assign;\r\nvar INTERNAL_NIL_TOKEN = {};\r\nvar alm = \"listenerMiddleware\";\r\nvar createFork = function (parentAbortSignal) {\r\n var linkControllers = function (controller) { return addAbortSignalListener(parentAbortSignal, function () { return abortControllerWithReason(controller, parentAbortSignal.reason); }); };\r\n return function (taskExecutor) {\r\n assertFunction(taskExecutor, \"taskExecutor\");\r\n var childAbortController = new AbortController();\r\n linkControllers(childAbortController);\r\n var result = runTask(function () { return __async(void 0, null, function () {\r\n var result2;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n validateActive(parentAbortSignal);\r\n validateActive(childAbortController.signal);\r\n return [4 /*yield*/, taskExecutor({\r\n pause: createPause(childAbortController.signal),\r\n delay: createDelay(childAbortController.signal),\r\n signal: childAbortController.signal\r\n })];\r\n case 1:\r\n result2 = _c.sent();\r\n validateActive(childAbortController.signal);\r\n return [2 /*return*/, result2];\r\n }\r\n });\r\n }); }, function () { return abortControllerWithReason(childAbortController, taskCompleted); });\r\n return {\r\n result: createPause(parentAbortSignal)(result),\r\n cancel: function () {\r\n abortControllerWithReason(childAbortController, taskCancelled);\r\n }\r\n };\r\n };\r\n};\r\nvar createTakePattern = function (startListening, signal) {\r\n var take = function (predicate, timeout) { return __async(void 0, null, function () {\r\n var unsubscribe, tuplePromise, promises, output;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n validateActive(signal);\r\n unsubscribe = function () {\r\n };\r\n tuplePromise = new Promise(function (resolve, reject) {\r\n var stopListening = startListening({\r\n predicate: predicate,\r\n effect: function (action, listenerApi) {\r\n listenerApi.unsubscribe();\r\n resolve([\r\n action,\r\n listenerApi.getState(),\r\n listenerApi.getOriginalState()\r\n ]);\r\n }\r\n });\r\n unsubscribe = function () {\r\n stopListening();\r\n reject();\r\n };\r\n });\r\n promises = [\r\n tuplePromise\r\n ];\r\n if (timeout != null) {\r\n promises.push(new Promise(function (resolve) { return setTimeout(resolve, timeout, null); }));\r\n }\r\n _c.label = 1;\r\n case 1:\r\n _c.trys.push([1, , 3, 4]);\r\n return [4 /*yield*/, raceWithSignal(signal, Promise.race(promises))];\r\n case 2:\r\n output = _c.sent();\r\n validateActive(signal);\r\n return [2 /*return*/, output];\r\n case 3:\r\n unsubscribe();\r\n return [7 /*endfinally*/];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n }); };\r\n return function (predicate, timeout) { return catchRejection(take(predicate, timeout)); };\r\n};\r\nvar getListenerEntryPropsFrom = function (options) {\r\n var type = options.type, actionCreator = options.actionCreator, matcher = options.matcher, predicate = options.predicate, effect = options.effect;\r\n if (type) {\r\n predicate = createAction(type).match;\r\n }\r\n else if (actionCreator) {\r\n type = actionCreator.type;\r\n predicate = actionCreator.match;\r\n }\r\n else if (matcher) {\r\n predicate = matcher;\r\n }\r\n else if (predicate) {\r\n }\r\n else {\r\n throw new Error(\"Creating or removing a listener requires one of the known fields for matching an action\");\r\n }\r\n assertFunction(effect, \"options.listener\");\r\n return { predicate: predicate, type: type, effect: effect };\r\n};\r\nvar createListenerEntry = function (options) {\r\n var _c = getListenerEntryPropsFrom(options), type = _c.type, predicate = _c.predicate, effect = _c.effect;\r\n var id = nanoid();\r\n var entry = {\r\n id: id,\r\n effect: effect,\r\n type: type,\r\n predicate: predicate,\r\n pending: new Set(),\r\n unsubscribe: function () {\r\n throw new Error(\"Unsubscribe not initialized\");\r\n }\r\n };\r\n return entry;\r\n};\r\nvar cancelActiveListeners = function (entry) {\r\n entry.pending.forEach(function (controller) {\r\n abortControllerWithReason(controller, listenerCancelled);\r\n });\r\n};\r\nvar createClearListenerMiddleware = function (listenerMap) {\r\n return function () {\r\n listenerMap.forEach(cancelActiveListeners);\r\n listenerMap.clear();\r\n };\r\n};\r\nvar safelyNotifyError = function (errorHandler, errorToNotify, errorInfo) {\r\n try {\r\n errorHandler(errorToNotify, errorInfo);\r\n }\r\n catch (errorHandlerError) {\r\n setTimeout(function () {\r\n throw errorHandlerError;\r\n }, 0);\r\n }\r\n};\r\nvar addListener = createAction(alm + \"/add\");\r\nvar clearAllListeners = createAction(alm + \"/removeAll\");\r\nvar removeListener = createAction(alm + \"/remove\");\r\nvar defaultErrorHandler = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n console.error.apply(console, __spreadArray([alm + \"/error\"], args));\r\n};\r\nfunction createListenerMiddleware(middlewareOptions) {\r\n var _this = this;\r\n if (middlewareOptions === void 0) { middlewareOptions = {}; }\r\n var listenerMap = new Map();\r\n var extra = middlewareOptions.extra, _c = middlewareOptions.onError, onError = _c === void 0 ? defaultErrorHandler : _c;\r\n assertFunction(onError, \"onError\");\r\n var insertEntry = function (entry) {\r\n entry.unsubscribe = function () { return listenerMap.delete(entry.id); };\r\n listenerMap.set(entry.id, entry);\r\n return function (cancelOptions) {\r\n entry.unsubscribe();\r\n if (cancelOptions == null ? void 0 : cancelOptions.cancelActive) {\r\n cancelActiveListeners(entry);\r\n }\r\n };\r\n };\r\n var findListenerEntry = function (comparator) {\r\n for (var _i = 0, _c = Array.from(listenerMap.values()); _i < _c.length; _i++) {\r\n var entry = _c[_i];\r\n if (comparator(entry)) {\r\n return entry;\r\n }\r\n }\r\n return void 0;\r\n };\r\n var startListening = function (options) {\r\n var entry = findListenerEntry(function (existingEntry) { return existingEntry.effect === options.effect; });\r\n if (!entry) {\r\n entry = createListenerEntry(options);\r\n }\r\n return insertEntry(entry);\r\n };\r\n var stopListening = function (options) {\r\n var _c = getListenerEntryPropsFrom(options), type = _c.type, effect = _c.effect, predicate = _c.predicate;\r\n var entry = findListenerEntry(function (entry2) {\r\n var matchPredicateOrType = typeof type === \"string\" ? entry2.type === type : entry2.predicate === predicate;\r\n return matchPredicateOrType && entry2.effect === effect;\r\n });\r\n if (entry) {\r\n entry.unsubscribe();\r\n if (options.cancelActive) {\r\n cancelActiveListeners(entry);\r\n }\r\n }\r\n return !!entry;\r\n };\r\n var notifyListener = function (entry, action, api, getOriginalState) { return __async(_this, null, function () {\r\n var internalTaskController, take, listenerError_1;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n internalTaskController = new AbortController();\r\n take = createTakePattern(startListening, internalTaskController.signal);\r\n _c.label = 1;\r\n case 1:\r\n _c.trys.push([1, 3, 4, 5]);\r\n entry.pending.add(internalTaskController);\r\n return [4 /*yield*/, Promise.resolve(entry.effect(action, assign({}, api, {\r\n getOriginalState: getOriginalState,\r\n condition: function (predicate, timeout) { return take(predicate, timeout).then(Boolean); },\r\n take: take,\r\n delay: createDelay(internalTaskController.signal),\r\n pause: createPause(internalTaskController.signal),\r\n extra: extra,\r\n signal: internalTaskController.signal,\r\n fork: createFork(internalTaskController.signal),\r\n unsubscribe: entry.unsubscribe,\r\n subscribe: function () {\r\n listenerMap.set(entry.id, entry);\r\n },\r\n cancelActiveListeners: function () {\r\n entry.pending.forEach(function (controller, _, set) {\r\n if (controller !== internalTaskController) {\r\n abortControllerWithReason(controller, listenerCancelled);\r\n set.delete(controller);\r\n }\r\n });\r\n }\r\n })))];\r\n case 2:\r\n _c.sent();\r\n return [3 /*break*/, 5];\r\n case 3:\r\n listenerError_1 = _c.sent();\r\n if (!(listenerError_1 instanceof TaskAbortError)) {\r\n safelyNotifyError(onError, listenerError_1, {\r\n raisedBy: \"effect\"\r\n });\r\n }\r\n return [3 /*break*/, 5];\r\n case 4:\r\n abortControllerWithReason(internalTaskController, listenerCompleted);\r\n entry.pending.delete(internalTaskController);\r\n return [7 /*endfinally*/];\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n }); };\r\n var clearListenerMiddleware = createClearListenerMiddleware(listenerMap);\r\n var middleware = function (api) { return function (next) { return function (action) {\r\n if (addListener.match(action)) {\r\n return startListening(action.payload);\r\n }\r\n if (clearAllListeners.match(action)) {\r\n clearListenerMiddleware();\r\n return;\r\n }\r\n if (removeListener.match(action)) {\r\n return stopListening(action.payload);\r\n }\r\n var originalState = api.getState();\r\n var getOriginalState = function () {\r\n if (originalState === INTERNAL_NIL_TOKEN) {\r\n throw new Error(alm + \": getOriginalState can only be called synchronously\");\r\n }\r\n return originalState;\r\n };\r\n var result;\r\n try {\r\n result = next(action);\r\n if (listenerMap.size > 0) {\r\n var currentState = api.getState();\r\n var listenerEntries = Array.from(listenerMap.values());\r\n for (var _i = 0, listenerEntries_1 = listenerEntries; _i < listenerEntries_1.length; _i++) {\r\n var entry = listenerEntries_1[_i];\r\n var runListener = false;\r\n try {\r\n runListener = entry.predicate(action, currentState, originalState);\r\n }\r\n catch (predicateError) {\r\n runListener = false;\r\n safelyNotifyError(onError, predicateError, {\r\n raisedBy: \"predicate\"\r\n });\r\n }\r\n if (!runListener) {\r\n continue;\r\n }\r\n notifyListener(entry, action, api, getOriginalState);\r\n }\r\n }\r\n }\r\n finally {\r\n originalState = INTERNAL_NIL_TOKEN;\r\n }\r\n return result;\r\n }; }; };\r\n return {\r\n middleware: middleware,\r\n startListening: startListening,\r\n stopListening: stopListening,\r\n clearListeners: clearListenerMiddleware\r\n };\r\n}\r\n// src/autoBatchEnhancer.ts\r\nvar SHOULD_AUTOBATCH = \"RTK_autoBatch\";\r\nvar prepareAutoBatched = function () { return function (payload) {\r\n var _c;\r\n return ({\r\n payload: payload,\r\n meta: (_c = {}, _c[SHOULD_AUTOBATCH] = true, _c)\r\n });\r\n}; };\r\nvar promise;\r\nvar queueMicrotaskShim = typeof queueMicrotask === \"function\" ? queueMicrotask.bind(typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : globalThis) : function (cb) { return (promise || (promise = Promise.resolve())).then(cb).catch(function (err) { return setTimeout(function () {\r\n throw err;\r\n}, 0); }); };\r\nvar createQueueWithTimer = function (timeout) {\r\n return function (notify) {\r\n setTimeout(notify, timeout);\r\n };\r\n};\r\nvar rAF = typeof window !== \"undefined\" && window.requestAnimationFrame ? window.requestAnimationFrame : createQueueWithTimer(10);\r\nvar autoBatchEnhancer = function (options) {\r\n if (options === void 0) { options = { type: \"raf\" }; }\r\n return function (next) { return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var store = next.apply(void 0, args);\r\n var notifying = true;\r\n var shouldNotifyAtEndOfTick = false;\r\n var notificationQueued = false;\r\n var listeners = new Set();\r\n var queueCallback = options.type === \"tick\" ? queueMicrotaskShim : options.type === \"raf\" ? rAF : options.type === \"callback\" ? options.queueNotification : createQueueWithTimer(options.timeout);\r\n var notifyListeners = function () {\r\n notificationQueued = false;\r\n if (shouldNotifyAtEndOfTick) {\r\n shouldNotifyAtEndOfTick = false;\r\n listeners.forEach(function (l) { return l(); });\r\n }\r\n };\r\n return Object.assign({}, store, {\r\n subscribe: function (listener2) {\r\n var wrappedListener = function () { return notifying && listener2(); };\r\n var unsubscribe = store.subscribe(wrappedListener);\r\n listeners.add(listener2);\r\n return function () {\r\n unsubscribe();\r\n listeners.delete(listener2);\r\n };\r\n },\r\n dispatch: function (action) {\r\n var _a;\r\n try {\r\n notifying = !((_a = action == null ? void 0 : action.meta) == null ? void 0 : _a[SHOULD_AUTOBATCH]);\r\n shouldNotifyAtEndOfTick = !notifying;\r\n if (shouldNotifyAtEndOfTick) {\r\n if (!notificationQueued) {\r\n notificationQueued = true;\r\n queueCallback(notifyListeners);\r\n }\r\n }\r\n return store.dispatch(action);\r\n }\r\n finally {\r\n notifying = true;\r\n }\r\n }\r\n });\r\n }; };\r\n};\r\n// src/index.ts\r\nenableES5();\r\nexport { MiddlewareArray, SHOULD_AUTOBATCH, TaskAbortError, addListener, autoBatchEnhancer, clearAllListeners, configureStore, createAction, createAsyncThunk, createDraftSafeSelector, createEntityAdapter, createImmutableStateInvariantMiddleware, createListenerMiddleware, default2 as createNextState, createReducer, createSelector2 as createSelector, createSerializableStateInvariantMiddleware, createSlice, current2 as current, findNonSerializableValue, freeze, getDefaultMiddleware, getType, isAllOf, isAnyOf, isAsyncThunkAction, isDraft4 as isDraft, isFulfilled, isImmutableDefault, isPending, isPlain, isPlainObject, isRejected, isRejectedWithValue, miniSerializeError, nanoid, original, prepareAutoBatched, removeListener, unwrapResult };\r\n//# sourceMappingURL=redux-toolkit.esm.js.map","/* ***** BEGIN LICENSE BLOCK *****\n * Distributed under the BSD license:\n *\n * Copyright (c) 2010, Ajax.org B.V.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * * Neither the name of Ajax.org B.V. nor the\n * names of its contributors may be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * ***** END LICENSE BLOCK ***** */\n\n/**\n * Define a module along with a payload\n * @param module a name for the payload\n * @param payload a function to call with (require, exports, module) params\n */\n\n(function() {\n\nvar ACE_NAMESPACE = \"ace\";\n\nvar global = (function() { return this; })();\nif (!global && typeof window != \"undefined\") global = window; // strict mode\n\n\nif (!ACE_NAMESPACE && typeof requirejs !== \"undefined\")\n return;\n\n\nvar define = function(module, deps, payload) {\n if (typeof module !== \"string\") {\n if (define.original)\n define.original.apply(this, arguments);\n else {\n console.error(\"dropping module because define wasn\\'t a string.\");\n console.trace();\n }\n return;\n }\n if (arguments.length == 2)\n payload = deps;\n if (!define.modules[module]) {\n define.payloads[module] = payload;\n define.modules[module] = null;\n }\n};\n\ndefine.modules = {};\ndefine.payloads = {};\n\n/**\n * Get at functionality define()ed using the function above\n */\nvar _require = function(parentId, module, callback) {\n if (typeof module === \"string\") {\n var payload = lookup(parentId, module);\n if (payload != undefined) {\n callback && callback();\n return payload;\n }\n } else if (Object.prototype.toString.call(module) === \"[object Array]\") {\n var params = [];\n for (var i = 0, l = module.length; i < l; ++i) {\n var dep = lookup(parentId, module[i]);\n if (dep == undefined && require.original)\n return;\n params.push(dep);\n }\n return callback && callback.apply(null, params) || true;\n }\n};\n\nvar require = function(module, callback) {\n var packagedModule = _require(\"\", module, callback);\n if (packagedModule == undefined && require.original)\n return require.original.apply(this, arguments);\n return packagedModule;\n};\n\nvar normalizeModule = function(parentId, moduleName) {\n // normalize plugin requires\n if (moduleName.indexOf(\"!\") !== -1) {\n var chunks = moduleName.split(\"!\");\n return normalizeModule(parentId, chunks[0]) + \"!\" + normalizeModule(parentId, chunks[1]);\n }\n // normalize relative requires\n if (moduleName.charAt(0) == \".\") {\n var base = parentId.split(\"/\").slice(0, -1).join(\"/\");\n moduleName = base + \"/\" + moduleName;\n\n while(moduleName.indexOf(\".\") !== -1 && previous != moduleName) {\n var previous = moduleName;\n moduleName = moduleName.replace(/\\/\\.\\//, \"/\").replace(/[^\\/]+\\/\\.\\.\\//, \"\");\n }\n }\n return moduleName;\n};\n\n/**\n * Internal function to lookup moduleNames and resolve them by calling the\n * definition function if needed.\n */\nvar lookup = function(parentId, moduleName) {\n moduleName = normalizeModule(parentId, moduleName);\n\n var module = define.modules[moduleName];\n if (!module) {\n module = define.payloads[moduleName];\n if (typeof module === 'function') {\n var exports = {};\n var mod = {\n id: moduleName,\n uri: '',\n exports: exports,\n packaged: true\n };\n\n var req = function(module, callback) {\n return _require(moduleName, module, callback);\n };\n\n var returnValue = module(req, exports, mod);\n exports = returnValue || mod.exports;\n define.modules[moduleName] = exports;\n delete define.payloads[moduleName];\n }\n module = define.modules[moduleName] = exports || module;\n }\n return module;\n};\n\nfunction exportAce(ns) {\n var root = global;\n if (ns) {\n if (!global[ns])\n global[ns] = {};\n root = global[ns];\n }\n\n if (!root.define || !root.define.packaged) {\n define.original = root.define;\n root.define = define;\n root.define.packaged = true;\n }\n\n if (!root.require || !root.require.packaged) {\n require.original = root.require;\n root.require = require;\n root.require.packaged = true;\n }\n}\n\nexportAce(ACE_NAMESPACE);\n\n})();\n\nace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\nif (typeof Element != \"undefined\" && !Element.prototype.remove) {\n Object.defineProperty(Element.prototype, \"remove\", {\n enumerable: false,\n writable: true,\n configurable: true,\n value: function() { this.parentNode && this.parentNode.removeChild(this); }\n });\n}\n\n\n});\n\nace.define(\"ace/lib/useragent\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\nexports.OS = {\n LINUX: \"LINUX\",\n MAC: \"MAC\",\n WINDOWS: \"WINDOWS\"\n};\nexports.getOS = function() {\n if (exports.isMac) {\n return exports.OS.MAC;\n } else if (exports.isLinux) {\n return exports.OS.LINUX;\n } else {\n return exports.OS.WINDOWS;\n }\n};\nvar _navigator = typeof navigator == \"object\" ? navigator : {};\n\nvar os = (/mac|win|linux/i.exec(_navigator.platform) || [\"other\"])[0].toLowerCase();\nvar ua = _navigator.userAgent || \"\";\nvar appName = _navigator.appName || \"\";\nexports.isWin = (os == \"win\");\nexports.isMac = (os == \"mac\");\nexports.isLinux = (os == \"linux\");\nexports.isIE = \n (appName == \"Microsoft Internet Explorer\" || appName.indexOf(\"MSAppHost\") >= 0)\n ? parseFloat((ua.match(/(?:MSIE |Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1])\n : parseFloat((ua.match(/(?:Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1]); // for ie\n \nexports.isOldIE = exports.isIE && exports.isIE < 9;\nexports.isGecko = exports.isMozilla = ua.match(/ Gecko\\/\\d+/);\nexports.isOpera = typeof opera == \"object\" && Object.prototype.toString.call(window.opera) == \"[object Opera]\";\nexports.isWebKit = parseFloat(ua.split(\"WebKit/\")[1]) || undefined;\n\nexports.isChrome = parseFloat(ua.split(\" Chrome/\")[1]) || undefined;\n\nexports.isEdge = parseFloat(ua.split(\" Edge/\")[1]) || undefined;\n\nexports.isAIR = ua.indexOf(\"AdobeAIR\") >= 0;\n\nexports.isAndroid = ua.indexOf(\"Android\") >= 0;\n\nexports.isChromeOS = ua.indexOf(\" CrOS \") >= 0;\n\nexports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window.MSStream;\n\nif (exports.isIOS) exports.isMac = true;\n\nexports.isMobile = exports.isIOS || exports.isAndroid;\n\n});\n\nace.define(\"ace/lib/dom\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar useragent = require(\"./useragent\"); \nvar XHTML_NS = \"http://www.w3.org/1999/xhtml\";\n\nexports.buildDom = function buildDom(arr, parent, refs) {\n if (typeof arr == \"string\" && arr) {\n var txt = document.createTextNode(arr);\n if (parent)\n parent.appendChild(txt);\n return txt;\n }\n \n if (!Array.isArray(arr)) {\n if (arr && arr.appendChild && parent)\n parent.appendChild(arr);\n return arr;\n }\n if (typeof arr[0] != \"string\" || !arr[0]) {\n var els = [];\n for (var i = 0; i < arr.length; i++) {\n var ch = buildDom(arr[i], parent, refs);\n ch && els.push(ch);\n }\n return els;\n }\n \n var el = document.createElement(arr[0]);\n var options = arr[1];\n var childIndex = 1;\n if (options && typeof options == \"object\" && !Array.isArray(options))\n childIndex = 2;\n for (var i = childIndex; i < arr.length; i++)\n buildDom(arr[i], el, refs);\n if (childIndex == 2) {\n Object.keys(options).forEach(function(n) {\n var val = options[n];\n if (n === \"class\") {\n el.className = Array.isArray(val) ? val.join(\" \") : val;\n } else if (typeof val == \"function\" || n == \"value\" || n[0] == \"$\") {\n el[n] = val;\n } else if (n === \"ref\") {\n if (refs) refs[val] = el;\n } else if (n === \"style\") {\n if (typeof val == \"string\") el.style.cssText = val;\n } else if (val != null) {\n el.setAttribute(n, val);\n }\n });\n }\n if (parent)\n parent.appendChild(el);\n return el;\n};\n\nexports.getDocumentHead = function(doc) {\n if (!doc)\n doc = document;\n return doc.head || doc.getElementsByTagName(\"head\")[0] || doc.documentElement;\n};\n\nexports.createElement = function(tag, ns) {\n return document.createElementNS ?\n document.createElementNS(ns || XHTML_NS, tag) :\n document.createElement(tag);\n};\n\nexports.removeChildren = function(element) {\n element.innerHTML = \"\";\n};\n\nexports.createTextNode = function(textContent, element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createTextNode(textContent);\n};\n\nexports.createFragment = function(element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createDocumentFragment();\n};\n\nexports.hasCssClass = function(el, name) {\n var classes = (el.className + \"\").split(/\\s+/g);\n return classes.indexOf(name) !== -1;\n};\nexports.addCssClass = function(el, name) {\n if (!exports.hasCssClass(el, name)) {\n el.className += \" \" + name;\n }\n};\nexports.removeCssClass = function(el, name) {\n var classes = el.className.split(/\\s+/g);\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n classes.splice(index, 1);\n }\n el.className = classes.join(\" \");\n};\n\nexports.toggleCssClass = function(el, name) {\n var classes = el.className.split(/\\s+/g), add = true;\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n add = false;\n classes.splice(index, 1);\n }\n if (add)\n classes.push(name);\n\n el.className = classes.join(\" \");\n return add;\n};\nexports.setCssClass = function(node, className, include) {\n if (include) {\n exports.addCssClass(node, className);\n } else {\n exports.removeCssClass(node, className);\n }\n};\n\nexports.hasCssString = function(id, doc) {\n var index = 0, sheets;\n doc = doc || document;\n if ((sheets = doc.querySelectorAll(\"style\"))) {\n while (index < sheets.length)\n if (sheets[index++].id === id)\n return true;\n }\n};\n\nvar strictCSP;\nvar cssCache = [];\nexports.useStrictCSP = function(value) {\n strictCSP = value;\n if (value == false) insertPendingStyles();\n else if (!cssCache) cssCache = [];\n};\n\nfunction insertPendingStyles() {\n var cache = cssCache;\n cssCache = null;\n cache && cache.forEach(function(item) {\n importCssString(item[0], item[1]);\n });\n}\n\nfunction importCssString(cssText, id, target) {\n if (typeof document == \"undefined\")\n return;\n if (cssCache) {\n if (target) {\n insertPendingStyles();\n } else if (target === false) {\n return cssCache.push([cssText, id]);\n }\n }\n if (strictCSP) return;\n\n var container = target;\n if (!target || !target.getRootNode) {\n container = document;\n } else {\n container = target.getRootNode();\n if (!container || container == target)\n container = document;\n }\n \n var doc = container.ownerDocument || container;\n if (id && exports.hasCssString(id, container))\n return null;\n \n if (id)\n cssText += \"\\n/*# sourceURL=ace/css/\" + id + \" */\";\n \n var style = exports.createElement(\"style\");\n style.appendChild(doc.createTextNode(cssText));\n if (id)\n style.id = id;\n\n if (container == doc)\n container = exports.getDocumentHead(doc);\n container.insertBefore(style, container.firstChild);\n}\nexports.importCssString = importCssString;\n\nexports.importCssStylsheet = function(uri, doc) {\n exports.buildDom([\"link\", {rel: \"stylesheet\", href: uri}], exports.getDocumentHead(doc));\n};\nexports.scrollbarWidth = function(document) {\n var inner = exports.createElement(\"ace_inner\");\n inner.style.width = \"100%\";\n inner.style.minWidth = \"0px\";\n inner.style.height = \"200px\";\n inner.style.display = \"block\";\n\n var outer = exports.createElement(\"ace_outer\");\n var style = outer.style;\n\n style.position = \"absolute\";\n style.left = \"-10000px\";\n style.overflow = \"hidden\";\n style.width = \"200px\";\n style.minWidth = \"0px\";\n style.height = \"150px\";\n style.display = \"block\";\n\n outer.appendChild(inner);\n\n var body = document.documentElement;\n body.appendChild(outer);\n\n var noScrollbar = inner.offsetWidth;\n\n style.overflow = \"scroll\";\n var withScrollbar = inner.offsetWidth;\n\n if (noScrollbar == withScrollbar) {\n withScrollbar = outer.clientWidth;\n }\n\n body.removeChild(outer);\n\n return noScrollbar-withScrollbar;\n};\n\nexports.computedStyle = function(element, style) {\n return window.getComputedStyle(element, \"\") || {};\n};\n\nexports.setStyle = function(styles, property, value) {\n if (styles[property] !== value) {\n styles[property] = value;\n }\n};\n\nexports.HAS_CSS_ANIMATION = false;\nexports.HAS_CSS_TRANSFORMS = false;\nexports.HI_DPI = useragent.isWin\n ? typeof window !== \"undefined\" && window.devicePixelRatio >= 1.5\n : true;\n\nif (useragent.isChromeOS) exports.HI_DPI = false;\n\nif (typeof document !== \"undefined\") {\n var div = document.createElement(\"div\");\n if (exports.HI_DPI && div.style.transform !== undefined)\n exports.HAS_CSS_TRANSFORMS = true;\n if (!useragent.isEdge && typeof div.style.animationName !== \"undefined\")\n exports.HAS_CSS_ANIMATION = true;\n div = null;\n}\n\nif (exports.HAS_CSS_TRANSFORMS) {\n exports.translate = function(element, tx, ty) {\n element.style.transform = \"translate(\" + Math.round(tx) + \"px, \" + Math.round(ty) +\"px)\";\n };\n} else {\n exports.translate = function(element, tx, ty) {\n element.style.top = Math.round(ty) + \"px\";\n element.style.left = Math.round(tx) + \"px\";\n };\n}\n\n});\n\nace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\n\nexports.inherits = function(ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n};\n\nexports.mixin = function(obj, mixin) {\n for (var key in mixin) {\n obj[key] = mixin[key];\n }\n return obj;\n};\n\nexports.implement = function(proto, mixin) {\n exports.mixin(proto, mixin);\n};\n\n});\n\nace.define(\"ace/lib/keys\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./oop\");\nvar Keys = (function() {\n var ret = {\n MODIFIER_KEYS: {\n 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta',\n 91: 'MetaLeft', 92: 'MetaRight', 93: 'ContextMenu'\n },\n\n KEY_MODS: {\n \"ctrl\": 1, \"alt\": 2, \"option\" : 2, \"shift\": 4,\n \"super\": 8, \"meta\": 8, \"command\": 8, \"cmd\": 8, \n \"control\": 1\n },\n\n FUNCTION_KEYS : {\n 8 : \"Backspace\",\n 9 : \"Tab\",\n 13 : \"Return\",\n 19 : \"Pause\",\n 27 : \"Esc\",\n 32 : \"Space\",\n 33 : \"PageUp\",\n 34 : \"PageDown\",\n 35 : \"End\",\n 36 : \"Home\",\n 37 : \"Left\",\n 38 : \"Up\",\n 39 : \"Right\",\n 40 : \"Down\",\n 44 : \"Print\",\n 45 : \"Insert\",\n 46 : \"Delete\",\n 96 : \"Numpad0\",\n 97 : \"Numpad1\",\n 98 : \"Numpad2\",\n 99 : \"Numpad3\",\n 100: \"Numpad4\",\n 101: \"Numpad5\",\n 102: \"Numpad6\",\n 103: \"Numpad7\",\n 104: \"Numpad8\",\n 105: \"Numpad9\",\n '-13': \"NumpadEnter\",\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 },\n\n PRINTABLE_KEYS: {\n 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5',\n 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a',\n 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h',\n 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o',\n 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v',\n 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.',\n 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`',\n 219: '[', 220: '\\\\',221: ']', 222: \"'\", 111: '/', 106: '*'\n }\n };\n var name, i;\n for (i in ret.FUNCTION_KEYS) {\n name = ret.FUNCTION_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n for (i in ret.PRINTABLE_KEYS) {\n name = ret.PRINTABLE_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n oop.mixin(ret, ret.MODIFIER_KEYS);\n oop.mixin(ret, ret.PRINTABLE_KEYS);\n oop.mixin(ret, ret.FUNCTION_KEYS);\n ret.enter = ret[\"return\"];\n ret.escape = ret.esc;\n ret.del = ret[\"delete\"];\n ret[173] = '-';\n \n (function() {\n var mods = [\"cmd\", \"ctrl\", \"alt\", \"shift\"];\n for (var i = Math.pow(2, mods.length); i--;) { \n ret.KEY_MODS[i] = mods.filter(function(x) {\n return i & ret.KEY_MODS[x];\n }).join(\"-\") + \"-\";\n }\n })();\n\n ret.KEY_MODS[0] = \"\";\n ret.KEY_MODS[-1] = \"input-\";\n\n return ret;\n})();\noop.mixin(exports, Keys);\n\nexports.keyCodeToString = function(keyCode) {\n var keyString = Keys[keyCode];\n if (typeof keyString != \"string\")\n keyString = String.fromCharCode(keyCode);\n return keyString.toLowerCase();\n};\n\n});\n\nace.define(\"ace/lib/event\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar keys = require(\"./keys\");\nvar useragent = require(\"./useragent\");\n\nvar pressedKeys = null;\nvar ts = 0;\n\nvar activeListenerOptions;\nfunction detectListenerOptionsSupport() {\n activeListenerOptions = false;\n try {\n document.createComment(\"\").addEventListener(\"test\", function() {}, { \n get passive() { \n activeListenerOptions = {passive: false};\n }\n });\n } catch(e) {}\n}\n\nfunction getListenerOptions() {\n if (activeListenerOptions == undefined)\n detectListenerOptionsSupport();\n return activeListenerOptions;\n}\n\nfunction EventListener(elem, type, callback) {\n this.elem = elem;\n this.type = type;\n this.callback = callback;\n}\nEventListener.prototype.destroy = function() {\n removeListener(this.elem, this.type, this.callback);\n this.elem = this.type = this.callback = undefined;\n};\n\nvar addListener = exports.addListener = function(elem, type, callback, destroyer) {\n elem.addEventListener(type, callback, getListenerOptions());\n if (destroyer)\n destroyer.$toDestroy.push(new EventListener(elem, type, callback));\n};\n\nvar removeListener = exports.removeListener = function(elem, type, callback) {\n elem.removeEventListener(type, callback, getListenerOptions());\n};\nexports.stopEvent = function(e) {\n exports.stopPropagation(e);\n exports.preventDefault(e);\n return false;\n};\n\nexports.stopPropagation = function(e) {\n if (e.stopPropagation)\n e.stopPropagation();\n};\n\nexports.preventDefault = function(e) {\n if (e.preventDefault)\n e.preventDefault();\n};\nexports.getButton = function(e) {\n if (e.type == \"dblclick\")\n return 0;\n if (e.type == \"contextmenu\" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey)))\n return 2;\n return e.button;\n};\n\nexports.capture = function(el, eventHandler, releaseCaptureHandler) {\n var ownerDocument = el && el.ownerDocument || document;\n function onMouseUp(e) {\n eventHandler && eventHandler(e);\n releaseCaptureHandler && releaseCaptureHandler(e);\n\n removeListener(ownerDocument, \"mousemove\", eventHandler);\n removeListener(ownerDocument, \"mouseup\", onMouseUp);\n removeListener(ownerDocument, \"dragstart\", onMouseUp);\n }\n\n addListener(ownerDocument, \"mousemove\", eventHandler);\n addListener(ownerDocument, \"mouseup\", onMouseUp);\n addListener(ownerDocument, \"dragstart\", onMouseUp);\n \n return onMouseUp;\n};\n\nexports.addMouseWheelListener = function(el, callback, destroyer) {\n if (\"onmousewheel\" in el) {\n addListener(el, \"mousewheel\", function(e) {\n var factor = 8;\n if (e.wheelDeltaX !== undefined) {\n e.wheelX = -e.wheelDeltaX / factor;\n e.wheelY = -e.wheelDeltaY / factor;\n } else {\n e.wheelX = 0;\n e.wheelY = -e.wheelDelta / factor;\n }\n callback(e);\n }, destroyer);\n } else if (\"onwheel\" in el) {\n addListener(el, \"wheel\", function(e) {\n var factor = 0.35;\n switch (e.deltaMode) {\n case e.DOM_DELTA_PIXEL:\n e.wheelX = e.deltaX * factor || 0;\n e.wheelY = e.deltaY * factor || 0;\n break;\n case e.DOM_DELTA_LINE:\n case e.DOM_DELTA_PAGE:\n e.wheelX = (e.deltaX || 0) * 5;\n e.wheelY = (e.deltaY || 0) * 5;\n break;\n }\n \n callback(e);\n }, destroyer);\n } else {\n addListener(el, \"DOMMouseScroll\", function(e) {\n if (e.axis && e.axis == e.HORIZONTAL_AXIS) {\n e.wheelX = (e.detail || 0) * 5;\n e.wheelY = 0;\n } else {\n e.wheelX = 0;\n e.wheelY = (e.detail || 0) * 5;\n }\n callback(e);\n }, destroyer);\n }\n};\n\nexports.addMultiMouseDownListener = function(elements, timeouts, eventHandler, callbackName, destroyer) {\n var clicks = 0;\n var startX, startY, timer; \n var eventNames = {\n 2: \"dblclick\",\n 3: \"tripleclick\",\n 4: \"quadclick\"\n };\n\n function onMousedown(e) {\n if (exports.getButton(e) !== 0) {\n clicks = 0;\n } else if (e.detail > 1) {\n clicks++;\n if (clicks > 4)\n clicks = 1;\n } else {\n clicks = 1;\n }\n if (useragent.isIE) {\n var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5;\n if (!timer || isNewClick)\n clicks = 1;\n if (timer)\n clearTimeout(timer);\n timer = setTimeout(function() {timer = null;}, timeouts[clicks - 1] || 600);\n\n if (clicks == 1) {\n startX = e.clientX;\n startY = e.clientY;\n }\n }\n \n e._clicks = clicks;\n\n eventHandler[callbackName](\"mousedown\", e);\n\n if (clicks > 4)\n clicks = 0;\n else if (clicks > 1)\n return eventHandler[callbackName](eventNames[clicks], e);\n }\n if (!Array.isArray(elements))\n elements = [elements];\n elements.forEach(function(el) {\n addListener(el, \"mousedown\", onMousedown, destroyer);\n });\n};\n\nvar getModifierHash = function(e) {\n return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);\n};\n\nexports.getModifierString = function(e) {\n return keys.KEY_MODS[getModifierHash(e)];\n};\n\nfunction normalizeCommandKeys(callback, e, keyCode) {\n var hashId = getModifierHash(e);\n\n if (!useragent.isMac && pressedKeys) {\n if (e.getModifierState && (e.getModifierState(\"OS\") || e.getModifierState(\"Win\")))\n hashId |= 8;\n if (pressedKeys.altGr) {\n if ((3 & hashId) != 3)\n pressedKeys.altGr = 0;\n else\n return;\n }\n if (keyCode === 18 || keyCode === 17) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (keyCode === 17 && location === 1) {\n if (pressedKeys[keyCode] == 1)\n ts = e.timeStamp;\n } else if (keyCode === 18 && hashId === 3 && location === 2) {\n var dt = e.timeStamp - ts;\n if (dt < 50)\n pressedKeys.altGr = true;\n }\n }\n }\n \n if (keyCode in keys.MODIFIER_KEYS) {\n keyCode = -1;\n }\n \n if (!hashId && keyCode === 13) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (location === 3) {\n callback(e, hashId, -keyCode);\n if (e.defaultPrevented)\n return;\n }\n }\n \n if (useragent.isChromeOS && hashId & 8) {\n callback(e, hashId, keyCode);\n if (e.defaultPrevented)\n return;\n else\n hashId &= ~8;\n }\n if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) {\n return false;\n }\n \n return callback(e, hashId, keyCode);\n}\n\n\nexports.addCommandKeyListener = function(el, callback, destroyer) {\n if (useragent.isOldGecko || (useragent.isOpera && !(\"KeyboardEvent\" in window))) {\n var lastKeyDownKeyCode = null;\n addListener(el, \"keydown\", function(e) {\n lastKeyDownKeyCode = e.keyCode;\n }, destroyer);\n addListener(el, \"keypress\", function(e) {\n return normalizeCommandKeys(callback, e, lastKeyDownKeyCode);\n }, destroyer);\n } else {\n var lastDefaultPrevented = null;\n\n addListener(el, \"keydown\", function(e) {\n pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1;\n var result = normalizeCommandKeys(callback, e, e.keyCode);\n lastDefaultPrevented = e.defaultPrevented;\n return result;\n }, destroyer);\n\n addListener(el, \"keypress\", function(e) {\n if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {\n exports.stopEvent(e);\n lastDefaultPrevented = null;\n }\n }, destroyer);\n\n addListener(el, \"keyup\", function(e) {\n pressedKeys[e.keyCode] = null;\n }, destroyer);\n\n if (!pressedKeys) {\n resetPressedKeys();\n addListener(window, \"focus\", resetPressedKeys);\n }\n }\n};\nfunction resetPressedKeys() {\n pressedKeys = Object.create(null);\n}\n\nif (typeof window == \"object\" && window.postMessage && !useragent.isOldIE) {\n var postMessageId = 1;\n exports.nextTick = function(callback, win) {\n win = win || window;\n var messageName = \"zero-timeout-message-\" + (postMessageId++);\n \n var listener = function(e) {\n if (e.data == messageName) {\n exports.stopPropagation(e);\n removeListener(win, \"message\", listener);\n callback();\n }\n };\n \n addListener(win, \"message\", listener);\n win.postMessage(messageName, \"*\");\n };\n}\n\nexports.$idleBlocked = false;\nexports.onIdle = function(cb, timeout) {\n return setTimeout(function handler() {\n if (!exports.$idleBlocked) {\n cb();\n } else {\n setTimeout(handler, 100);\n }\n }, timeout);\n};\n\nexports.$idleBlockId = null;\nexports.blockIdle = function(delay) {\n if (exports.$idleBlockId)\n clearTimeout(exports.$idleBlockId);\n \n exports.$idleBlocked = true;\n exports.$idleBlockId = setTimeout(function() {\n exports.$idleBlocked = false;\n }, delay || 100);\n};\n\nexports.nextFrame = typeof window == \"object\" && (window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || window.msRequestAnimationFrame\n || window.oRequestAnimationFrame);\n\nif (exports.nextFrame)\n exports.nextFrame = exports.nextFrame.bind(window);\nelse\n exports.nextFrame = function(callback) {\n setTimeout(callback, 17);\n };\n});\n\nace.define(\"ace/range\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\nvar comparePoints = function(p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\nvar Range = function(startRow, startColumn, endRow, endColumn) {\n this.start = {\n row: startRow,\n column: startColumn\n };\n\n this.end = {\n row: endRow,\n column: endColumn\n };\n};\n\n(function() {\n this.isEqual = function(range) {\n return this.start.row === range.start.row &&\n this.end.row === range.end.row &&\n this.start.column === range.start.column &&\n this.end.column === range.end.column;\n };\n this.toString = function() {\n return (\"Range: [\" + this.start.row + \"/\" + this.start.column +\n \"] -> [\" + this.end.row + \"/\" + this.end.column + \"]\");\n };\n\n this.contains = function(row, column) {\n return this.compare(row, column) == 0;\n };\n this.compareRange = function(range) {\n var cmp,\n end = range.end,\n start = range.start;\n\n cmp = this.compare(end.row, end.column);\n if (cmp == 1) {\n cmp = this.compare(start.row, start.column);\n if (cmp == 1) {\n return 2;\n } else if (cmp == 0) {\n return 1;\n } else {\n return 0;\n }\n } else if (cmp == -1) {\n return -2;\n } else {\n cmp = this.compare(start.row, start.column);\n if (cmp == -1) {\n return -1;\n } else if (cmp == 1) {\n return 42;\n } else {\n return 0;\n }\n }\n };\n this.comparePoint = function(p) {\n return this.compare(p.row, p.column);\n };\n this.containsRange = function(range) {\n return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;\n };\n this.intersects = function(range) {\n var cmp = this.compareRange(range);\n return (cmp == -1 || cmp == 0 || cmp == 1);\n };\n this.isEnd = function(row, column) {\n return this.end.row == row && this.end.column == column;\n };\n this.isStart = function(row, column) {\n return this.start.row == row && this.start.column == column;\n };\n this.setStart = function(row, column) {\n if (typeof row == \"object\") {\n this.start.column = row.column;\n this.start.row = row.row;\n } else {\n this.start.row = row;\n this.start.column = column;\n }\n };\n this.setEnd = function(row, column) {\n if (typeof row == \"object\") {\n this.end.column = row.column;\n this.end.row = row.row;\n } else {\n this.end.row = row;\n this.end.column = column;\n }\n };\n this.inside = function(row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column) || this.isStart(row, column)) {\n return false;\n } else {\n return true;\n }\n }\n return false;\n };\n this.insideStart = function(row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column)) {\n return false;\n } else {\n return true;\n }\n }\n return false;\n };\n this.insideEnd = function(row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isStart(row, column)) {\n return false;\n } else {\n return true;\n }\n }\n return false;\n };\n this.compare = function(row, column) {\n if (!this.isMultiLine()) {\n if (row === this.start.row) {\n return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);\n }\n }\n\n if (row < this.start.row)\n return -1;\n\n if (row > this.end.row)\n return 1;\n\n if (this.start.row === row)\n return column >= this.start.column ? 0 : -1;\n\n if (this.end.row === row)\n return column <= this.end.column ? 0 : 1;\n\n return 0;\n };\n this.compareStart = function(row, column) {\n if (this.start.row == row && this.start.column == column) {\n return -1;\n } else {\n return this.compare(row, column);\n }\n };\n this.compareEnd = function(row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n } else {\n return this.compare(row, column);\n }\n };\n this.compareInside = function(row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n } else if (this.start.row == row && this.start.column == column) {\n return -1;\n } else {\n return this.compare(row, column);\n }\n };\n this.clipRows = function(firstRow, lastRow) {\n if (this.end.row > lastRow)\n var end = {row: lastRow + 1, column: 0};\n else if (this.end.row < firstRow)\n var end = {row: firstRow, column: 0};\n\n if (this.start.row > lastRow)\n var start = {row: lastRow + 1, column: 0};\n else if (this.start.row < firstRow)\n var start = {row: firstRow, column: 0};\n\n return Range.fromPoints(start || this.start, end || this.end);\n };\n this.extend = function(row, column) {\n var cmp = this.compare(row, column);\n\n if (cmp == 0)\n return this;\n else if (cmp == -1)\n var start = {row: row, column: column};\n else\n var end = {row: row, column: column};\n\n return Range.fromPoints(start || this.start, end || this.end);\n };\n\n this.isEmpty = function() {\n return (this.start.row === this.end.row && this.start.column === this.end.column);\n };\n this.isMultiLine = function() {\n return (this.start.row !== this.end.row);\n };\n this.clone = function() {\n return Range.fromPoints(this.start, this.end);\n };\n this.collapseRows = function() {\n if (this.end.column == 0)\n return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0);\n else\n return new Range(this.start.row, 0, this.end.row, 0);\n };\n this.toScreenRange = function(session) {\n var screenPosStart = session.documentToScreenPosition(this.start);\n var screenPosEnd = session.documentToScreenPosition(this.end);\n\n return new Range(\n screenPosStart.row, screenPosStart.column,\n screenPosEnd.row, screenPosEnd.column\n );\n };\n this.moveBy = function(row, column) {\n this.start.row += row;\n this.start.column += column;\n this.end.row += row;\n this.end.column += column;\n };\n\n}).call(Range.prototype);\nRange.fromPoints = function(start, end) {\n return new Range(start.row, start.column, end.row, end.column);\n};\nRange.comparePoints = comparePoints;\n\nRange.comparePoints = function(p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\n\n\nexports.Range = Range;\n});\n\nace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\n\nexports.last = function(a) {\n return a[a.length - 1];\n};\n\nexports.stringReverse = function(string) {\n return string.split(\"\").reverse().join(\"\");\n};\n\nexports.stringRepeat = function (string, count) {\n var result = '';\n while (count > 0) {\n if (count & 1)\n result += string;\n\n if (count >>= 1)\n string += string;\n }\n return result;\n};\n\nvar trimBeginRegexp = /^\\s\\s*/;\nvar trimEndRegexp = /\\s\\s*$/;\n\nexports.stringTrimLeft = function (string) {\n return string.replace(trimBeginRegexp, '');\n};\n\nexports.stringTrimRight = function (string) {\n return string.replace(trimEndRegexp, '');\n};\n\nexports.copyObject = function(obj) {\n var copy = {};\n for (var key in obj) {\n copy[key] = obj[key];\n }\n return copy;\n};\n\nexports.copyArray = function(array){\n var copy = [];\n for (var i=0, l=array.length; i Date.now() - 50)\n return true;\n return $cancelT = false;\n },\n cancel: function() {\n $cancelT = Date.now();\n }\n};\n\n});\n\nace.define(\"ace/keyboard/textinput\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/clipboard\",\"ace/lib/keys\"], function(require, exports, module) {\n\"use strict\";\n\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar clipboard = require(\"../clipboard\");\nvar BROKEN_SETDATA = useragent.isChrome < 18;\nvar USE_IE_MIME_TYPE = useragent.isIE;\nvar HAS_FOCUS_ARGS = useragent.isChrome > 63;\nvar MAX_LINE_LENGTH = 400;\n\nvar KEYS = require(\"../lib/keys\");\nvar MODS = KEYS.KEY_MODS;\nvar isIOS = useragent.isIOS;\nvar valueResetRegex = isIOS ? /\\s/ : /\\n/;\nvar isMobile = useragent.isMobile;\n\nvar TextInput = function(parentNode, host) {\n var text = dom.createElement(\"textarea\");\n text.className = \"ace_text-input\";\n\n text.setAttribute(\"wrap\", \"off\");\n text.setAttribute(\"autocorrect\", \"off\");\n text.setAttribute(\"autocapitalize\", \"off\");\n text.setAttribute(\"spellcheck\", false);\n\n text.style.opacity = \"0\";\n parentNode.insertBefore(text, parentNode.firstChild);\n\n var copied = false;\n var pasted = false;\n var inComposition = false;\n var sendingText = false;\n var tempStyle = '';\n \n if (!isMobile)\n text.style.fontSize = \"1px\";\n\n var commandMode = false;\n var ignoreFocusEvents = false;\n \n var lastValue = \"\";\n var lastSelectionStart = 0;\n var lastSelectionEnd = 0;\n var lastRestoreEnd = 0;\n try { var isFocused = document.activeElement === text; } catch(e) {}\n \n event.addListener(text, \"blur\", function(e) {\n if (ignoreFocusEvents) return;\n host.onBlur(e);\n isFocused = false;\n }, host);\n event.addListener(text, \"focus\", function(e) {\n if (ignoreFocusEvents) return;\n isFocused = true;\n if (useragent.isEdge) {\n try {\n if (!document.hasFocus())\n return;\n } catch(e) {}\n }\n host.onFocus(e);\n if (useragent.isEdge)\n setTimeout(resetSelection);\n else\n resetSelection();\n }, host);\n this.$focusScroll = false;\n this.focus = function() {\n if (tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == \"browser\")\n return text.focus({ preventScroll: true });\n\n var top = text.style.top;\n text.style.position = \"fixed\";\n text.style.top = \"0px\";\n try {\n var isTransformed = text.getBoundingClientRect().top != 0;\n } catch(e) {\n return;\n }\n var ancestors = [];\n if (isTransformed) {\n var t = text.parentElement;\n while (t && t.nodeType == 1) {\n ancestors.push(t);\n t.setAttribute(\"ace_nocontext\", true);\n if (!t.parentElement && t.getRootNode)\n t = t.getRootNode().host;\n else\n t = t.parentElement;\n }\n }\n text.focus({ preventScroll: true });\n if (isTransformed) {\n ancestors.forEach(function(p) {\n p.removeAttribute(\"ace_nocontext\");\n });\n }\n setTimeout(function() {\n text.style.position = \"\";\n if (text.style.top == \"0px\")\n text.style.top = top;\n }, 0);\n };\n this.blur = function() {\n text.blur();\n };\n this.isFocused = function() {\n return isFocused;\n };\n \n host.on(\"beforeEndOperation\", function() {\n var curOp = host.curOp;\n var commandName = curOp && curOp.command && curOp.command.name;\n if (commandName == \"insertstring\")\n return;\n var isUserAction = commandName && (curOp.docChanged || curOp.selectionChanged);\n if (inComposition && isUserAction) {\n lastValue = text.value = \"\";\n onCompositionEnd();\n }\n resetSelection();\n });\n \n var resetSelection = isIOS\n ? function(value) {\n if (!isFocused || (copied && !value) || sendingText) return;\n if (!value) \n value = \"\";\n var newValue = \"\\n ab\" + value + \"cde fg\\n\";\n if (newValue != text.value)\n text.value = lastValue = newValue;\n \n var selectionStart = 4;\n var selectionEnd = 4 + (value.length || (host.selection.isEmpty() ? 0 : 1));\n\n if (lastSelectionStart != selectionStart || lastSelectionEnd != selectionEnd) {\n text.setSelectionRange(selectionStart, selectionEnd);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n }\n : function() {\n if (inComposition || sendingText)\n return;\n if (!isFocused && !afterContextMenu)\n return;\n inComposition = true;\n \n var selectionStart = 0;\n var selectionEnd = 0;\n var line = \"\";\n\n if (host.session) {\n var selection = host.selection;\n var range = selection.getRange();\n var row = selection.cursor.row;\n selectionStart = range.start.column;\n selectionEnd = range.end.column;\n line = host.session.getLine(row);\n\n if (range.start.row != row) {\n var prevLine = host.session.getLine(row - 1);\n selectionStart = range.start.row < row - 1 ? 0 : selectionStart;\n selectionEnd += prevLine.length + 1;\n line = prevLine + \"\\n\" + line;\n }\n else if (range.end.row != row) {\n var nextLine = host.session.getLine(row + 1);\n selectionEnd = range.end.row > row + 1 ? nextLine.length : selectionEnd;\n selectionEnd += line.length + 1;\n line = line + \"\\n\" + nextLine;\n }\n else if (isMobile && row > 0) {\n line = \"\\n\" + line;\n selectionEnd += 1;\n selectionStart += 1;\n }\n\n if (line.length > MAX_LINE_LENGTH) {\n if (selectionStart < MAX_LINE_LENGTH && selectionEnd < MAX_LINE_LENGTH) {\n line = line.slice(0, MAX_LINE_LENGTH);\n } else {\n line = \"\\n\";\n if (selectionStart == selectionEnd) {\n selectionStart = selectionEnd = 0;\n }\n else {\n selectionStart = 0;\n selectionEnd = 1;\n }\n }\n }\n }\n\n var newValue = line + \"\\n\\n\";\n if (newValue != lastValue) {\n text.value = lastValue = newValue;\n lastSelectionStart = lastSelectionEnd = newValue.length;\n }\n if (afterContextMenu) {\n lastSelectionStart = text.selectionStart;\n lastSelectionEnd = text.selectionEnd;\n }\n if (\n lastSelectionEnd != selectionEnd \n || lastSelectionStart != selectionStart \n || text.selectionEnd != lastSelectionEnd // on ie edge selectionEnd changes silently after the initialization\n ) {\n try {\n text.setSelectionRange(selectionStart, selectionEnd);\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n } catch(e){}\n }\n inComposition = false;\n };\n this.resetSelection = resetSelection;\n\n if (isFocused)\n host.onFocus();\n\n\n var isAllSelected = function(text) {\n return text.selectionStart === 0 && text.selectionEnd >= lastValue.length\n && text.value === lastValue && lastValue\n && text.selectionEnd !== lastSelectionEnd;\n };\n\n var onSelect = function(e) {\n if (inComposition)\n return;\n if (copied) {\n copied = false;\n } else if (isAllSelected(text)) {\n host.selectAll();\n resetSelection();\n } else if (isMobile && text.selectionStart != lastSelectionStart) {\n resetSelection();\n }\n };\n\n var inputHandler = null;\n this.setInputHandler = function(cb) {inputHandler = cb;};\n this.getInputHandler = function() {return inputHandler;};\n var afterContextMenu = false;\n \n var sendText = function(value, fromInput) {\n if (afterContextMenu)\n afterContextMenu = false;\n if (pasted) {\n resetSelection();\n if (value)\n host.onPaste(value);\n pasted = false;\n return \"\";\n } else {\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n \n var extendLeft = lastSelectionStart;\n var extendRight = lastValue.length - lastSelectionEnd;\n \n var inserted = value;\n var restoreStart = value.length - selectionStart;\n var restoreEnd = value.length - selectionEnd;\n \n var i = 0;\n while (extendLeft > 0 && lastValue[i] == value[i]) {\n i++;\n extendLeft--;\n }\n inserted = inserted.slice(i);\n i = 1;\n while (extendRight > 0 && lastValue.length - i > lastSelectionStart - 1 && lastValue[lastValue.length - i] == value[value.length - i]) {\n i++;\n extendRight--;\n }\n restoreStart -= i-1;\n restoreEnd -= i-1;\n var endIndex = inserted.length - i + 1;\n if (endIndex < 0) {\n extendLeft = -endIndex;\n endIndex = 0;\n } \n inserted = inserted.slice(0, endIndex);\n if (!fromInput && !inserted && !restoreStart && !extendLeft && !extendRight && !restoreEnd)\n return \"\";\n sendingText = true;\n var shouldReset = false;\n if (useragent.isAndroid && inserted == \". \") {\n inserted = \" \";\n shouldReset = true;\n }\n \n if (inserted && !extendLeft && !extendRight && !restoreStart && !restoreEnd || commandMode) {\n host.onTextInput(inserted);\n } else {\n host.onTextInput(inserted, {\n extendLeft: extendLeft,\n extendRight: extendRight,\n restoreStart: restoreStart,\n restoreEnd: restoreEnd\n });\n }\n sendingText = false;\n \n lastValue = value;\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n lastRestoreEnd = restoreEnd;\n return shouldReset ? \"\\n\" : inserted;\n }\n };\n var onInput = function(e) {\n if (inComposition)\n return onCompositionUpdate();\n if (e && e.inputType) {\n if (e.inputType == \"historyUndo\") return host.execCommand(\"undo\");\n if (e.inputType == \"historyRedo\") return host.execCommand(\"redo\");\n }\n var data = text.value;\n var inserted = sendText(data, true);\n if (\n data.length > MAX_LINE_LENGTH + 100 \n || valueResetRegex.test(inserted)\n || isMobile && lastSelectionStart < 1 && lastSelectionStart == lastSelectionEnd\n ) {\n resetSelection();\n }\n };\n \n var handleClipboardData = function(e, data, forceIEMime) {\n var clipboardData = e.clipboardData || window.clipboardData;\n if (!clipboardData || BROKEN_SETDATA)\n return;\n var mime = USE_IE_MIME_TYPE || forceIEMime ? \"Text\" : \"text/plain\";\n try {\n if (data) {\n return clipboardData.setData(mime, data) !== false;\n } else {\n return clipboardData.getData(mime);\n }\n } catch(e) {\n if (!forceIEMime)\n return handleClipboardData(e, data, true);\n }\n };\n\n var doCopy = function(e, isCut) {\n var data = host.getCopyText();\n if (!data)\n return event.preventDefault(e);\n\n if (handleClipboardData(e, data)) {\n if (isIOS) {\n resetSelection(data);\n copied = data;\n setTimeout(function () {\n copied = false;\n }, 10);\n }\n isCut ? host.onCut() : host.onCopy();\n event.preventDefault(e);\n } else {\n copied = true;\n text.value = data;\n text.select();\n setTimeout(function(){\n copied = false;\n resetSelection();\n isCut ? host.onCut() : host.onCopy();\n });\n }\n };\n \n var onCut = function(e) {\n doCopy(e, true);\n };\n \n var onCopy = function(e) {\n doCopy(e, false);\n };\n \n var onPaste = function(e) {\n var data = handleClipboardData(e);\n if (clipboard.pasteCancelled())\n return;\n if (typeof data == \"string\") {\n if (data)\n host.onPaste(data, e);\n if (useragent.isIE)\n setTimeout(resetSelection);\n event.preventDefault(e);\n }\n else {\n text.value = \"\";\n pasted = true;\n }\n };\n\n event.addCommandKeyListener(text, host.onCommandKey.bind(host), host);\n\n event.addListener(text, \"select\", onSelect, host);\n event.addListener(text, \"input\", onInput, host);\n\n event.addListener(text, \"cut\", onCut, host);\n event.addListener(text, \"copy\", onCopy, host);\n event.addListener(text, \"paste\", onPaste, host);\n if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) {\n event.addListener(parentNode, \"keydown\", function(e) {\n if ((useragent.isMac && !e.metaKey) || !e.ctrlKey)\n return;\n\n switch (e.keyCode) {\n case 67:\n onCopy(e);\n break;\n case 86:\n onPaste(e);\n break;\n case 88:\n onCut(e);\n break;\n }\n }, host);\n }\n var onCompositionStart = function(e) {\n if (inComposition || !host.onCompositionStart || host.$readOnly) \n return;\n \n inComposition = {};\n\n if (commandMode)\n return;\n \n if (e.data)\n inComposition.useTextareaForIME = false;\n \n setTimeout(onCompositionUpdate, 0);\n host._signal(\"compositionStart\");\n host.on(\"mousedown\", cancelComposition);\n \n var range = host.getSelectionRange();\n range.end.row = range.start.row;\n range.end.column = range.start.column;\n inComposition.markerRange = range;\n inComposition.selectionStart = lastSelectionStart;\n host.onCompositionStart(inComposition);\n \n if (inComposition.useTextareaForIME) {\n lastValue = text.value = \"\";\n lastSelectionStart = 0;\n lastSelectionEnd = 0;\n }\n else {\n if (text.msGetInputContext)\n inComposition.context = text.msGetInputContext();\n if (text.getInputContext)\n inComposition.context = text.getInputContext();\n }\n };\n\n var onCompositionUpdate = function() {\n if (!inComposition || !host.onCompositionUpdate || host.$readOnly)\n return;\n if (commandMode)\n return cancelComposition();\n \n if (inComposition.useTextareaForIME) {\n host.onCompositionUpdate(text.value);\n }\n else {\n var data = text.value;\n sendText(data);\n if (inComposition.markerRange) {\n if (inComposition.context) {\n inComposition.markerRange.start.column = inComposition.selectionStart\n = inComposition.context.compositionStartOffset;\n }\n inComposition.markerRange.end.column = inComposition.markerRange.start.column\n + lastSelectionEnd - inComposition.selectionStart + lastRestoreEnd;\n }\n }\n };\n\n var onCompositionEnd = function(e) {\n if (!host.onCompositionEnd || host.$readOnly) return;\n inComposition = false;\n host.onCompositionEnd();\n host.off(\"mousedown\", cancelComposition);\n if (e) onInput();\n };\n \n\n function cancelComposition() {\n ignoreFocusEvents = true;\n text.blur();\n text.focus();\n ignoreFocusEvents = false;\n }\n\n var syncComposition = lang.delayedCall(onCompositionUpdate, 50).schedule.bind(null, null);\n \n function onKeyup(e) {\n if (e.keyCode == 27 && text.value.length < text.selectionStart) {\n if (!inComposition)\n lastValue = text.value;\n lastSelectionStart = lastSelectionEnd = -1;\n resetSelection();\n }\n syncComposition();\n }\n\n event.addListener(text, \"compositionstart\", onCompositionStart, host);\n event.addListener(text, \"compositionupdate\", onCompositionUpdate, host);\n event.addListener(text, \"keyup\", onKeyup, host);\n event.addListener(text, \"keydown\", syncComposition, host);\n event.addListener(text, \"compositionend\", onCompositionEnd, host);\n\n this.getElement = function() {\n return text;\n };\n this.setCommandMode = function(value) {\n commandMode = value;\n text.readOnly = false;\n };\n \n this.setReadOnly = function(readOnly) {\n if (!commandMode)\n text.readOnly = readOnly;\n };\n\n this.setCopyWithEmptySelection = function(value) {\n };\n\n this.onContextMenu = function(e) {\n afterContextMenu = true;\n resetSelection();\n host._emit(\"nativecontextmenu\", {target: host, domEvent: e});\n this.moveToMouse(e, true);\n };\n \n this.moveToMouse = function(e, bringToFront) {\n if (!tempStyle)\n tempStyle = text.style.cssText;\n text.style.cssText = (bringToFront ? \"z-index:100000;\" : \"\")\n + (useragent.isIE ? \"opacity:0.1;\" : \"\")\n + \"text-indent: -\" + (lastSelectionStart + lastSelectionEnd) * host.renderer.characterWidth * 0.5 + \"px;\";\n\n var rect = host.container.getBoundingClientRect();\n var style = dom.computedStyle(host.container);\n var top = rect.top + (parseInt(style.borderTopWidth) || 0);\n var left = rect.left + (parseInt(rect.borderLeftWidth) || 0);\n var maxTop = rect.bottom - top - text.clientHeight -2;\n var move = function(e) {\n dom.translate(text, e.clientX - left - 2, Math.min(e.clientY - top - 2, maxTop));\n }; \n move(e);\n\n if (e.type != \"mousedown\")\n return;\n\n host.renderer.$isMousePressed = true;\n\n clearTimeout(closeTimeout);\n if (useragent.isWin)\n event.capture(host.container, move, onContextMenuClose);\n };\n\n this.onContextMenuClose = onContextMenuClose;\n var closeTimeout;\n function onContextMenuClose() {\n clearTimeout(closeTimeout);\n closeTimeout = setTimeout(function () {\n if (tempStyle) {\n text.style.cssText = tempStyle;\n tempStyle = '';\n }\n host.renderer.$isMousePressed = false;\n if (host.renderer.$keepTextAreaAtCursor)\n host.renderer.$moveTextAreaToCursor();\n }, 0);\n }\n\n var onContextMenu = function(e) {\n host.textInput.onContextMenu(e);\n onContextMenuClose();\n };\n event.addListener(text, \"mouseup\", onContextMenu, host);\n event.addListener(text, \"mousedown\", function(e) {\n e.preventDefault();\n onContextMenuClose();\n }, host);\n event.addListener(host.renderer.scroller, \"contextmenu\", onContextMenu, host);\n event.addListener(text, \"contextmenu\", onContextMenu, host);\n \n if (isIOS)\n addIosSelectionHandler(parentNode, host, text);\n\n function addIosSelectionHandler(parentNode, host, text) {\n var typingResetTimeout = null;\n var typing = false;\n \n text.addEventListener(\"keydown\", function (e) {\n if (typingResetTimeout) clearTimeout(typingResetTimeout);\n typing = true;\n }, true);\n\n text.addEventListener(\"keyup\", function (e) {\n typingResetTimeout = setTimeout(function () {\n typing = false;\n }, 100);\n }, true);\n var detectArrowKeys = function(e) {\n if (document.activeElement !== text) return;\n if (typing || inComposition || host.$mouseHandler.isMousePressed) return;\n\n if (copied) {\n return;\n }\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n \n var key = null;\n var modifier = 0;\n if (selectionStart == 0) {\n key = KEYS.up;\n } else if (selectionStart == 1) {\n key = KEYS.home;\n } else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd] == \"\\n\") {\n key = KEYS.end;\n } else if (selectionStart < lastSelectionStart && lastValue[selectionStart - 1] == \" \") {\n key = KEYS.left;\n modifier = MODS.option;\n } else if (\n selectionStart < lastSelectionStart\n || (\n selectionStart == lastSelectionStart \n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd\n )\n ) {\n key = KEYS.left;\n } else if (selectionEnd > lastSelectionEnd && lastValue.slice(0, selectionEnd).split(\"\\n\").length > 2) {\n key = KEYS.down;\n } else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd - 1] == \" \") {\n key = KEYS.right;\n modifier = MODS.option;\n } else if (\n selectionEnd > lastSelectionEnd\n || (\n selectionEnd == lastSelectionEnd \n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd\n )\n ) {\n key = KEYS.right;\n }\n \n if (selectionStart !== selectionEnd)\n modifier |= MODS.shift;\n\n if (key) {\n var result = host.onCommandKey({}, modifier, key);\n if (!result && host.commands) {\n key = KEYS.keyCodeToString(key);\n var command = host.commands.findKeyCommand(modifier, key);\n if (command)\n host.execCommand(command);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n resetSelection(\"\");\n }\n };\n document.addEventListener(\"selectionchange\", detectArrowKeys);\n host.on(\"destroy\", function() {\n document.removeEventListener(\"selectionchange\", detectArrowKeys);\n });\n }\n};\n\nexports.TextInput = TextInput;\nexports.$setUserAgentForTests = function(_isMobile, _isIOS) {\n isMobile = _isMobile;\n isIOS = _isIOS;\n};\n});\n\nace.define(\"ace/mouse/default_handlers\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar useragent = require(\"../lib/useragent\");\n\nvar DRAG_OFFSET = 0; // pixels\nvar SCROLL_COOLDOWN_T = 550; // milliseconds\n\nfunction DefaultHandlers(mouseHandler) {\n mouseHandler.$clickSelection = null;\n\n var editor = mouseHandler.editor;\n editor.setDefaultHandler(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n editor.setDefaultHandler(\"dblclick\", this.onDoubleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"tripleclick\", this.onTripleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"quadclick\", this.onQuadClick.bind(mouseHandler));\n editor.setDefaultHandler(\"mousewheel\", this.onMouseWheel.bind(mouseHandler));\n\n var exports = [\"select\", \"startSelect\", \"selectEnd\", \"selectAllEnd\", \"selectByWordsEnd\",\n \"selectByLinesEnd\", \"dragWait\", \"dragWaitEnd\", \"focusWait\"];\n\n exports.forEach(function(x) {\n mouseHandler[x] = this[x];\n }, this);\n\n mouseHandler.selectByLines = this.extendSelectionBy.bind(mouseHandler, \"getLineRange\");\n mouseHandler.selectByWords = this.extendSelectionBy.bind(mouseHandler, \"getWordRange\");\n}\n\n(function() {\n\n this.onMouseDown = function(ev) {\n var inSelection = ev.inSelection();\n var pos = ev.getDocumentPosition();\n this.mousedownEvent = ev;\n var editor = this.editor;\n\n var button = ev.getButton();\n if (button !== 0) {\n var selectionRange = editor.getSelectionRange();\n var selectionEmpty = selectionRange.isEmpty();\n if (selectionEmpty || button == 1)\n editor.selection.moveToPosition(pos);\n if (button == 2) {\n editor.textInput.onContextMenu(ev.domEvent);\n if (!useragent.isMozilla)\n ev.preventDefault();\n }\n return;\n }\n\n this.mousedownEvent.time = Date.now();\n if (inSelection && !editor.isFocused()) {\n editor.focus();\n if (this.$focusTimeout && !this.$clickSelection && !editor.inMultiSelectMode) {\n this.setState(\"focusWait\");\n this.captureMouse(ev);\n return;\n }\n }\n\n this.captureMouse(ev);\n this.startSelect(pos, ev.domEvent._clicks > 1);\n return ev.preventDefault();\n };\n\n this.startSelect = function(pos, waitForClickSelection) {\n pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y);\n var editor = this.editor;\n if (!this.mousedownEvent) return;\n if (this.mousedownEvent.getShiftKey())\n editor.selection.selectToPosition(pos);\n else if (!waitForClickSelection)\n editor.selection.moveToPosition(pos);\n if (!waitForClickSelection)\n this.select();\n if (editor.renderer.scroller.setCapture) {\n editor.renderer.scroller.setCapture();\n }\n editor.setStyle(\"ace_selecting\");\n this.setState(\"select\");\n };\n\n this.select = function() {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n if (this.$clickSelection) {\n var cmp = this.$clickSelection.comparePoint(cursor);\n\n if (cmp == -1) {\n anchor = this.$clickSelection.end;\n } else if (cmp == 1) {\n anchor = this.$clickSelection.start;\n } else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n\n this.extendSelectionBy = function(unitName) {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n var range = editor.selection[unitName](cursor.row, cursor.column);\n if (this.$clickSelection) {\n var cmpStart = this.$clickSelection.comparePoint(range.start);\n var cmpEnd = this.$clickSelection.comparePoint(range.end);\n\n if (cmpStart == -1 && cmpEnd <= 0) {\n anchor = this.$clickSelection.end;\n if (range.end.row != cursor.row || range.end.column != cursor.column)\n cursor = range.start;\n } else if (cmpEnd == 1 && cmpStart >= 0) {\n anchor = this.$clickSelection.start;\n if (range.start.row != cursor.row || range.start.column != cursor.column)\n cursor = range.end;\n } else if (cmpStart == -1 && cmpEnd == 1) {\n cursor = range.end;\n anchor = range.start;\n } else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n\n this.selectEnd =\n this.selectAllEnd =\n this.selectByWordsEnd =\n this.selectByLinesEnd = function() {\n this.$clickSelection = null;\n this.editor.unsetStyle(\"ace_selecting\");\n if (this.editor.renderer.scroller.releaseCapture) {\n this.editor.renderer.scroller.releaseCapture();\n }\n };\n\n this.focusWait = function() {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n var time = Date.now();\n\n if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimeout)\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n };\n\n this.onDoubleClick = function(ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n var session = editor.session;\n\n var range = session.getBracketRange(pos);\n if (range) {\n if (range.isEmpty()) {\n range.start.column--;\n range.end.column++;\n }\n this.setState(\"select\");\n } else {\n range = editor.selection.getWordRange(pos.row, pos.column);\n this.setState(\"selectByWords\");\n }\n this.$clickSelection = range;\n this.select();\n };\n\n this.onTripleClick = function(ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n\n this.setState(\"selectByLines\");\n var range = editor.getSelectionRange();\n if (range.isMultiLine() && range.contains(pos.row, pos.column)) {\n this.$clickSelection = editor.selection.getLineRange(range.start.row);\n this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end;\n } else {\n this.$clickSelection = editor.selection.getLineRange(pos.row);\n }\n this.select();\n };\n\n this.onQuadClick = function(ev) {\n var editor = this.editor;\n\n editor.selectAll();\n this.$clickSelection = editor.getSelectionRange();\n this.setState(\"selectAll\");\n };\n\n this.onMouseWheel = function(ev) {\n if (ev.getAccelKey())\n return;\n if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) {\n ev.wheelX = ev.wheelY;\n ev.wheelY = 0;\n }\n \n var editor = this.editor;\n \n if (!this.$lastScroll)\n this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 };\n \n var prevScroll = this.$lastScroll;\n var t = ev.domEvent.timeStamp;\n var dt = t - prevScroll.t;\n var vx = dt ? ev.wheelX / dt : prevScroll.vx;\n var vy = dt ? ev.wheelY / dt : prevScroll.vy;\n if (dt < SCROLL_COOLDOWN_T) {\n vx = (vx + prevScroll.vx) / 2;\n vy = (vy + prevScroll.vy) / 2;\n }\n \n var direction = Math.abs(vx / vy);\n \n var canScroll = false;\n if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0))\n canScroll = true;\n if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed))\n canScroll = true;\n \n if (canScroll) {\n prevScroll.allowed = t;\n } else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) {\n var isSlower = Math.abs(vx) <= 1.5 * Math.abs(prevScroll.vx)\n && Math.abs(vy) <= 1.5 * Math.abs(prevScroll.vy);\n if (isSlower) {\n canScroll = true;\n prevScroll.allowed = t;\n }\n else {\n prevScroll.allowed = 0;\n }\n }\n \n prevScroll.t = t;\n prevScroll.vx = vx;\n prevScroll.vy = vy;\n\n if (canScroll) {\n editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\n return ev.stop();\n }\n };\n\n}).call(DefaultHandlers.prototype);\n\nexports.DefaultHandlers = DefaultHandlers;\n\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\n\nfunction calcRangeOrientation(range, cursor) {\n if (range.start.row == range.end.row)\n var cmp = 2 * cursor.column - range.start.column - range.end.column;\n else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column)\n var cmp = cursor.column - 4;\n else\n var cmp = 2 * cursor.row - range.start.row - range.end.row;\n\n if (cmp < 0)\n return {cursor: range.start, anchor: range.end};\n else\n return {cursor: range.end, anchor: range.start};\n}\n\n});\n\nace.define(\"ace/tooltip\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nfunction Tooltip (parentNode) {\n this.isOpen = false;\n this.$element = null;\n this.$parentNode = parentNode;\n}\n\n(function() {\n this.$init = function() {\n this.$element = dom.createElement(\"div\");\n this.$element.className = \"ace_tooltip\";\n this.$element.style.display = \"none\";\n this.$parentNode.appendChild(this.$element);\n return this.$element;\n };\n this.getElement = function() {\n return this.$element || this.$init();\n };\n this.setText = function(text) {\n this.getElement().textContent = text;\n };\n this.setHtml = function(html) {\n this.getElement().innerHTML = html;\n };\n this.setPosition = function(x, y) {\n this.getElement().style.left = x + \"px\";\n this.getElement().style.top = y + \"px\";\n };\n this.setClassName = function(className) {\n dom.addCssClass(this.getElement(), className);\n };\n this.show = function(text, x, y) {\n if (text != null)\n this.setText(text);\n if (x != null && y != null)\n this.setPosition(x, y);\n if (!this.isOpen) {\n this.getElement().style.display = \"block\";\n this.isOpen = true;\n }\n };\n\n this.hide = function() {\n if (this.isOpen) {\n this.getElement().style.display = \"none\";\n this.isOpen = false;\n }\n };\n this.getHeight = function() {\n return this.getElement().offsetHeight;\n };\n this.getWidth = function() {\n return this.getElement().offsetWidth;\n };\n \n this.destroy = function() {\n this.isOpen = false;\n if (this.$element && this.$element.parentNode) {\n this.$element.parentNode.removeChild(this.$element);\n }\n };\n\n}).call(Tooltip.prototype);\n\nexports.Tooltip = Tooltip;\n});\n\nace.define(\"ace/mouse/default_gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/event\",\"ace/tooltip\"], function(require, exports, module) {\n\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar event = require(\"../lib/event\");\nvar Tooltip = require(\"../tooltip\").Tooltip;\n\nfunction GutterHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var gutter = editor.renderer.$gutterLayer;\n var tooltip = new GutterTooltip(editor.container);\n\n mouseHandler.editor.setDefaultHandler(\"guttermousedown\", function(e) {\n if (!editor.isFocused() || e.getButton() != 0)\n return;\n var gutterRegion = gutter.getRegion(e);\n\n if (gutterRegion == \"foldWidgets\")\n return;\n\n var row = e.getDocumentPosition().row;\n var selection = editor.session.selection;\n\n if (e.getShiftKey())\n selection.selectTo(row, 0);\n else {\n if (e.domEvent.detail == 2) {\n editor.selectAll();\n return e.preventDefault();\n }\n mouseHandler.$clickSelection = editor.selection.getLineRange(row);\n }\n mouseHandler.setState(\"selectByLines\");\n mouseHandler.captureMouse(e);\n return e.preventDefault();\n });\n\n\n var tooltipTimeout, mouseEvent, tooltipAnnotation;\n\n function showTooltip() {\n var row = mouseEvent.getDocumentPosition().row;\n var annotation = gutter.$annotations[row];\n if (!annotation)\n return hideTooltip();\n\n var maxRow = editor.session.getLength();\n if (row == maxRow) {\n var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row;\n var pos = mouseEvent.$pos;\n if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column))\n return hideTooltip();\n }\n\n if (tooltipAnnotation == annotation)\n return;\n tooltipAnnotation = annotation.text.join(\"
\");\n\n tooltip.setHtml(tooltipAnnotation);\n tooltip.show();\n editor._signal(\"showGutterTooltip\", tooltip);\n editor.on(\"mousewheel\", hideTooltip);\n\n if (mouseHandler.$tooltipFollowsMouse) {\n moveTooltip(mouseEvent);\n } else {\n var gutterElement = mouseEvent.domEvent.target;\n var rect = gutterElement.getBoundingClientRect();\n var style = tooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n }\n }\n\n function hideTooltip() {\n if (tooltipTimeout)\n tooltipTimeout = clearTimeout(tooltipTimeout);\n if (tooltipAnnotation) {\n tooltip.hide();\n tooltipAnnotation = null;\n editor._signal(\"hideGutterTooltip\", tooltip);\n editor.off(\"mousewheel\", hideTooltip);\n }\n }\n\n function moveTooltip(e) {\n tooltip.setPosition(e.x, e.y);\n }\n\n mouseHandler.editor.setDefaultHandler(\"guttermousemove\", function(e) {\n var target = e.domEvent.target || e.domEvent.srcElement;\n if (dom.hasCssClass(target, \"ace_fold-widget\"))\n return hideTooltip();\n\n if (tooltipAnnotation && mouseHandler.$tooltipFollowsMouse)\n moveTooltip(e);\n\n mouseEvent = e;\n if (tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function() {\n tooltipTimeout = null;\n if (mouseEvent && !mouseHandler.isMousePressed)\n showTooltip();\n else\n hideTooltip();\n }, 50);\n });\n\n event.addListener(editor.renderer.$gutter, \"mouseout\", function(e) {\n mouseEvent = null;\n if (!tooltipAnnotation || tooltipTimeout)\n return;\n\n tooltipTimeout = setTimeout(function() {\n tooltipTimeout = null;\n hideTooltip();\n }, 50);\n }, editor);\n \n editor.on(\"changeSession\", hideTooltip);\n}\n\nfunction GutterTooltip(parentNode) {\n Tooltip.call(this, parentNode);\n}\n\noop.inherits(GutterTooltip, Tooltip);\n\n(function(){\n this.setPosition = function(x, y) {\n var windowWidth = window.innerWidth || document.documentElement.clientWidth;\n var windowHeight = window.innerHeight || document.documentElement.clientHeight;\n var width = this.getWidth();\n var height = this.getHeight();\n x += 15;\n y += 15;\n if (x + width > windowWidth) {\n x -= (x + width) - windowWidth;\n }\n if (y + height > windowHeight) {\n y -= 20 + height;\n }\n Tooltip.prototype.setPosition.call(this, x, y);\n };\n\n}).call(GutterTooltip.prototype);\n\n\n\nexports.GutterHandler = GutterHandler;\n\n});\n\nace.define(\"ace/mouse/mouse_event\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar MouseEvent = exports.MouseEvent = function(domEvent, editor) {\n this.domEvent = domEvent;\n this.editor = editor;\n \n this.x = this.clientX = domEvent.clientX;\n this.y = this.clientY = domEvent.clientY;\n\n this.$pos = null;\n this.$inSelection = null;\n \n this.propagationStopped = false;\n this.defaultPrevented = false;\n};\n\n(function() { \n \n this.stopPropagation = function() {\n event.stopPropagation(this.domEvent);\n this.propagationStopped = true;\n };\n \n this.preventDefault = function() {\n event.preventDefault(this.domEvent);\n this.defaultPrevented = true;\n };\n \n this.stop = function() {\n this.stopPropagation();\n this.preventDefault();\n };\n this.getDocumentPosition = function() {\n if (this.$pos)\n return this.$pos;\n \n this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY);\n return this.$pos;\n };\n this.inSelection = function() {\n if (this.$inSelection !== null)\n return this.$inSelection;\n \n var editor = this.editor;\n \n\n var selectionRange = editor.getSelectionRange();\n if (selectionRange.isEmpty())\n this.$inSelection = false;\n else {\n var pos = this.getDocumentPosition();\n this.$inSelection = selectionRange.contains(pos.row, pos.column);\n }\n\n return this.$inSelection;\n };\n this.getButton = function() {\n return event.getButton(this.domEvent);\n };\n this.getShiftKey = function() {\n return this.domEvent.shiftKey;\n };\n \n this.getAccelKey = useragent.isMac\n ? function() { return this.domEvent.metaKey; }\n : function() { return this.domEvent.ctrlKey; };\n \n}).call(MouseEvent.prototype);\n\n});\n\nace.define(\"ace/mouse/dragdrop_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar dom = require(\"../lib/dom\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\n\nvar AUTOSCROLL_DELAY = 200;\nvar SCROLL_CURSOR_DELAY = 200;\nvar SCROLL_CURSOR_HYSTERESIS = 5;\n\nfunction DragdropHandler(mouseHandler) {\n\n var editor = mouseHandler.editor;\n\n var dragImage = dom.createElement(\"div\");\n dragImage.style.cssText = \"top:-100px;position:absolute;z-index:2147483647;opacity:0.5\";\n dragImage.textContent = \"\\xa0\";\n\n var exports = [\"dragWait\", \"dragWaitEnd\", \"startDrag\", \"dragReadyEnd\", \"onMouseDrag\"];\n\n exports.forEach(function(x) {\n mouseHandler[x] = this[x];\n }, this);\n editor.on(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n\n var mouseTarget = editor.container;\n var dragSelectionMarker, x, y;\n var timerId, range;\n var dragCursor, counter = 0;\n var dragOperation;\n var isInternal;\n var autoScrollStartTime;\n var cursorMovedTime;\n var cursorPointOnCaretMoved;\n\n this.onDragStart = function(e) {\n if (this.cancelDrag || !mouseTarget.draggable) {\n var self = this;\n setTimeout(function(){\n self.startSelect();\n self.captureMouse(e);\n }, 0);\n return e.preventDefault();\n }\n range = editor.getSelectionRange();\n\n var dataTransfer = e.dataTransfer;\n dataTransfer.effectAllowed = editor.getReadOnly() ? \"copy\" : \"copyMove\";\n editor.container.appendChild(dragImage);\n\n dataTransfer.setDragImage && dataTransfer.setDragImage(dragImage, 0, 0);\n setTimeout(function() {\n editor.container.removeChild(dragImage);\n });\n dataTransfer.clearData();\n dataTransfer.setData(\"Text\", editor.session.getTextRange());\n\n isInternal = true;\n this.setState(\"drag\");\n };\n\n this.onDragEnd = function(e) {\n mouseTarget.draggable = false;\n isInternal = false;\n this.setState(null);\n if (!editor.getReadOnly()) {\n var dropEffect = e.dataTransfer.dropEffect;\n if (!dragOperation && dropEffect == \"move\")\n editor.session.remove(editor.getSelectionRange());\n editor.$resetCursorStyle();\n }\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n };\n\n this.onDragEnter = function(e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker)\n addDragMarker();\n counter++;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n\n this.onDragOver = function(e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker) {\n addDragMarker();\n counter++;\n }\n if (onMouseMoveTimer !== null)\n onMouseMoveTimer = null;\n\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n\n this.onDragLeave = function(e) {\n counter--;\n if (counter <= 0 && dragSelectionMarker) {\n clearDragMarker();\n dragOperation = null;\n return event.preventDefault(e);\n }\n };\n\n this.onDrop = function(e) {\n if (!dragCursor)\n return;\n var dataTransfer = e.dataTransfer;\n if (isInternal) {\n switch (dragOperation) {\n case \"move\":\n if (range.contains(dragCursor.row, dragCursor.column)) {\n range = {\n start: dragCursor,\n end: dragCursor\n };\n } else {\n range = editor.moveText(range, dragCursor);\n }\n break;\n case \"copy\":\n range = editor.moveText(range, dragCursor, true);\n break;\n }\n } else {\n var dropData = dataTransfer.getData('Text');\n range = {\n start: dragCursor,\n end: editor.session.insert(dragCursor, dropData)\n };\n editor.focus();\n dragOperation = null;\n }\n clearDragMarker();\n return event.preventDefault(e);\n };\n\n event.addListener(mouseTarget, \"dragstart\", this.onDragStart.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragend\", this.onDragEnd.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragenter\", this.onDragEnter.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragover\", this.onDragOver.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragleave\", this.onDragLeave.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"drop\", this.onDrop.bind(mouseHandler), editor);\n\n function scrollCursorIntoView(cursor, prevCursor) {\n var now = Date.now();\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n var hMovement = !prevCursor || cursor.column != prevCursor.column;\n if (!cursorMovedTime || vMovement || hMovement) {\n editor.moveCursorToPosition(cursor);\n cursorMovedTime = now;\n cursorPointOnCaretMoved = {x: x, y: y};\n } else {\n var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y);\n if (distance > SCROLL_CURSOR_HYSTERESIS) {\n cursorMovedTime = null;\n } else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) {\n editor.renderer.scrollCursorIntoView();\n cursorMovedTime = null;\n }\n }\n }\n\n function autoScroll(cursor, prevCursor) {\n var now = Date.now();\n var lineHeight = editor.renderer.layerConfig.lineHeight;\n var characterWidth = editor.renderer.layerConfig.characterWidth;\n var editorRect = editor.renderer.scroller.getBoundingClientRect();\n var offsets = {\n x: {\n left: x - editorRect.left,\n right: editorRect.right - x\n },\n y: {\n top: y - editorRect.top,\n bottom: editorRect.bottom - y\n }\n };\n var nearestXOffset = Math.min(offsets.x.left, offsets.x.right);\n var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom);\n var scrollCursor = {row: cursor.row, column: cursor.column};\n if (nearestXOffset / characterWidth <= 2) {\n scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2);\n }\n if (nearestYOffset / lineHeight <= 1) {\n scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1);\n }\n var vScroll = cursor.row != scrollCursor.row;\n var hScroll = cursor.column != scrollCursor.column;\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n if (vScroll || (hScroll && !vMovement)) {\n if (!autoScrollStartTime)\n autoScrollStartTime = now;\n else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY)\n editor.renderer.scrollCursorIntoView(scrollCursor);\n } else {\n autoScrollStartTime = null;\n }\n }\n\n function onDragInterval() {\n var prevCursor = dragCursor;\n dragCursor = editor.renderer.screenToTextCoordinates(x, y);\n scrollCursorIntoView(dragCursor, prevCursor);\n autoScroll(dragCursor, prevCursor);\n }\n\n function addDragMarker() {\n range = editor.selection.toOrientedRange();\n dragSelectionMarker = editor.session.addMarker(range, \"ace_selection\", editor.getSelectionStyle());\n editor.clearSelection();\n if (editor.isFocused())\n editor.renderer.$cursorLayer.setBlinking(false);\n clearInterval(timerId);\n onDragInterval();\n timerId = setInterval(onDragInterval, 20);\n counter = 0;\n event.addListener(document, \"mousemove\", onMouseMove);\n }\n\n function clearDragMarker() {\n clearInterval(timerId);\n editor.session.removeMarker(dragSelectionMarker);\n dragSelectionMarker = null;\n editor.selection.fromOrientedRange(range);\n if (editor.isFocused() && !isInternal)\n editor.$resetCursorStyle();\n range = null;\n dragCursor = null;\n counter = 0;\n autoScrollStartTime = null;\n cursorMovedTime = null;\n event.removeListener(document, \"mousemove\", onMouseMove);\n }\n var onMouseMoveTimer = null;\n function onMouseMove() {\n if (onMouseMoveTimer == null) {\n onMouseMoveTimer = setTimeout(function() {\n if (onMouseMoveTimer != null && dragSelectionMarker)\n clearDragMarker();\n }, 20);\n }\n }\n\n function canAccept(dataTransfer) {\n var types = dataTransfer.types;\n return !types || Array.prototype.some.call(types, function(type) {\n return type == 'text/plain' || type == 'Text';\n });\n }\n\n function getDropEffect(e) {\n var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized'];\n var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized'];\n\n var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey;\n var effectAllowed = \"uninitialized\";\n try {\n effectAllowed = e.dataTransfer.effectAllowed.toLowerCase();\n } catch (e) {}\n var dropEffect = \"none\";\n\n if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n else if (moveAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"move\";\n else if (copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n\n return dropEffect;\n }\n}\n\n(function() {\n\n this.dragWait = function() {\n var interval = Date.now() - this.mousedownEvent.time;\n if (interval > this.editor.getDragDelay())\n this.startDrag();\n };\n\n this.dragWaitEnd = function() {\n var target = this.editor.container;\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n this.selectEnd();\n };\n\n this.dragReadyEnd = function(e) {\n this.editor.$resetCursorStyle();\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n this.dragWaitEnd();\n };\n\n this.startDrag = function(){\n this.cancelDrag = false;\n var editor = this.editor;\n var target = editor.container;\n target.draggable = true;\n editor.renderer.$cursorLayer.setBlinking(false);\n editor.setStyle(\"ace_dragging\");\n var cursorStyle = useragent.isWin ? \"default\" : \"move\";\n editor.renderer.setCursorStyle(cursorStyle);\n this.setState(\"dragReady\");\n };\n\n this.onMouseDrag = function(e) {\n var target = this.editor.container;\n if (useragent.isIE && this.state == \"dragReady\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 3)\n target.dragDrop();\n }\n if (this.state === \"dragWait\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 0) {\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n }\n }\n };\n\n this.onMouseDown = function(e) {\n if (!this.$dragEnabled)\n return;\n this.mousedownEvent = e;\n var editor = this.editor;\n\n var inSelection = e.inSelection();\n var button = e.getButton();\n var clickCount = e.domEvent.detail || 1;\n if (clickCount === 1 && button === 0 && inSelection) {\n if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey()))\n return;\n this.mousedownEvent.time = Date.now();\n var eventTarget = e.domEvent.target || e.domEvent.srcElement;\n if (\"unselectable\" in eventTarget)\n eventTarget.unselectable = \"on\";\n if (editor.getDragDelay()) {\n if (useragent.isWebKit) {\n this.cancelDrag = true;\n var mouseTarget = editor.container;\n mouseTarget.draggable = true;\n }\n this.setState(\"dragWait\");\n } else {\n this.startDrag();\n }\n this.captureMouse(e, this.onMouseDrag.bind(this));\n e.defaultPrevented = true;\n }\n };\n\n}).call(DragdropHandler.prototype);\n\n\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\n\nexports.DragdropHandler = DragdropHandler;\n\n});\n\nace.define(\"ace/mouse/touch_handler\",[\"require\",\"exports\",\"module\",\"ace/mouse/mouse_event\",\"ace/lib/event\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nvar MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar event = require(\"../lib/event\");\nvar dom = require(\"../lib/dom\");\n\nexports.addTouchListeners = function(el, editor) {\n var mode = \"scroll\";\n var startX;\n var startY;\n var touchStartT;\n var lastT;\n var longTouchTimer;\n var animationTimer;\n var animationSteps = 0;\n var pos;\n var clickCount = 0;\n var vX = 0;\n var vY = 0;\n var pressed;\n var contextMenu;\n \n function createContextMenu() {\n var clipboard = window.navigator && window.navigator.clipboard;\n var isOpen = false;\n var updateMenu = function() {\n var selected = editor.getCopyText();\n var hasUndo = editor.session.getUndoManager().hasUndo();\n contextMenu.replaceChild(\n dom.buildDom(isOpen ? [\"span\",\n !selected && [\"span\", { class: \"ace_mobile-button\", action: \"selectall\" }, \"Select All\"],\n selected && [\"span\", { class: \"ace_mobile-button\", action: \"copy\" }, \"Copy\"],\n selected && [\"span\", { class: \"ace_mobile-button\", action: \"cut\" }, \"Cut\"],\n clipboard && [\"span\", { class: \"ace_mobile-button\", action: \"paste\" }, \"Paste\"],\n hasUndo && [\"span\", { class: \"ace_mobile-button\", action: \"undo\" }, \"Undo\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"find\" }, \"Find\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"openCommandPallete\" }, \"Pallete\"]\n ] : [\"span\"]),\n contextMenu.firstChild\n );\n };\n var handleClick = function(e) {\n var action = e.target.getAttribute(\"action\");\n\n if (action == \"more\" || !isOpen) {\n isOpen = !isOpen;\n return updateMenu();\n }\n if (action == \"paste\") {\n clipboard.readText().then(function (text) {\n editor.execCommand(action, text);\n });\n }\n else if (action) {\n if (action == \"cut\" || action == \"copy\") {\n if (clipboard)\n clipboard.writeText(editor.getCopyText());\n else\n document.execCommand(\"copy\");\n }\n editor.execCommand(action);\n }\n contextMenu.firstChild.style.display = \"none\";\n isOpen = false;\n if (action != \"openCommandPallete\")\n editor.focus();\n };\n contextMenu = dom.buildDom([\"div\",\n {\n class: \"ace_mobile-menu\",\n ontouchstart: function(e) {\n mode = \"menu\";\n e.stopPropagation();\n e.preventDefault();\n editor.textInput.focus();\n },\n ontouchend: function(e) {\n e.stopPropagation();\n e.preventDefault();\n handleClick(e);\n },\n onclick: handleClick\n },\n [\"span\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"more\" }, \"...\"]\n ], editor.container);\n }\n function showContextMenu() {\n if (!contextMenu) createContextMenu();\n var cursor = editor.selection.cursor;\n var pagePos = editor.renderer.textToScreenCoordinates(cursor.row, cursor.column);\n var leftOffset = editor.renderer.textToScreenCoordinates(0, 0).pageX;\n var scrollLeft = editor.renderer.scrollLeft;\n var rect = editor.container.getBoundingClientRect();\n contextMenu.style.top = pagePos.pageY - rect.top - 3 + \"px\";\n if (pagePos.pageX - rect.left < rect.width - 70) {\n contextMenu.style.left = \"\";\n contextMenu.style.right = \"10px\";\n } else {\n contextMenu.style.right = \"\";\n contextMenu.style.left = leftOffset + scrollLeft - rect.left + \"px\";\n }\n contextMenu.style.display = \"\";\n contextMenu.firstChild.style.display = \"none\";\n editor.on(\"input\", hideContextMenu);\n }\n function hideContextMenu(e) {\n if (contextMenu)\n contextMenu.style.display = \"none\";\n editor.off(\"input\", hideContextMenu);\n }\n\n function handleLongTap() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n var range = editor.selection.getRange();\n var inSelection = range.contains(pos.row, pos.column);\n if (range.isEmpty() || !inSelection) {\n editor.selection.moveToPosition(pos);\n editor.selection.selectWord();\n }\n mode = \"wait\";\n showContextMenu();\n }\n function switchToSelectionMode() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n editor.selection.moveToPosition(pos);\n var range = clickCount >= 2\n ? editor.selection.getLineRange(pos.row)\n : editor.session.getBracketRange(pos);\n if (range && !range.isEmpty()) {\n editor.selection.setRange(range);\n } else {\n editor.selection.selectWord();\n }\n mode = \"wait\";\n }\n event.addListener(el, \"contextmenu\", function(e) {\n if (!pressed) return;\n var textarea = editor.textInput.getElement();\n textarea.focus();\n }, editor);\n event.addListener(el, \"touchstart\", function (e) {\n var touches = e.touches;\n if (longTouchTimer || touches.length > 1) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n touchStartT = -1;\n mode = \"zoom\";\n return;\n }\n \n pressed = editor.$mouseHandler.isMousePressed = true;\n var h = editor.renderer.layerConfig.lineHeight;\n var w = editor.renderer.layerConfig.lineHeight;\n var t = e.timeStamp;\n lastT = t;\n var touchObj = touches[0];\n var x = touchObj.clientX;\n var y = touchObj.clientY;\n if (Math.abs(startX - x) + Math.abs(startY - y) > h)\n touchStartT = -1;\n \n startX = e.clientX = x;\n startY = e.clientY = y;\n vX = vY = 0;\n \n var ev = new MouseEvent(e, editor);\n pos = ev.getDocumentPosition();\n\n if (t - touchStartT < 500 && touches.length == 1 && !animationSteps) {\n clickCount++;\n e.preventDefault();\n e.button = 0;\n switchToSelectionMode();\n } else {\n clickCount = 0;\n var cursor = editor.selection.cursor;\n var anchor = editor.selection.isEmpty() ? cursor : editor.selection.anchor;\n \n var cursorPos = editor.renderer.$cursorLayer.getPixelPosition(cursor, true);\n var anchorPos = editor.renderer.$cursorLayer.getPixelPosition(anchor, true);\n var rect = editor.renderer.scroller.getBoundingClientRect();\n var offsetTop = editor.renderer.layerConfig.offset;\n var offsetLeft = editor.renderer.scrollLeft;\n var weightedDistance = function(x, y) {\n x = x / w;\n y = y / h - 0.75;\n return x * x + y * y;\n };\n \n if (e.clientX < rect.left) {\n mode = \"zoom\";\n return;\n }\n \n var diff1 = weightedDistance(\n e.clientX - rect.left - cursorPos.left + offsetLeft,\n e.clientY - rect.top - cursorPos.top + offsetTop\n );\n var diff2 = weightedDistance(\n e.clientX - rect.left - anchorPos.left + offsetLeft,\n e.clientY - rect.top - anchorPos.top + offsetTop\n );\n if (diff1 < 3.5 && diff2 < 3.5)\n mode = diff1 > diff2 ? \"cursor\" : \"anchor\";\n \n if (diff2 < 3.5)\n mode = \"anchor\";\n else if (diff1 < 3.5)\n mode = \"cursor\";\n else\n mode = \"scroll\";\n longTouchTimer = setTimeout(handleLongTap, 450);\n }\n touchStartT = t;\n }, editor);\n\n event.addListener(el, \"touchend\", function (e) {\n pressed = editor.$mouseHandler.isMousePressed = false;\n if (animationTimer) clearInterval(animationTimer);\n if (mode == \"zoom\") {\n mode = \"\";\n animationSteps = 0;\n } else if (longTouchTimer) {\n editor.selection.moveToPosition(pos);\n animationSteps = 0;\n showContextMenu();\n } else if (mode == \"scroll\") {\n animate();\n hideContextMenu();\n } else {\n showContextMenu();\n }\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }, editor);\n event.addListener(el, \"touchmove\", function (e) {\n if (longTouchTimer) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }\n var touches = e.touches;\n if (touches.length > 1 || mode == \"zoom\") return;\n\n var touchObj = touches[0];\n\n var wheelX = startX - touchObj.clientX;\n var wheelY = startY - touchObj.clientY;\n\n if (mode == \"wait\") {\n if (wheelX * wheelX + wheelY * wheelY > 4)\n mode = \"cursor\";\n else\n return e.preventDefault();\n }\n\n startX = touchObj.clientX;\n startY = touchObj.clientY;\n\n e.clientX = touchObj.clientX;\n e.clientY = touchObj.clientY;\n\n var t = e.timeStamp;\n var dt = t - lastT;\n lastT = t;\n if (mode == \"scroll\") {\n var mouseEvent = new MouseEvent(e, editor);\n mouseEvent.speed = 1;\n mouseEvent.wheelX = wheelX;\n mouseEvent.wheelY = wheelY;\n if (10 * Math.abs(wheelX) < Math.abs(wheelY)) wheelX = 0;\n if (10 * Math.abs(wheelY) < Math.abs(wheelX)) wheelY = 0;\n if (dt != 0) {\n vX = wheelX / dt;\n vY = wheelY / dt;\n }\n editor._emit(\"mousewheel\", mouseEvent);\n if (!mouseEvent.propagationStopped) {\n vX = vY = 0;\n }\n }\n else {\n var ev = new MouseEvent(e, editor);\n var pos = ev.getDocumentPosition();\n if (mode == \"cursor\")\n editor.selection.moveCursorToPosition(pos);\n else if (mode == \"anchor\")\n editor.selection.setSelectionAnchor(pos.row, pos.column);\n editor.renderer.scrollCursorIntoView(pos);\n e.preventDefault();\n }\n }, editor);\n\n function animate() {\n animationSteps += 60;\n animationTimer = setInterval(function() {\n if (animationSteps-- <= 0) {\n clearInterval(animationTimer);\n animationTimer = null;\n }\n if (Math.abs(vX) < 0.01) vX = 0;\n if (Math.abs(vY) < 0.01) vY = 0;\n if (animationSteps < 20) vX = 0.9 * vX;\n if (animationSteps < 20) vY = 0.9 * vY;\n var oldScrollTop = editor.session.getScrollTop();\n editor.renderer.scrollBy(10 * vX, 10 * vY);\n if (oldScrollTop == editor.session.getScrollTop())\n animationSteps = 0;\n }, 10);\n }\n};\n\n});\n\nace.define(\"ace/lib/net\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\nvar dom = require(\"./dom\");\n\nexports.get = function (url, callback) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n callback(xhr.responseText);\n }\n };\n xhr.send(null);\n};\n\nexports.loadScript = function(path, callback) {\n var head = dom.getDocumentHead();\n var s = document.createElement('script');\n\n s.src = path;\n head.appendChild(s);\n\n s.onload = s.onreadystatechange = function(_, isAbort) {\n if (isAbort || !s.readyState || s.readyState == \"loaded\" || s.readyState == \"complete\") {\n s = s.onload = s.onreadystatechange = null;\n if (!isAbort)\n callback();\n }\n };\n};\nexports.qualifyURL = function(url) {\n var a = document.createElement('a');\n a.href = url;\n return a.href;\n};\n\n});\n\nace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\n\nvar EventEmitter = {};\nvar stopPropagation = function() { this.propagationStopped = true; };\nvar preventDefault = function() { this.defaultPrevented = true; };\n\nEventEmitter._emit =\nEventEmitter._dispatchEvent = function(eventName, e) {\n this._eventRegistry || (this._eventRegistry = {});\n this._defaultHandlers || (this._defaultHandlers = {});\n\n var listeners = this._eventRegistry[eventName] || [];\n var defaultHandler = this._defaultHandlers[eventName];\n if (!listeners.length && !defaultHandler)\n return;\n\n if (typeof e != \"object\" || !e)\n e = {};\n\n if (!e.type)\n e.type = eventName;\n if (!e.stopPropagation)\n e.stopPropagation = stopPropagation;\n if (!e.preventDefault)\n e.preventDefault = preventDefault;\n\n listeners = listeners.slice();\n for (var i=0; i 1)\n base = parts[parts.length - 2];\n var path = options[component + \"Path\"];\n if (path == null) {\n path = options.basePath;\n } else if (sep == \"/\") {\n component = sep = \"\";\n }\n if (path && path.slice(-1) != \"/\")\n path += \"/\";\n return path + component + sep + base + this.get(\"suffix\");\n};\n\nexports.setModuleUrl = function(name, subst) {\n return options.$moduleUrls[name] = subst;\n};\n\nexports.$loading = {};\nexports.loadModule = function(moduleName, onLoad) {\n var module, moduleType;\n if (Array.isArray(moduleName)) {\n moduleType = moduleName[0];\n moduleName = moduleName[1];\n }\n\n try {\n module = require(moduleName);\n } catch (e) {}\n if (module && !exports.$loading[moduleName])\n return onLoad && onLoad(module);\n\n if (!exports.$loading[moduleName])\n exports.$loading[moduleName] = [];\n\n exports.$loading[moduleName].push(onLoad);\n\n if (exports.$loading[moduleName].length > 1)\n return;\n\n var afterLoad = function() {\n require([moduleName], function(module) {\n exports._emit(\"load.module\", {name: moduleName, module: module});\n var listeners = exports.$loading[moduleName];\n exports.$loading[moduleName] = null;\n listeners.forEach(function(onLoad) {\n onLoad && onLoad(module);\n });\n });\n };\n\n if (!exports.get(\"packaged\"))\n return afterLoad();\n \n net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad);\n reportErrorIfPathIsNotConfigured();\n};\n\nvar reportErrorIfPathIsNotConfigured = function() {\n if (\n !options.basePath && !options.workerPath \n && !options.modePath && !options.themePath\n && !Object.keys(options.$moduleUrls).length\n ) {\n console.error(\n \"Unable to infer path to ace from script src,\",\n \"use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes\",\n \"or with webpack use ace/webpack-resolver\"\n );\n reportErrorIfPathIsNotConfigured = function() {};\n }\n};\ninit(true);function init(packaged) {\n\n if (!global || !global.document)\n return;\n \n options.packaged = packaged || require.packaged || module.packaged || (global.define && define.packaged);\n\n var scriptOptions = {};\n var scriptUrl = \"\";\n var currentScript = (document.currentScript || document._currentScript ); // native or polyfill\n var currentDocument = currentScript && currentScript.ownerDocument || document;\n \n var scripts = currentDocument.getElementsByTagName(\"script\");\n for (var i=0; i 0){\n\t\t\tif (action == 0x10){\n\t\t\t\tfor(i = condPos; i < ix; i++){\n\t\t\t\t\tlevels[i] = 1;\n\t\t\t\t}\n\t\t\t\tcondPos = -1;\n\t\t\t} else {\n\t\t\t\tcondPos = -1;\n\t\t\t}\n\t\t}\n\t\tcond = impTab[newState][6];\n\t\tif (cond){\n\t\t\tif(condPos == -1){\n\t\t\t\tcondPos = ix;\n\t\t\t}\n\t\t}else{\n\t\t\tif (condPos > -1){\n\t\t\t\tfor(i = condPos; i < ix; i++){\n\t\t\t\t\tlevels[i] = newLevel;\n\t\t\t\t}\n\t\t\t\tcondPos = -1;\n\t\t\t}\n\t\t}\n\t\tif (charTypes[ix] == B){\n\t\t\tlevels[ix] = 0;\n\t\t}\n\t\thiLevel |= newLevel;\n\t}\n\tif (hasUBAT_S){\n\t\tfor(i = 0; i < len; i++){\n\t\t\tif(charTypes[i] == S){\n\t\t\t\tlevels[i] = dir;\n\t\t\t\tfor(var j = i - 1; j >= 0; j--){\n\t\t\t\t\tif(charTypes[j] == WS){\n\t\t\t\t\t\tlevels[j] = dir;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction _invertLevel(lev, levels, _array) {\n\tif (hiLevel < lev){\n\t\treturn;\n\t}\n\tif (lev == 1 && dir == RTL && !hasUBAT_B){\n\t\t_array.reverse();\n\t\treturn;\n\t}\n\tvar len = _array.length, start = 0, end, lo, hi, tmp;\n\twhile(start < len){\n\t\tif (levels[start] >= lev){\n\t\t\tend = start + 1;\n\t\twhile(end < len && levels[end] >= lev){\n\t\t\tend++;\n\t\t}\n\t\tfor(lo = start, hi = end - 1 ; lo < hi; lo++, hi--){\n\t\t\ttmp = _array[lo];\n\t\t\t_array[lo] = _array[hi];\n\t\t\t_array[hi] = tmp;\n\t\t}\n\t\tstart = end;\n\t}\n\tstart++;\n\t}\n}\n\nfunction _getCharClass(chars, types, classes, ix) {\t\t\t\n\tvar cType = types[ix], wType, nType, len, i;\n\tswitch(cType){\n\t\tcase L:\n\t\tcase R:\n\t\t\tlastArabic = false;\n\t\tcase ON:\n\t\tcase AN:\n\t\t\treturn cType;\n\t\tcase EN:\n\t\t\treturn lastArabic ? AN : EN;\n\t\tcase AL:\n\t\t\tlastArabic = true;\n\t\t\thasUBAT_AL = true;\n\t\t\treturn R;\n\t\tcase WS:\n\t\t\treturn ON;\n\t\tcase CS:\n\t\t\tif (ix < 1 || (ix + 1) >= types.length ||\n\t\t\t\t((wType = classes[ix - 1]) != EN && wType != AN) ||\n\t\t\t\t((nType = types[ix + 1]) != EN && nType != AN)){\n\t\t\t\treturn ON;\n\t\t\t}\n\t\t\tif (lastArabic){nType = AN;}\n\t\t\treturn nType == wType ? nType : ON;\n\t\tcase ES:\n\t\t\twType = ix > 0 ? classes[ix - 1] : B;\n\t\t\tif (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN){\n\t\t\t\treturn EN;\n\t\t\t}\n\t\t\treturn ON;\n\t\tcase ET:\n\t\t\tif (ix > 0 && classes[ix - 1] == EN){\n\t\t\t\treturn EN;\n\t\t\t}\n\t\t\tif (lastArabic){\n\t\t\t\treturn ON;\n\t\t\t}\n\t\t\ti = ix + 1;\n\t\t\tlen = types.length;\n\t\t\twhile (i < len && types[i] == ET){\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif (i < len && types[i] == EN){\n\t\t\t\treturn EN;\n\t\t\t}\n\t\t\treturn ON;\n\t\tcase NSM:\n\t\t\tlen = types.length;\n\t\t\ti = ix + 1;\n\t\t\twhile (i < len && types[i] == NSM){\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif (i < len){\n\t\t\t\tvar c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E;\n\t\t\t\t\n\t\t\t\twType = types[i];\n\t\t\t\tif (rtlCandidate && (wType == R || wType == AL)){\n\t\t\t\t\treturn R;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (ix < 1 || (wType = types[ix - 1]) == B){\n\t\t\t\treturn ON;\n\t\t\t}\n\t\t\treturn classes[ix - 1];\n\t\tcase B:\n\t\t\tlastArabic = false;\n\t\t\thasUBAT_B = true;\n\t\t\treturn dir;\n\t\tcase S:\n\t\t\thasUBAT_S = true;\n\t\t\treturn ON;\n\t\tcase LRE:\n\t\tcase RLE:\n\t\tcase LRO:\n\t\tcase RLO:\n\t\tcase PDF:\n\t\t\tlastArabic = false;\n\t\tcase BN:\n\t\t\treturn ON;\n\t}\n}\n\nfunction _getCharacterType( ch ) {\t\t\n\tvar uc = ch.charCodeAt(0), hi = uc >> 8;\n\t\n\tif (hi == 0) {\t\t\n\t\treturn ((uc > 0x00BF) ? L : UnicodeTBL00[uc]);\n\t} else if (hi == 5) {\n\t\treturn (/[\\u0591-\\u05f4]/.test(ch) ? R : L);\n\t} else if (hi == 6) {\n\t\tif (/[\\u0610-\\u061a\\u064b-\\u065f\\u06d6-\\u06e4\\u06e7-\\u06ed]/.test(ch))\n\t\t\treturn NSM;\n\t\telse if (/[\\u0660-\\u0669\\u066b-\\u066c]/.test(ch))\n\t\t\treturn AN;\n\t\telse if (uc == 0x066A)\n\t\t\treturn ET;\n\t\telse if (/[\\u06f0-\\u06f9]/.test(ch))\n\t\t\treturn EN;\t\t\t\n\t\telse\n\t\t\treturn AL;\n\t} else if (hi == 0x20 && uc <= 0x205F) {\n\t\treturn UnicodeTBL20[uc & 0xFF];\n\t} else if (hi == 0xFE) {\n\t\treturn (uc >= 0xFE70 ? AL : ON);\n\t}\t\t\n\treturn ON;\t\n}\n\nfunction _isArabicDiacritics( ch ) {\n\treturn (ch >= '\\u064b' && ch <= '\\u0655');\n}\nexports.L = L;\nexports.R = R;\nexports.EN = EN;\nexports.ON_R = 3;\nexports.AN = 4;\nexports.R_H = 5;\nexports.B = 6;\nexports.RLE = 7;\n\nexports.DOT = \"\\xB7\";\nexports.doBidiReorder = function(text, textCharTypes, isRtl) {\n\tif (text.length < 2)\n\t\treturn {};\n\t\t\n\tvar chars = text.split(\"\"), logicalFromVisual = new Array(chars.length),\n\t\tbidiLevels = new Array(chars.length), levels = []; \n\n\tdir = isRtl ? RTL : LTR;\n\n\t_computeLevels(chars, levels, chars.length, textCharTypes);\n\n\tfor (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++);\n\n\t_invertLevel(2, levels, logicalFromVisual);\n\t_invertLevel(1, levels, logicalFromVisual);\n\n\tfor (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width\n\t\tif (textCharTypes[i] === AN) {\n\t\t\tlevels[i] = exports.AN;\n\t\t} else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE) \n\t\t\t|| textCharTypes[i] === ON || textCharTypes[i] === BN)) {\n\t\t\tlevels[i] = exports.ON_R;\n\t\t} else if ((i > 0 && chars[i - 1] === '\\u0644') && /\\u0622|\\u0623|\\u0625|\\u0627/.test(chars[i])) {\n\t\t\tlevels[i - 1] = levels[i] = exports.R_H;\n\t\t\ti++;\n\t\t}\n\t}\n\tif (chars[chars.length - 1] === exports.DOT)\n\t\tlevels[chars.length - 1] = exports.B;\n\t\t\t\t\n\tif (chars[0] === '\\u202B')\n\t\tlevels[0] = exports.RLE;\n\t\t\t\t\n\tfor (var i = 0; i < logicalFromVisual.length; i++) {\n\t\tbidiLevels[i] = levels[logicalFromVisual[i]];\n\t}\n\n\treturn {'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels};\n};\nexports.hasBidiCharacters = function(text, textCharTypes){\n\tvar ret = false;\n\tfor (var i = 0; i < text.length; i++){\n\t\ttextCharTypes[i] = _getCharacterType(text.charAt(i));\n\t\tif (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL || textCharTypes[i] == AN))\n\t\t\tret = true;\n\t}\n\treturn ret;\n};\t\nexports.getVisualFromLogicalIdx = function(logIdx, rowMap) {\n\tfor (var i = 0; i < rowMap.logicalFromVisual.length; i++) {\n\t\tif (rowMap.logicalFromVisual[i] == logIdx)\n\t\t\treturn i;\n\t}\n\treturn 0;\n};\n\n});\n\nace.define(\"ace/bidihandler\",[\"require\",\"exports\",\"module\",\"ace/lib/bidiutil\",\"ace/lib/lang\"], function(require, exports, module) {\n\"use strict\";\n\nvar bidiUtil = require(\"./lib/bidiutil\");\nvar lang = require(\"./lib/lang\");\nvar bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac\\u202B]/;\nvar BidiHandler = function(session) {\n this.session = session;\n this.bidiMap = {};\n this.currentRow = null;\n this.bidiUtil = bidiUtil;\n this.charWidths = [];\n this.EOL = \"\\xAC\";\n this.showInvisibles = true;\n this.isRtlDir = false;\n this.$isRtl = false;\n this.line = \"\";\n this.wrapIndent = 0;\n this.EOF = \"\\xB6\";\n this.RLE = \"\\u202B\";\n this.contentWidth = 0;\n this.fontMetrics = null;\n this.rtlLineOffset = 0;\n this.wrapOffset = 0;\n this.isMoveLeftOperation = false;\n this.seenBidi = bidiRE.test(session.getValue());\n};\n\n(function() {\n this.isBidiRow = function(screenRow, docRow, splitIndex) {\n if (!this.seenBidi)\n return false;\n if (screenRow !== this.currentRow) {\n this.currentRow = screenRow;\n this.updateRowLine(docRow, splitIndex);\n this.updateBidiMap();\n }\n return this.bidiMap.bidiLevels;\n };\n\n this.onChange = function(delta) {\n if (!this.seenBidi) {\n if (delta.action == \"insert\" && bidiRE.test(delta.lines.join(\"\\n\"))) {\n this.seenBidi = true;\n this.currentRow = null;\n }\n } \n else {\n this.currentRow = null;\n }\n };\n\n this.getDocumentRow = function() {\n var docRow = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var index = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n if (index >= 0)\n docRow = this.session.$docRowCache[index];\n }\n\n return docRow;\n };\n\n this.getSplitIndex = function() {\n var splitIndex = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var currentIndex, prevIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n while (this.currentRow - splitIndex > 0) {\n currentIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow - splitIndex - 1);\n if (currentIndex !== prevIndex)\n break;\n\n prevIndex = currentIndex;\n splitIndex++;\n }\n } else {\n splitIndex = this.currentRow;\n }\n\n return splitIndex;\n };\n\n this.updateRowLine = function(docRow, splitIndex) {\n if (docRow === undefined)\n docRow = this.getDocumentRow();\n \n var isLastRow = (docRow === this.session.getLength() - 1),\n endOfLine = isLastRow ? this.EOF : this.EOL;\n\n this.wrapIndent = 0;\n this.line = this.session.getLine(docRow);\n this.isRtlDir = this.$isRtl || this.line.charAt(0) === this.RLE;\n if (this.session.$useWrapMode) {\n var splits = this.session.$wrapData[docRow];\n if (splits) {\n if (splitIndex === undefined)\n splitIndex = this.getSplitIndex();\n\n if(splitIndex > 0 && splits.length) {\n this.wrapIndent = splits.indent;\n this.wrapOffset = this.wrapIndent * this.charWidths[bidiUtil.L];\n this.line = (splitIndex < splits.length) ?\n this.line.substring(splits[splitIndex - 1], splits[splitIndex]) :\n this.line.substring(splits[splits.length - 1]);\n } else {\n this.line = this.line.substring(0, splits[splitIndex]);\n }\n }\n if (splitIndex == splits.length)\n this.line += (this.showInvisibles) ? endOfLine : bidiUtil.DOT;\n } else {\n this.line += this.showInvisibles ? endOfLine : bidiUtil.DOT;\n }\n var session = this.session, shift = 0, size;\n this.line = this.line.replace(/\\t|[\\u1100-\\u2029, \\u202F-\\uFFE6]/g, function(ch, i){\n if (ch === '\\t' || session.isFullWidth(ch.charCodeAt(0))) {\n size = (ch === '\\t') ? session.getScreenTabSize(i + shift) : 2;\n shift += size - 1;\n return lang.stringRepeat(bidiUtil.DOT, size);\n }\n return ch;\n });\n\n if (this.isRtlDir) {\n this.fontMetrics.$main.textContent = (this.line.charAt(this.line.length - 1) == bidiUtil.DOT) ? this.line.substr(0, this.line.length - 1) : this.line;\n this.rtlLineOffset = this.contentWidth - this.fontMetrics.$main.getBoundingClientRect().width;\n }\n };\n \n this.updateBidiMap = function() {\n var textCharTypes = [];\n if (bidiUtil.hasBidiCharacters(this.line, textCharTypes) || this.isRtlDir) {\n this.bidiMap = bidiUtil.doBidiReorder(this.line, textCharTypes, this.isRtlDir);\n } else {\n this.bidiMap = {};\n }\n };\n this.markAsDirty = function() {\n this.currentRow = null;\n };\n this.updateCharacterWidths = function(fontMetrics) {\n if (this.characterWidth === fontMetrics.$characterSize.width)\n return;\n\n this.fontMetrics = fontMetrics;\n var characterWidth = this.characterWidth = fontMetrics.$characterSize.width;\n var bidiCharWidth = fontMetrics.$measureCharWidth(\"\\u05d4\");\n\n this.charWidths[bidiUtil.L] = this.charWidths[bidiUtil.EN] = this.charWidths[bidiUtil.ON_R] = characterWidth;\n this.charWidths[bidiUtil.R] = this.charWidths[bidiUtil.AN] = bidiCharWidth;\n this.charWidths[bidiUtil.R_H] = bidiCharWidth * 0.45;\n this.charWidths[bidiUtil.B] = this.charWidths[bidiUtil.RLE] = 0;\n\n this.currentRow = null;\n };\n\n this.setShowInvisibles = function(showInvisibles) {\n this.showInvisibles = showInvisibles;\n this.currentRow = null;\n };\n\n this.setEolChar = function(eolChar) {\n this.EOL = eolChar; \n };\n\n this.setContentWidth = function(width) {\n this.contentWidth = width;\n };\n\n this.isRtlLine = function(row) {\n if (this.$isRtl) return true;\n if (row != undefined)\n return (this.session.getLine(row).charAt(0) == this.RLE);\n else\n return this.isRtlDir; \n };\n\n this.setRtlDirection = function(editor, isRtlDir) {\n var cursor = editor.getCursorPosition(); \n for (var row = editor.selection.getSelectionAnchor().row; row <= cursor.row; row++) {\n if (!isRtlDir && editor.session.getLine(row).charAt(0) === editor.session.$bidiHandler.RLE)\n editor.session.doc.removeInLine(row, 0, 1);\n else if (isRtlDir && editor.session.getLine(row).charAt(0) !== editor.session.$bidiHandler.RLE)\n editor.session.doc.insert({column: 0, row: row}, editor.session.$bidiHandler.RLE);\n }\n };\n this.getPosLeft = function(col) {\n col -= this.wrapIndent;\n var leftBoundary = (this.line.charAt(0) === this.RLE) ? 1 : 0;\n var logicalIdx = (col > leftBoundary) ? (this.session.getOverwrite() ? col : col - 1) : leftBoundary;\n var visualIdx = bidiUtil.getVisualFromLogicalIdx(logicalIdx, this.bidiMap),\n levels = this.bidiMap.bidiLevels, left = 0;\n\n if (!this.session.getOverwrite() && col <= leftBoundary && levels[visualIdx] % 2 !== 0)\n visualIdx++;\n \n for (var i = 0; i < visualIdx; i++) {\n left += this.charWidths[levels[i]];\n }\n\n if (!this.session.getOverwrite() && (col > leftBoundary) && (levels[visualIdx] % 2 === 0))\n left += this.charWidths[levels[visualIdx]];\n\n if (this.wrapIndent)\n left += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n\n if (this.isRtlDir)\n left += this.rtlLineOffset;\n\n return left;\n };\n this.getSelections = function(startCol, endCol) {\n var map = this.bidiMap, levels = map.bidiLevels, level, selections = [], offset = 0,\n selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent,\n isSelected = false, isSelectedPrev = false, selectionStart = 0;\n \n if (this.wrapIndent)\n offset += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n\n for (var logIdx, visIdx = 0; visIdx < levels.length; visIdx++) {\n logIdx = map.logicalFromVisual[visIdx];\n level = levels[visIdx];\n isSelected = (logIdx >= selColMin) && (logIdx < selColMax);\n if (isSelected && !isSelectedPrev) {\n selectionStart = offset;\n } else if (!isSelected && isSelectedPrev) {\n selections.push({left: selectionStart, width: offset - selectionStart});\n }\n offset += this.charWidths[level];\n isSelectedPrev = isSelected;\n }\n\n if (isSelected && (visIdx === levels.length)) {\n selections.push({left: selectionStart, width: offset - selectionStart});\n }\n\n if(this.isRtlDir) {\n for (var i = 0; i < selections.length; i++) {\n selections[i].left += this.rtlLineOffset;\n }\n }\n return selections;\n };\n this.offsetToCol = function(posX) {\n if(this.isRtlDir)\n posX -= this.rtlLineOffset;\n\n var logicalIdx = 0, posX = Math.max(posX, 0),\n offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels,\n charWidth = this.charWidths[levels[visualIdx]];\n\n if (this.wrapIndent)\n posX -= this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n \n while(posX > offset + charWidth/2) {\n offset += charWidth;\n if(visualIdx === levels.length - 1) {\n charWidth = 0;\n break;\n }\n charWidth = this.charWidths[levels[++visualIdx]];\n }\n \n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)){\n if(posX < offset)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n\n } else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)){\n logicalIdx = 1 + ((posX > offset) ? this.bidiMap.logicalFromVisual[visualIdx]\n : this.bidiMap.logicalFromVisual[visualIdx - 1]);\n\n } else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0))\n || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))){\n logicalIdx = 1 + this.bidiMap.logicalFromVisual[visualIdx];\n } else {\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && charWidth !== 0)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n\n if (logicalIdx === 0 && this.isRtlDir)\n logicalIdx++;\n\n return (logicalIdx + this.wrapIndent);\n };\n\n}).call(BidiHandler.prototype);\n\nexports.BidiHandler = BidiHandler;\n});\n\nace.define(\"ace/selection\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Selection = function(session) {\n this.session = session;\n this.doc = session.getDocument();\n\n this.clearSelection();\n this.cursor = this.lead = this.doc.createAnchor(0, 0);\n this.anchor = this.doc.createAnchor(0, 0);\n this.$silent = false;\n\n var self = this;\n this.cursor.on(\"change\", function(e) {\n self.$cursorChanged = true;\n if (!self.$silent)\n self._emit(\"changeCursor\");\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column)\n self.$desiredColumn = null;\n });\n\n this.anchor.on(\"change\", function() {\n self.$anchorChanged = true;\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n });\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.isEmpty = function() {\n return this.$isEmpty || (\n this.anchor.row == this.lead.row &&\n this.anchor.column == this.lead.column\n );\n };\n this.isMultiLine = function() {\n return !this.$isEmpty && this.anchor.row != this.cursor.row;\n };\n this.getCursor = function() {\n return this.lead.getPosition();\n };\n this.setSelectionAnchor = function(row, column) {\n this.$isEmpty = false;\n this.anchor.setPosition(row, column);\n };\n this.getAnchor = \n this.getSelectionAnchor = function() {\n if (this.$isEmpty)\n return this.getSelectionLead();\n \n return this.anchor.getPosition();\n };\n this.getSelectionLead = function() {\n return this.lead.getPosition();\n };\n this.isBackwards = function() {\n var anchor = this.anchor;\n var lead = this.lead;\n return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column));\n };\n this.getRange = function() {\n var anchor = this.anchor;\n var lead = this.lead;\n\n if (this.$isEmpty)\n return Range.fromPoints(lead, lead);\n\n return this.isBackwards()\n ? Range.fromPoints(lead, anchor)\n : Range.fromPoints(anchor, lead);\n };\n this.clearSelection = function() {\n if (!this.$isEmpty) {\n this.$isEmpty = true;\n this._emit(\"changeSelection\");\n }\n };\n this.selectAll = function() {\n this.$setSelection(0, 0, Number.MAX_VALUE, Number.MAX_VALUE);\n };\n this.setRange =\n this.setSelectionRange = function(range, reverse) {\n var start = reverse ? range.end : range.start;\n var end = reverse ? range.start : range.end;\n this.$setSelection(start.row, start.column, end.row, end.column);\n };\n\n this.$setSelection = function(anchorRow, anchorColumn, cursorRow, cursorColumn) {\n if (this.$silent)\n return;\n var wasEmpty = this.$isEmpty;\n var wasMultiselect = this.inMultiSelectMode;\n this.$silent = true;\n this.$cursorChanged = this.$anchorChanged = false;\n this.anchor.setPosition(anchorRow, anchorColumn);\n this.cursor.setPosition(cursorRow, cursorColumn);\n this.$isEmpty = !Range.comparePoints(this.anchor, this.cursor);\n this.$silent = false;\n if (this.$cursorChanged)\n this._emit(\"changeCursor\");\n if (this.$cursorChanged || this.$anchorChanged || wasEmpty != this.$isEmpty || wasMultiselect)\n this._emit(\"changeSelection\");\n };\n\n this.$moveSelection = function(mover) {\n var lead = this.lead;\n if (this.$isEmpty)\n this.setSelectionAnchor(lead.row, lead.column);\n\n mover.call(this);\n };\n this.selectTo = function(row, column) {\n this.$moveSelection(function() {\n this.moveCursorTo(row, column);\n });\n };\n this.selectToPosition = function(pos) {\n this.$moveSelection(function() {\n this.moveCursorToPosition(pos);\n });\n };\n this.moveTo = function(row, column) {\n this.clearSelection();\n this.moveCursorTo(row, column);\n };\n this.moveToPosition = function(pos) {\n this.clearSelection();\n this.moveCursorToPosition(pos);\n };\n this.selectUp = function() {\n this.$moveSelection(this.moveCursorUp);\n };\n this.selectDown = function() {\n this.$moveSelection(this.moveCursorDown);\n };\n this.selectRight = function() {\n this.$moveSelection(this.moveCursorRight);\n };\n this.selectLeft = function() {\n this.$moveSelection(this.moveCursorLeft);\n };\n this.selectLineStart = function() {\n this.$moveSelection(this.moveCursorLineStart);\n };\n this.selectLineEnd = function() {\n this.$moveSelection(this.moveCursorLineEnd);\n };\n this.selectFileEnd = function() {\n this.$moveSelection(this.moveCursorFileEnd);\n };\n this.selectFileStart = function() {\n this.$moveSelection(this.moveCursorFileStart);\n };\n this.selectWordRight = function() {\n this.$moveSelection(this.moveCursorWordRight);\n };\n this.selectWordLeft = function() {\n this.$moveSelection(this.moveCursorWordLeft);\n };\n this.getWordRange = function(row, column) {\n if (typeof column == \"undefined\") {\n var cursor = row || this.lead;\n row = cursor.row;\n column = cursor.column;\n }\n return this.session.getWordRange(row, column);\n };\n this.selectWord = function() {\n this.setSelectionRange(this.getWordRange());\n };\n this.selectAWord = function() {\n var cursor = this.getCursor();\n var range = this.session.getAWordRange(cursor.row, cursor.column);\n this.setSelectionRange(range);\n };\n\n this.getLineRange = function(row, excludeLastChar) {\n var rowStart = typeof row == \"number\" ? row : this.lead.row;\n var rowEnd;\n\n var foldLine = this.session.getFoldLine(rowStart);\n if (foldLine) {\n rowStart = foldLine.start.row;\n rowEnd = foldLine.end.row;\n } else {\n rowEnd = rowStart;\n }\n if (excludeLastChar === true)\n return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length);\n else\n return new Range(rowStart, 0, rowEnd + 1, 0);\n };\n this.selectLine = function() {\n this.setSelectionRange(this.getLineRange());\n };\n this.moveCursorUp = function() {\n this.moveCursorBy(-1, 0);\n };\n this.moveCursorDown = function() {\n this.moveCursorBy(1, 0);\n };\n this.wouldMoveIntoSoftTab = function(cursor, tabSize, direction) {\n var start = cursor.column;\n var end = cursor.column + tabSize;\n\n if (direction < 0) {\n start = cursor.column - tabSize;\n end = cursor.column;\n }\n return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(\" \").length-1 == tabSize;\n };\n this.moveCursorLeft = function() {\n var cursor = this.lead.getPosition(),\n fold;\n\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n } else if (cursor.column === 0) {\n if (cursor.row > 0) {\n this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, -tabSize);\n } else {\n this.moveCursorBy(0, -1);\n }\n }\n };\n this.moveCursorRight = function() {\n var cursor = this.lead.getPosition(),\n fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n }\n else if (this.lead.column == this.doc.getLine(this.lead.row).length) {\n if (this.lead.row < this.doc.getLength() - 1) {\n this.moveCursorTo(this.lead.row + 1, 0);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n var cursor = this.lead;\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, tabSize);\n } else {\n this.moveCursorBy(0, 1);\n }\n }\n };\n this.moveCursorLineStart = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var screenRow = this.session.documentToScreenRow(row, column);\n var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0);\n var beforeCursor = this.session.getDisplayLine(\n row, null, firstColumnPosition.row,\n firstColumnPosition.column\n );\n\n var leadingSpace = beforeCursor.match(/^\\s*/);\n if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart)\n firstColumnPosition.column += leadingSpace[0].length;\n this.moveCursorToPosition(firstColumnPosition);\n };\n this.moveCursorLineEnd = function() {\n var lead = this.lead;\n var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column);\n if (this.lead.column == lineEnd.column) {\n var line = this.session.getLine(lineEnd.row);\n if (lineEnd.column == line.length) {\n var textEnd = line.search(/\\s+$/);\n if (textEnd > 0)\n lineEnd.column = textEnd;\n }\n }\n\n this.moveCursorTo(lineEnd.row, lineEnd.column);\n };\n this.moveCursorFileEnd = function() {\n var row = this.doc.getLength() - 1;\n var column = this.doc.getLine(row).length;\n this.moveCursorTo(row, column);\n };\n this.moveCursorFileStart = function() {\n this.moveCursorTo(0, 0);\n };\n this.moveCursorLongWordRight = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n return;\n }\n if (this.session.nonTokenRe.exec(rightOfCursor)) {\n column += this.session.nonTokenRe.lastIndex;\n this.session.nonTokenRe.lastIndex = 0;\n rightOfCursor = line.substring(column);\n }\n if (column >= line.length) {\n this.moveCursorTo(row, line.length);\n this.moveCursorRight();\n if (row < this.doc.getLength() - 1)\n this.moveCursorWordRight();\n return;\n }\n if (this.session.tokenRe.exec(rightOfCursor)) {\n column += this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n\n this.moveCursorTo(row, column);\n };\n this.moveCursorLongWordLeft = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n return;\n }\n\n var str = this.session.getFoldStringAt(row, column, -1);\n if (str == null) {\n str = this.doc.getLine(row).substring(0, column);\n }\n\n var leftOfCursor = lang.stringReverse(str);\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n if (this.session.nonTokenRe.exec(leftOfCursor)) {\n column -= this.session.nonTokenRe.lastIndex;\n leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex);\n this.session.nonTokenRe.lastIndex = 0;\n }\n if (column <= 0) {\n this.moveCursorTo(row, 0);\n this.moveCursorLeft();\n if (row > 0)\n this.moveCursorWordLeft();\n return;\n }\n if (this.session.tokenRe.exec(leftOfCursor)) {\n column -= this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n\n this.moveCursorTo(row, column);\n };\n\n this.$shortWordEndIndex = function(rightOfCursor) {\n var index = 0, ch;\n var whitespaceRe = /\\s/;\n var tokenRe = this.session.tokenRe;\n\n tokenRe.lastIndex = 0;\n if (this.session.tokenRe.exec(rightOfCursor)) {\n index = this.session.tokenRe.lastIndex;\n } else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index ++;\n\n if (index < 1) {\n tokenRe.lastIndex = 0;\n while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) {\n tokenRe.lastIndex = 0;\n index ++;\n if (whitespaceRe.test(ch)) {\n if (index > 2) {\n index--;\n break;\n } else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index ++;\n if (index > 2)\n break;\n }\n }\n }\n }\n }\n tokenRe.lastIndex = 0;\n\n return index;\n };\n\n this.moveCursorShortWordRight = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold)\n return this.moveCursorTo(fold.end.row, fold.end.column);\n\n if (column == line.length) {\n var l = this.doc.getLength();\n do {\n row++;\n rightOfCursor = this.doc.getLine(row);\n } while (row < l && /^\\s*$/.test(rightOfCursor));\n\n if (!/^\\s+/.test(rightOfCursor))\n rightOfCursor = \"\";\n column = 0;\n }\n\n var index = this.$shortWordEndIndex(rightOfCursor);\n\n this.moveCursorTo(row, column + index);\n };\n\n this.moveCursorShortWordLeft = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1))\n return this.moveCursorTo(fold.start.row, fold.start.column);\n\n var line = this.session.getLine(row).substring(0, column);\n if (column === 0) {\n do {\n row--;\n line = this.doc.getLine(row);\n } while (row > 0 && /^\\s*$/.test(line));\n\n column = line.length;\n if (!/\\s+$/.test(line))\n line = \"\";\n }\n\n var leftOfCursor = lang.stringReverse(line);\n var index = this.$shortWordEndIndex(leftOfCursor);\n\n return this.moveCursorTo(row, column - index);\n };\n\n this.moveCursorWordRight = function() {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordRight();\n else\n this.moveCursorShortWordRight();\n };\n\n this.moveCursorWordLeft = function() {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordLeft();\n else\n this.moveCursorShortWordLeft();\n };\n this.moveCursorBy = function(rows, chars) {\n var screenPos = this.session.documentToScreenPosition(\n this.lead.row,\n this.lead.column\n );\n\n var offsetX;\n\n if (chars === 0) {\n if (rows !== 0) {\n if (this.session.$bidiHandler.isBidiRow(screenPos.row, this.lead.row)) {\n offsetX = this.session.$bidiHandler.getPosLeft(screenPos.column);\n screenPos.column = Math.round(offsetX / this.session.$bidiHandler.charWidths[0]);\n } else {\n offsetX = screenPos.column * this.session.$bidiHandler.charWidths[0];\n }\n }\n\n if (this.$desiredColumn)\n screenPos.column = this.$desiredColumn;\n else\n this.$desiredColumn = screenPos.column;\n }\n \n if (rows != 0 && this.session.lineWidgets && this.session.lineWidgets[this.lead.row]) {\n var widget = this.session.lineWidgets[this.lead.row];\n if (rows < 0)\n rows -= widget.rowsAbove || 0;\n else if (rows > 0)\n rows += widget.rowCount - (widget.rowsAbove || 0);\n }\n \n var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX);\n \n if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) {\n \n }\n this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0);\n };\n this.moveCursorToPosition = function(position) {\n this.moveCursorTo(position.row, position.column);\n };\n this.moveCursorTo = function(row, column, keepDesiredColumn) {\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n row = fold.start.row;\n column = fold.start.column;\n }\n\n this.$keepDesiredColumnOnChange = true;\n var line = this.session.getLine(row);\n if (/[\\uDC00-\\uDFFF]/.test(line.charAt(column)) && line.charAt(column - 1)) {\n if (this.lead.row == row && this.lead.column == column + 1)\n column = column - 1;\n else\n column = column + 1;\n }\n this.lead.setPosition(row, column);\n this.$keepDesiredColumnOnChange = false;\n\n if (!keepDesiredColumn)\n this.$desiredColumn = null;\n };\n this.moveCursorToScreen = function(row, column, keepDesiredColumn) {\n var pos = this.session.screenToDocumentPosition(row, column);\n this.moveCursorTo(pos.row, pos.column, keepDesiredColumn);\n };\n this.detach = function() {\n this.lead.detach();\n this.anchor.detach();\n };\n\n this.fromOrientedRange = function(range) {\n this.setSelectionRange(range, range.cursor == range.start);\n this.$desiredColumn = range.desiredColumn || this.$desiredColumn;\n };\n\n this.toOrientedRange = function(range) {\n var r = this.getRange();\n if (range) {\n range.start.column = r.start.column;\n range.start.row = r.start.row;\n range.end.column = r.end.column;\n range.end.row = r.end.row;\n } else {\n range = r;\n }\n\n range.cursor = this.isBackwards() ? range.start : range.end;\n range.desiredColumn = this.$desiredColumn;\n return range;\n };\n this.getRangeOfMovements = function(func) {\n var start = this.getCursor();\n try {\n func(this);\n var end = this.getCursor();\n return Range.fromPoints(start, end);\n } catch(e) {\n return Range.fromPoints(start, start);\n } finally {\n this.moveCursorToPosition(start);\n }\n };\n\n this.toJSON = function() {\n if (this.rangeCount) {\n var data = this.ranges.map(function(r) {\n var r1 = r.clone();\n r1.isBackwards = r.cursor == r.start;\n return r1;\n });\n } else {\n var data = this.getRange();\n data.isBackwards = this.isBackwards();\n }\n return data;\n };\n\n this.fromJSON = function(data) {\n if (data.start == undefined) {\n if (this.rangeList && data.length > 1) {\n this.toSingleRange(data[0]);\n for (var i = data.length; i--; ) {\n var r = Range.fromPoints(data[i].start, data[i].end);\n if (data[i].isBackwards)\n r.cursor = r.start;\n this.addRange(r, true);\n }\n return;\n } else {\n data = data[0];\n }\n }\n if (this.rangeList)\n this.toSingleRange(data);\n this.setSelectionRange(data, data.isBackwards);\n };\n\n this.isEqual = function(data) {\n if ((data.length || this.rangeCount) && data.length != this.rangeCount)\n return false;\n if (!data.length || !this.ranges)\n return this.getRange().isEqual(data);\n\n for (var i = this.ranges.length; i--; ) {\n if (!this.ranges[i].isEqual(data[i]))\n return false;\n }\n return true;\n };\n\n}).call(Selection.prototype);\n\nexports.Selection = Selection;\n});\n\nace.define(\"ace/tokenizer\",[\"require\",\"exports\",\"module\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nvar config = require(\"./config\");\nvar MAX_TOKEN_COUNT = 2000;\nvar Tokenizer = function(rules) {\n this.states = rules;\n\n this.regExps = {};\n this.matchMappings = {};\n for (var key in this.states) {\n var state = this.states[key];\n var ruleRegExps = [];\n var matchTotal = 0;\n var mapping = this.matchMappings[key] = {defaultToken: \"text\"};\n var flag = \"g\";\n\n var splitterRurles = [];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.defaultToken)\n mapping.defaultToken = rule.defaultToken;\n if (rule.caseInsensitive)\n flag = \"gi\";\n if (rule.regex == null)\n continue;\n\n if (rule.regex instanceof RegExp)\n rule.regex = rule.regex.toString().slice(1, -1);\n var adjustedregex = rule.regex;\n var matchcount = new RegExp(\"(?:(\" + adjustedregex + \")|(.))\").exec(\"a\").length - 2;\n if (Array.isArray(rule.token)) {\n if (rule.token.length == 1 || matchcount == 1) {\n rule.token = rule.token[0];\n } else if (matchcount - 1 != rule.token.length) {\n this.reportError(\"number of classes and regexp groups doesn't match\", { \n rule: rule,\n groupCount: matchcount - 1\n });\n rule.token = rule.token[0];\n } else {\n rule.tokenArray = rule.token;\n rule.token = null;\n rule.onMatch = this.$arrayTokens;\n }\n } else if (typeof rule.token == \"function\" && !rule.onMatch) {\n if (matchcount > 1)\n rule.onMatch = this.$applyToken;\n else\n rule.onMatch = rule.token;\n }\n\n if (matchcount > 1) {\n if (/\\\\\\d/.test(rule.regex)) {\n adjustedregex = rule.regex.replace(/\\\\([0-9]+)/g, function(match, digit) {\n return \"\\\\\" + (parseInt(digit, 10) + matchTotal + 1);\n });\n } else {\n matchcount = 1;\n adjustedregex = this.removeCapturingGroups(rule.regex);\n }\n if (!rule.splitRegex && typeof rule.token != \"string\")\n splitterRurles.push(rule); // flag will be known only at the very end\n }\n\n mapping[matchTotal] = i;\n matchTotal += matchcount;\n\n ruleRegExps.push(adjustedregex);\n if (!rule.onMatch)\n rule.onMatch = null;\n }\n \n if (!ruleRegExps.length) {\n mapping[0] = 0;\n ruleRegExps.push(\"$\");\n }\n \n splitterRurles.forEach(function(rule) {\n rule.splitRegex = this.createSplitterRegexp(rule.regex, flag);\n }, this);\n\n this.regExps[key] = new RegExp(\"(\" + ruleRegExps.join(\")|(\") + \")|($)\", flag);\n }\n};\n\n(function() {\n this.$setMaxTokenCount = function(m) {\n MAX_TOKEN_COUNT = m | 0;\n };\n \n this.$applyToken = function(str) {\n var values = this.splitRegex.exec(str).slice(1);\n var types = this.token.apply(this, values);\n if (typeof types === \"string\")\n return [{type: types, value: str}];\n\n var tokens = [];\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i]\n };\n }\n return tokens;\n };\n\n this.$arrayTokens = function(str) {\n if (!str)\n return [];\n var values = this.splitRegex.exec(str);\n if (!values)\n return \"text\";\n var tokens = [];\n var types = this.tokenArray;\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i + 1])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i + 1]\n };\n }\n return tokens;\n };\n\n this.removeCapturingGroups = function(src) {\n var r = src.replace(\n /\\\\.|\\[(?:\\\\.|[^\\\\\\]])*|\\(\\?[:=!<]|(\\()/g,\n function(x, y) {return y ? \"(?:\" : x;}\n );\n return r;\n };\n\n this.createSplitterRegexp = function(src, flag) {\n if (src.indexOf(\"(?=\") != -1) {\n var stack = 0;\n var inChClass = false;\n var lastCapture = {};\n src.replace(/(\\\\.)|(\\((?:\\?[=!])?)|(\\))|([\\[\\]])/g, function(\n m, esc, parenOpen, parenClose, square, index\n ) {\n if (inChClass) {\n inChClass = square != \"]\";\n } else if (square) {\n inChClass = true;\n } else if (parenClose) {\n if (stack == lastCapture.stack) {\n lastCapture.end = index+1;\n lastCapture.stack = -1;\n }\n stack--;\n } else if (parenOpen) {\n stack++;\n if (parenOpen.length != 1) {\n lastCapture.stack = stack;\n lastCapture.start = index;\n }\n }\n return m;\n });\n\n if (lastCapture.end != null && /^\\)*$/.test(src.substr(lastCapture.end)))\n src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end);\n }\n if (src.charAt(0) != \"^\") src = \"^\" + src;\n if (src.charAt(src.length - 1) != \"$\") src += \"$\";\n \n return new RegExp(src, (flag||\"\").replace(\"g\", \"\"));\n };\n this.getLineTokens = function(line, startState) {\n if (startState && typeof startState != \"string\") {\n var stack = startState.slice(0);\n startState = stack[0];\n if (startState === \"#tmp\") {\n stack.shift();\n startState = stack.shift();\n }\n } else\n var stack = [];\n\n var currentState = startState || \"start\";\n var state = this.states[currentState];\n if (!state) {\n currentState = \"start\";\n state = this.states[currentState];\n }\n var mapping = this.matchMappings[currentState];\n var re = this.regExps[currentState];\n re.lastIndex = 0;\n\n var match, tokens = [];\n var lastIndex = 0;\n var matchAttempts = 0;\n\n var token = {type: null, value: \"\"};\n\n while (match = re.exec(line)) {\n var type = mapping.defaultToken;\n var rule = null;\n var value = match[0];\n var index = re.lastIndex;\n\n if (index - value.length > lastIndex) {\n var skipped = line.substring(lastIndex, index - value.length);\n if (token.type == type) {\n token.value += skipped;\n } else {\n if (token.type)\n tokens.push(token);\n token = {type: type, value: skipped};\n }\n }\n\n for (var i = 0; i < match.length-2; i++) {\n if (match[i + 1] === undefined)\n continue;\n\n rule = state[mapping[i]];\n\n if (rule.onMatch)\n type = rule.onMatch(value, currentState, stack, line);\n else\n type = rule.token;\n\n if (rule.next) {\n if (typeof rule.next == \"string\") {\n currentState = rule.next;\n } else {\n currentState = rule.next(currentState, stack);\n }\n \n state = this.states[currentState];\n if (!state) {\n this.reportError(\"state doesn't exist\", currentState);\n currentState = \"start\";\n state = this.states[currentState];\n }\n mapping = this.matchMappings[currentState];\n lastIndex = index;\n re = this.regExps[currentState];\n re.lastIndex = index;\n }\n if (rule.consumeLineEnd)\n lastIndex = index;\n break;\n }\n\n if (value) {\n if (typeof type === \"string\") {\n if ((!rule || rule.merge !== false) && token.type === type) {\n token.value += value;\n } else {\n if (token.type)\n tokens.push(token);\n token = {type: type, value: value};\n }\n } else if (type) {\n if (token.type)\n tokens.push(token);\n token = {type: null, value: \"\"};\n for (var i = 0; i < type.length; i++)\n tokens.push(type[i]);\n }\n }\n\n if (lastIndex == line.length)\n break;\n\n lastIndex = index;\n\n if (matchAttempts++ > MAX_TOKEN_COUNT) {\n if (matchAttempts > 2 * line.length) {\n this.reportError(\"infinite loop with in ace tokenizer\", {\n startState: startState,\n line: line\n });\n }\n while (lastIndex < line.length) {\n if (token.type)\n tokens.push(token);\n token = {\n value: line.substring(lastIndex, lastIndex += 500),\n type: \"overflow\"\n };\n }\n currentState = \"start\";\n stack = [];\n break;\n }\n }\n\n if (token.type)\n tokens.push(token);\n \n if (stack.length > 1) {\n if (stack[0] !== currentState)\n stack.unshift(\"#tmp\", currentState);\n }\n return {\n tokens : tokens,\n state : stack.length ? stack : currentState\n };\n };\n \n this.reportError = config.reportError;\n \n}).call(Tokenizer.prototype);\n\nexports.Tokenizer = Tokenizer;\n});\n\nace.define(\"ace/mode/text_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\"], function(require, exports, module) {\n\"use strict\";\n\nvar lang = require(\"../lib/lang\");\n\nvar TextHighlightRules = function() {\n\n this.$rules = {\n \"start\" : [{\n token : \"empty_line\",\n regex : '^$'\n }, {\n defaultToken : \"text\"\n }]\n };\n};\n\n(function() {\n\n this.addRules = function(rules, prefix) {\n if (!prefix) {\n for (var key in rules)\n this.$rules[key] = rules[key];\n return;\n }\n for (var key in rules) {\n var state = rules[key];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.next || rule.onMatch) {\n if (typeof rule.next == \"string\") {\n if (rule.next.indexOf(prefix) !== 0)\n rule.next = prefix + rule.next;\n }\n if (rule.nextState && rule.nextState.indexOf(prefix) !== 0)\n rule.nextState = prefix + rule.nextState;\n }\n }\n this.$rules[prefix + key] = state;\n }\n };\n\n this.getRules = function() {\n return this.$rules;\n };\n\n this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) {\n var embedRules = typeof HighlightRules == \"function\"\n ? new HighlightRules().getRules()\n : HighlightRules;\n if (states) {\n for (var i = 0; i < states.length; i++)\n states[i] = prefix + states[i];\n } else {\n states = [];\n for (var key in embedRules)\n states.push(prefix + key);\n }\n\n this.addRules(embedRules, prefix);\n\n if (escapeRules) {\n var addRules = Array.prototype[append ? \"push\" : \"unshift\"];\n for (var i = 0; i < states.length; i++)\n addRules.apply(this.$rules[states[i]], lang.deepCopy(escapeRules));\n }\n\n if (!this.$embeds)\n this.$embeds = [];\n this.$embeds.push(prefix);\n };\n\n this.getEmbeds = function() {\n return this.$embeds;\n };\n\n var pushState = function(currentState, stack) {\n if (currentState != \"start\" || stack.length)\n stack.unshift(this.nextState, currentState);\n return this.nextState;\n };\n var popState = function(currentState, stack) {\n stack.shift();\n return stack.shift() || \"start\";\n };\n\n this.normalizeRules = function() {\n var id = 0;\n var rules = this.$rules;\n function processState(key) {\n var state = rules[key];\n state.processed = true;\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n var toInsert = null;\n if (Array.isArray(rule)) {\n toInsert = rule;\n rule = {};\n }\n if (!rule.regex && rule.start) {\n rule.regex = rule.start;\n if (!rule.next)\n rule.next = [];\n rule.next.push({\n defaultToken: rule.token\n }, {\n token: rule.token + \".end\",\n regex: rule.end || rule.start,\n next: \"pop\"\n });\n rule.token = rule.token + \".start\";\n rule.push = true;\n }\n var next = rule.next || rule.push;\n if (next && Array.isArray(next)) {\n var stateName = rule.stateName;\n if (!stateName) {\n stateName = rule.token;\n if (typeof stateName != \"string\")\n stateName = stateName[0] || \"\";\n if (rules[stateName])\n stateName += id++;\n }\n rules[stateName] = next;\n rule.next = stateName;\n processState(stateName);\n } else if (next == \"pop\") {\n rule.next = popState;\n }\n\n if (rule.push) {\n rule.nextState = rule.next || rule.push;\n rule.next = pushState;\n delete rule.push;\n }\n\n if (rule.rules) {\n for (var r in rule.rules) {\n if (rules[r]) {\n if (rules[r].push)\n rules[r].push.apply(rules[r], rule.rules[r]);\n } else {\n rules[r] = rule.rules[r];\n }\n }\n }\n var includeName = typeof rule == \"string\" ? rule : rule.include;\n if (includeName) {\n if (Array.isArray(includeName))\n toInsert = includeName.map(function(x) { return rules[x]; });\n else\n toInsert = rules[includeName];\n }\n\n if (toInsert) {\n var args = [i, 1].concat(toInsert);\n if (rule.noEscape)\n args = args.filter(function(x) {return !x.next;});\n state.splice.apply(state, args);\n i--;\n }\n \n if (rule.keywordMap) {\n rule.token = this.createKeywordMapper(\n rule.keywordMap, rule.defaultToken || \"text\", rule.caseInsensitive\n );\n delete rule.defaultToken;\n }\n }\n }\n Object.keys(rules).forEach(processState, this);\n };\n\n this.createKeywordMapper = function(map, defaultToken, ignoreCase, splitChar) {\n var keywords = Object.create(null);\n this.$keywordList = [];\n Object.keys(map).forEach(function(className) {\n var a = map[className];\n var list = a.split(splitChar || \"|\");\n for (var i = list.length; i--; ) {\n var word = list[i];\n this.$keywordList.push(word);\n if (ignoreCase)\n word = word.toLowerCase(); \n keywords[word] = className;\n }\n }, this);\n map = null;\n return ignoreCase\n ? function(value) {return keywords[value.toLowerCase()] || defaultToken; }\n : function(value) {return keywords[value] || defaultToken; };\n };\n\n this.getKeywords = function() {\n return this.$keywords;\n };\n\n}).call(TextHighlightRules.prototype);\n\nexports.TextHighlightRules = TextHighlightRules;\n});\n\nace.define(\"ace/mode/behaviour\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\n\nvar Behaviour = function() {\n this.$behaviours = {};\n};\n\n(function () {\n\n this.add = function (name, action, callback) {\n switch (undefined) {\n case this.$behaviours:\n this.$behaviours = {};\n case this.$behaviours[name]:\n this.$behaviours[name] = {};\n }\n this.$behaviours[name][action] = callback;\n };\n \n this.addBehaviours = function (behaviours) {\n for (var key in behaviours) {\n for (var action in behaviours[key]) {\n this.add(key, action, behaviours[key][action]);\n }\n }\n };\n \n this.remove = function (name) {\n if (this.$behaviours && this.$behaviours[name]) {\n delete this.$behaviours[name];\n }\n };\n \n this.inherit = function (mode, filter) {\n if (typeof mode === \"function\") {\n var behaviours = new mode().getBehaviours(filter);\n } else {\n var behaviours = mode.getBehaviours(filter);\n }\n this.addBehaviours(behaviours);\n };\n \n this.getBehaviours = function (filter) {\n if (!filter) {\n return this.$behaviours;\n } else {\n var ret = {};\n for (var i = 0; i < filter.length; i++) {\n if (this.$behaviours[filter[i]]) {\n ret[filter[i]] = this.$behaviours[filter[i]];\n }\n }\n return ret;\n }\n };\n\n}).call(Behaviour.prototype);\n\nexports.Behaviour = Behaviour;\n});\n\nace.define(\"ace/token_iterator\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar Range = require(\"./range\").Range;\nvar TokenIterator = function(session, initialRow, initialColumn) {\n this.$session = session;\n this.$row = initialRow;\n this.$rowTokens = session.getTokens(initialRow);\n\n var token = session.getTokenAt(initialRow, initialColumn);\n this.$tokenIndex = token ? token.index : -1;\n};\n\n(function() { \n this.stepBackward = function() {\n this.$tokenIndex -= 1;\n \n while (this.$tokenIndex < 0) {\n this.$row -= 1;\n if (this.$row < 0) {\n this.$row = 0;\n return null;\n }\n \n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = this.$rowTokens.length - 1;\n }\n \n return this.$rowTokens[this.$tokenIndex];\n }; \n this.stepForward = function() {\n this.$tokenIndex += 1;\n var rowCount;\n while (this.$tokenIndex >= this.$rowTokens.length) {\n this.$row += 1;\n if (!rowCount)\n rowCount = this.$session.getLength();\n if (this.$row >= rowCount) {\n this.$row = rowCount - 1;\n return null;\n }\n\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = 0;\n }\n \n return this.$rowTokens[this.$tokenIndex];\n }; \n this.getCurrentToken = function () {\n return this.$rowTokens[this.$tokenIndex];\n }; \n this.getCurrentTokenRow = function () {\n return this.$row;\n }; \n this.getCurrentTokenColumn = function() {\n var rowTokens = this.$rowTokens;\n var tokenIndex = this.$tokenIndex;\n var column = rowTokens[tokenIndex].start;\n if (column !== undefined)\n return column;\n \n column = 0;\n while (tokenIndex > 0) {\n tokenIndex -= 1;\n column += rowTokens[tokenIndex].value.length;\n }\n \n return column; \n };\n this.getCurrentTokenPosition = function() {\n return {row: this.$row, column: this.getCurrentTokenColumn()};\n };\n this.getCurrentTokenRange = function() {\n var token = this.$rowTokens[this.$tokenIndex];\n var column = this.getCurrentTokenColumn();\n return new Range(this.$row, column, this.$row, column + token.value.length);\n };\n \n}).call(TokenIterator.prototype);\n\nexports.TokenIterator = TokenIterator;\n});\n\nace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar lang = require(\"../../lib/lang\");\n\nvar SAFE_INSERT_IN_TOKENS =\n [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\"];\nvar SAFE_INSERT_BEFORE_TOKENS =\n [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\", \"comment\"];\n\nvar context;\nvar contextCache = {};\nvar defaultQuotes = {'\"' : '\"', \"'\" : \"'\"};\n\nvar initContext = function(editor) {\n var id = -1;\n if (editor.multiSelect) {\n id = editor.selection.index;\n if (contextCache.rangeCount != editor.multiSelect.rangeCount)\n contextCache = {rangeCount: editor.multiSelect.rangeCount};\n }\n if (contextCache[id])\n return context = contextCache[id];\n context = contextCache[id] = {\n autoInsertedBrackets: 0,\n autoInsertedRow: -1,\n autoInsertedLineEnd: \"\",\n maybeInsertedBrackets: 0,\n maybeInsertedRow: -1,\n maybeInsertedLineStart: \"\",\n maybeInsertedLineEnd: \"\"\n };\n};\n\nvar getWrapped = function(selection, selected, opening, closing) {\n var rowDiff = selection.end.row - selection.start.row;\n return {\n text: opening + selected + closing,\n selection: [\n 0,\n selection.start.column + 1,\n rowDiff,\n selection.end.column + (rowDiff ? 0 : 1)\n ]\n };\n};\n\nvar CstyleBehaviour = function(options) {\n this.add(\"braces\", \"insertion\", function(state, action, editor, session, text) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (text == '{') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && selected !== \"{\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '{', '}');\n } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n if (/[\\]\\}\\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options && options.braces) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"}\");\n return {\n text: '{}',\n selection: [1, 1]\n };\n } else {\n CstyleBehaviour.recordMaybeInsert(editor, session, \"{\");\n return {\n text: '{',\n selection: [1, 1]\n };\n }\n }\n } else if (text == '}') {\n initContext(editor);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == '}') {\n var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n } else if (text == \"\\n\" || text == \"\\r\\n\") {\n initContext(editor);\n var closing = \"\";\n if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) {\n closing = lang.stringRepeat(\"}\", context.maybeInsertedBrackets);\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === '}') {\n var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}');\n if (!openBracePos)\n return null;\n var next_indent = this.$getIndent(session.getLine(openBracePos.row));\n } else if (closing) {\n var next_indent = this.$getIndent(line);\n } else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n return;\n }\n var indent = next_indent + session.getTabString();\n\n return {\n text: '\\n' + indent + '\\n' + next_indent + closing,\n selection: [1, indent.length, 1, indent.length]\n };\n } else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n });\n\n this.add(\"braces\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '{') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar == '}') {\n range.end.column++;\n return range;\n } else {\n context.maybeInsertedBrackets--;\n }\n }\n });\n\n this.add(\"parens\", \"insertion\", function(state, action, editor, session, text) {\n if (text == '(') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '(', ')');\n } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \")\");\n return {\n text: '()',\n selection: [1, 1]\n };\n }\n } else if (text == ')') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ')') {\n var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n\n this.add(\"parens\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '(') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ')') {\n range.end.column++;\n return range;\n }\n }\n });\n\n this.add(\"brackets\", \"insertion\", function(state, action, editor, session, text) {\n if (text == '[') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '[', ']');\n } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"]\");\n return {\n text: '[]',\n selection: [1, 1]\n };\n }\n } else if (text == ']') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ']') {\n var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n\n this.add(\"brackets\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '[') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ']') {\n range.end.column++;\n return range;\n }\n }\n });\n\n this.add(\"string_dquotes\", \"insertion\", function(state, action, editor, session, text) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n if (text.length == 1 && quotes[text]) {\n if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1) \n return;\n initContext(editor);\n var quote = text;\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && (selected.length != 1 || !quotes[selected]) && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, quote, quote);\n } else if (!selected) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var leftChar = line.substring(cursor.column-1, cursor.column);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n \n var token = session.getTokenAt(cursor.row, cursor.column);\n var rightToken = session.getTokenAt(cursor.row, cursor.column + 1);\n if (leftChar == \"\\\\\" && token && /escape/.test(token.type))\n return null;\n \n var stringBefore = token && /string|escape/.test(token.type);\n var stringAfter = !rightToken || /string|escape/.test(rightToken.type);\n \n var pair;\n if (rightChar == quote) {\n pair = stringBefore !== stringAfter;\n if (pair && /string\\.end/.test(rightToken.type))\n pair = false;\n } else {\n if (stringBefore && !stringAfter)\n return null; // wrap string with different quote\n if (stringBefore && stringAfter)\n return null; // do not pair quotes inside strings\n var wordRe = session.$mode.tokenRe;\n wordRe.lastIndex = 0;\n var isWordBefore = wordRe.test(leftChar);\n wordRe.lastIndex = 0;\n var isWordAfter = wordRe.test(leftChar);\n if (isWordBefore || isWordAfter)\n return null; // before or after alphanumeric\n if (rightChar && !/[\\s;,.})\\]\\\\]/.test(rightChar))\n return null; // there is rightChar and it isn't closing\n var charBefore = line[cursor.column - 2];\n if (leftChar == quote && (charBefore == quote || wordRe.test(charBefore)))\n return null;\n pair = true;\n }\n return {\n text: pair ? quote + quote : \"\",\n selection: [1,1]\n };\n }\n }\n });\n\n this.add(\"string_dquotes\", \"deletion\", function(state, action, editor, session, range) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && quotes.hasOwnProperty(selected)) {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n\n};\n\n \nCstyleBehaviour.isSaneInsertion = function(editor, session) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n if (!this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS)) {\n if (/[)}\\]]/.test(editor.session.getLine(cursor.row)[cursor.column]))\n return true;\n var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1);\n if (!this.$matchTokenType(iterator2.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS))\n return false;\n }\n iterator.stepForward();\n return iterator.getCurrentTokenRow() !== cursor.row ||\n this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_BEFORE_TOKENS);\n};\n\nCstyleBehaviour.$matchTokenType = function(token, types) {\n return types.indexOf(token.type || token) > -1;\n};\n\nCstyleBehaviour.recordAutoInsert = function(editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0]))\n context.autoInsertedBrackets = 0;\n context.autoInsertedRow = cursor.row;\n context.autoInsertedLineEnd = bracket + line.substr(cursor.column);\n context.autoInsertedBrackets++;\n};\n\nCstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isMaybeInsertedClosing(cursor, line))\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = cursor.row;\n context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket;\n context.maybeInsertedLineEnd = line.substr(cursor.column);\n context.maybeInsertedBrackets++;\n};\n\nCstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) {\n return context.autoInsertedBrackets > 0 &&\n cursor.row === context.autoInsertedRow &&\n bracket === context.autoInsertedLineEnd[0] &&\n line.substr(cursor.column) === context.autoInsertedLineEnd;\n};\n\nCstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) {\n return context.maybeInsertedBrackets > 0 &&\n cursor.row === context.maybeInsertedRow &&\n line.substr(cursor.column) === context.maybeInsertedLineEnd &&\n line.substr(0, cursor.column) == context.maybeInsertedLineStart;\n};\n\nCstyleBehaviour.popAutoInsertedClosing = function() {\n context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1);\n context.autoInsertedBrackets--;\n};\n\nCstyleBehaviour.clearMaybeInsertedClosing = function() {\n if (context) {\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = -1;\n }\n};\n\n\n\noop.inherits(CstyleBehaviour, Behaviour);\n\nexports.CstyleBehaviour = CstyleBehaviour;\n});\n\nace.define(\"ace/unicode\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\nvar wordChars = [48,9,8,25,5,0,2,25,48,0,11,0,5,0,6,22,2,30,2,457,5,11,15,4,8,0,2,0,18,116,2,1,3,3,9,0,2,2,2,0,2,19,2,82,2,138,2,4,3,155,12,37,3,0,8,38,10,44,2,0,2,1,2,1,2,0,9,26,6,2,30,10,7,61,2,9,5,101,2,7,3,9,2,18,3,0,17,58,3,100,15,53,5,0,6,45,211,57,3,18,2,5,3,11,3,9,2,1,7,6,2,2,2,7,3,1,3,21,2,6,2,0,4,3,3,8,3,1,3,3,9,0,5,1,2,4,3,11,16,2,2,5,5,1,3,21,2,6,2,1,2,1,2,1,3,0,2,4,5,1,3,2,4,0,8,3,2,0,8,15,12,2,2,8,2,2,2,21,2,6,2,1,2,4,3,9,2,2,2,2,3,0,16,3,3,9,18,2,2,7,3,1,3,21,2,6,2,1,2,4,3,8,3,1,3,2,9,1,5,1,2,4,3,9,2,0,17,1,2,5,4,2,2,3,4,1,2,0,2,1,4,1,4,2,4,11,5,4,4,2,2,3,3,0,7,0,15,9,18,2,2,7,2,2,2,22,2,9,2,4,4,7,2,2,2,3,8,1,2,1,7,3,3,9,19,1,2,7,2,2,2,22,2,9,2,4,3,8,2,2,2,3,8,1,8,0,2,3,3,9,19,1,2,7,2,2,2,22,2,15,4,7,2,2,2,3,10,0,9,3,3,9,11,5,3,1,2,17,4,23,2,8,2,0,3,6,4,0,5,5,2,0,2,7,19,1,14,57,6,14,2,9,40,1,2,0,3,1,2,0,3,0,7,3,2,6,2,2,2,0,2,0,3,1,2,12,2,2,3,4,2,0,2,5,3,9,3,1,35,0,24,1,7,9,12,0,2,0,2,0,5,9,2,35,5,19,2,5,5,7,2,35,10,0,58,73,7,77,3,37,11,42,2,0,4,328,2,3,3,6,2,0,2,3,3,40,2,3,3,32,2,3,3,6,2,0,2,3,3,14,2,56,2,3,3,66,5,0,33,15,17,84,13,619,3,16,2,25,6,74,22,12,2,6,12,20,12,19,13,12,2,2,2,1,13,51,3,29,4,0,5,1,3,9,34,2,3,9,7,87,9,42,6,69,11,28,4,11,5,11,11,39,3,4,12,43,5,25,7,10,38,27,5,62,2,28,3,10,7,9,14,0,89,75,5,9,18,8,13,42,4,11,71,55,9,9,4,48,83,2,2,30,14,230,23,280,3,5,3,37,3,5,3,7,2,0,2,0,2,0,2,30,3,52,2,6,2,0,4,2,2,6,4,3,3,5,5,12,6,2,2,6,67,1,20,0,29,0,14,0,17,4,60,12,5,0,4,11,18,0,5,0,3,9,2,0,4,4,7,0,2,0,2,0,2,3,2,10,3,3,6,4,5,0,53,1,2684,46,2,46,2,132,7,6,15,37,11,53,10,0,17,22,10,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,31,48,0,470,1,36,5,2,4,6,1,5,85,3,1,3,2,2,89,2,3,6,40,4,93,18,23,57,15,513,6581,75,20939,53,1164,68,45,3,268,4,27,21,31,3,13,13,1,2,24,9,69,11,1,38,8,3,102,3,1,111,44,25,51,13,68,12,9,7,23,4,0,5,45,3,35,13,28,4,64,15,10,39,54,10,13,3,9,7,22,4,1,5,66,25,2,227,42,2,1,3,9,7,11171,13,22,5,48,8453,301,3,61,3,105,39,6,13,4,6,11,2,12,2,4,2,0,2,1,2,1,2,107,34,362,19,63,3,53,41,11,5,15,17,6,13,1,25,2,33,4,2,134,20,9,8,25,5,0,2,25,12,88,4,5,3,5,3,5,3,2];\n\nvar code = 0;\nvar str = [];\nfor (var i = 0; i < wordChars.length; i += 2) {\n str.push(code += wordChars[i]);\n if (wordChars[i + 1])\n str.push(45, code += wordChars[i + 1]);\n}\n\nexports.wordChars = String.fromCharCode.apply(null, str);\n\n});\n\nace.define(\"ace/mode/text\",[\"require\",\"exports\",\"module\",\"ace/config\",\"ace/tokenizer\",\"ace/mode/text_highlight_rules\",\"ace/mode/behaviour/cstyle\",\"ace/unicode\",\"ace/lib/lang\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\nvar config = require(\"../config\");\n\nvar Tokenizer = require(\"../tokenizer\").Tokenizer;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar unicode = require(\"../unicode\");\nvar lang = require(\"../lib/lang\");\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\n\nvar Mode = function() {\n this.HighlightRules = TextHighlightRules;\n};\n\n(function() {\n this.$defaultBehaviour = new CstyleBehaviour();\n\n this.tokenRe = new RegExp(\"^[\" + unicode.wordChars + \"\\\\$_]+\", \"g\");\n\n this.nonTokenRe = new RegExp(\"^(?:[^\" + unicode.wordChars + \"\\\\$_]|\\\\s])+\", \"g\");\n\n this.getTokenizer = function() {\n if (!this.$tokenizer) {\n this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig);\n this.$tokenizer = new Tokenizer(this.$highlightRules.getRules());\n }\n return this.$tokenizer;\n };\n\n this.lineCommentStart = \"\";\n this.blockComment = \"\";\n\n this.toggleCommentLines = function(state, session, startRow, endRow) {\n var doc = session.doc;\n\n var ignoreBlankLines = true;\n var shouldRemove = true;\n var minIndent = Infinity;\n var tabSize = session.getTabSize();\n var insertAtTabStop = false;\n\n if (!this.lineCommentStart) {\n if (!this.blockComment)\n return false;\n var lineCommentStart = this.blockComment.start;\n var lineCommentEnd = this.blockComment.end;\n var regexpStart = new RegExp(\"^(\\\\s*)(?:\" + lang.escapeRegExp(lineCommentStart) + \")\");\n var regexpEnd = new RegExp(\"(?:\" + lang.escapeRegExp(lineCommentEnd) + \")\\\\s*$\");\n\n var comment = function(line, i) {\n if (testRemove(line, i))\n return;\n if (!ignoreBlankLines || /\\S/.test(line)) {\n doc.insertInLine({row: i, column: line.length}, lineCommentEnd);\n doc.insertInLine({row: i, column: minIndent}, lineCommentStart);\n }\n };\n\n var uncomment = function(line, i) {\n var m;\n if (m = line.match(regexpEnd))\n doc.removeInLine(i, line.length - m[0].length, line.length);\n if (m = line.match(regexpStart))\n doc.removeInLine(i, m[1].length, m[0].length);\n };\n\n var testRemove = function(line, row) {\n if (regexpStart.test(line))\n return true;\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].type === \"comment\")\n return true;\n }\n };\n } else {\n if (Array.isArray(this.lineCommentStart)) {\n var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join(\"|\");\n var lineCommentStart = this.lineCommentStart[0];\n } else {\n var regexpStart = lang.escapeRegExp(this.lineCommentStart);\n var lineCommentStart = this.lineCommentStart;\n }\n regexpStart = new RegExp(\"^(\\\\s*)(?:\" + regexpStart + \") ?\");\n \n insertAtTabStop = session.getUseSoftTabs();\n\n var uncomment = function(line, i) {\n var m = line.match(regexpStart);\n if (!m) return;\n var start = m[1].length, end = m[0].length;\n if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == \" \")\n end--;\n doc.removeInLine(i, start, end);\n };\n var commentWithSpace = lineCommentStart + \" \";\n var comment = function(line, i) {\n if (!ignoreBlankLines || /\\S/.test(line)) {\n if (shouldInsertSpace(line, minIndent, minIndent))\n doc.insertInLine({row: i, column: minIndent}, commentWithSpace);\n else\n doc.insertInLine({row: i, column: minIndent}, lineCommentStart);\n }\n };\n var testRemove = function(line, i) {\n return regexpStart.test(line);\n };\n \n var shouldInsertSpace = function(line, before, after) {\n var spaces = 0;\n while (before-- && line.charAt(before) == \" \")\n spaces++;\n if (spaces % tabSize != 0)\n return false;\n var spaces = 0;\n while (line.charAt(after++) == \" \")\n spaces++;\n if (tabSize > 2)\n return spaces % tabSize != tabSize - 1;\n else\n return spaces % tabSize == 0;\n };\n }\n\n function iter(fun) {\n for (var i = startRow; i <= endRow; i++)\n fun(doc.getLine(i), i);\n }\n\n\n var minEmptyLength = Infinity;\n iter(function(line, i) {\n var indent = line.search(/\\S/);\n if (indent !== -1) {\n if (indent < minIndent)\n minIndent = indent;\n if (shouldRemove && !testRemove(line, i))\n shouldRemove = false;\n } else if (minEmptyLength > line.length) {\n minEmptyLength = line.length;\n }\n });\n\n if (minIndent == Infinity) {\n minIndent = minEmptyLength;\n ignoreBlankLines = false;\n shouldRemove = false;\n }\n\n if (insertAtTabStop && minIndent % tabSize != 0)\n minIndent = Math.floor(minIndent / tabSize) * tabSize;\n\n iter(shouldRemove ? uncomment : comment);\n };\n\n this.toggleBlockComment = function(state, session, range, cursor) {\n var comment = this.blockComment;\n if (!comment)\n return;\n if (!comment.start && comment[0])\n comment = comment[0];\n\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n var sel = session.selection;\n var initialRange = session.selection.toOrientedRange();\n var startRow, colDiff;\n\n if (token && /comment/.test(token.type)) {\n var startRange, endRange;\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.start);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n startRange = new Range(row, column, row, column + comment.start.length);\n break;\n }\n token = iterator.stepBackward();\n }\n\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.end);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n endRange = new Range(row, column, row, column + comment.end.length);\n break;\n }\n token = iterator.stepForward();\n }\n if (endRange)\n session.remove(endRange);\n if (startRange) {\n session.remove(startRange);\n startRow = startRange.start.row;\n colDiff = -comment.start.length;\n }\n } else {\n colDiff = comment.start.length;\n startRow = range.start.row;\n session.insert(range.end, comment.end);\n session.insert(range.start, comment.start);\n }\n if (initialRange.start.row == startRow)\n initialRange.start.column += colDiff;\n if (initialRange.end.row == startRow)\n initialRange.end.column += colDiff;\n session.selection.fromOrientedRange(initialRange);\n };\n\n this.getNextLineIndent = function(state, line, tab) {\n return this.$getIndent(line);\n };\n\n this.checkOutdent = function(state, line, input) {\n return false;\n };\n\n this.autoOutdent = function(state, doc, row) {\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n this.createWorker = function(session) {\n return null;\n };\n\n this.createModeDelegates = function (mapping) {\n this.$embeds = [];\n this.$modes = {};\n for (var i in mapping) {\n if (mapping[i]) {\n var Mode = mapping[i];\n var id = Mode.prototype.$id;\n var mode = config.$modes[id];\n if (!mode)\n config.$modes[id] = mode = new Mode();\n if (!config.$modes[i])\n config.$modes[i] = mode;\n this.$embeds.push(i);\n this.$modes[i] = mode;\n }\n }\n\n var delegations = [\"toggleBlockComment\", \"toggleCommentLines\", \"getNextLineIndent\", \n \"checkOutdent\", \"autoOutdent\", \"transformAction\", \"getCompletions\"];\n\n for (var i = 0; i < delegations.length; i++) {\n (function(scope) {\n var functionName = delegations[i];\n var defaultHandler = scope[functionName];\n scope[delegations[i]] = function() {\n return this.$delegator(functionName, arguments, defaultHandler);\n };\n }(this));\n }\n };\n\n this.$delegator = function(method, args, defaultHandler) {\n var state = args[0] || \"start\";\n if (typeof state != \"string\") {\n if (Array.isArray(state[2])) {\n var language = state[2][state[2].length - 1];\n var mode = this.$modes[language];\n if (mode)\n return mode[method].apply(mode, [state[1]].concat([].slice.call(args, 1)));\n }\n state = state[0] || \"start\";\n }\n \n for (var i = 0; i < this.$embeds.length; i++) {\n if (!this.$modes[this.$embeds[i]]) continue;\n\n var split = state.split(this.$embeds[i]);\n if (!split[0] && split[1]) {\n args[0] = split[1];\n var mode = this.$modes[this.$embeds[i]];\n return mode[method].apply(mode, args);\n }\n }\n var ret = defaultHandler.apply(this, args);\n return defaultHandler ? ret : undefined;\n };\n\n this.transformAction = function(state, action, editor, session, param) {\n if (this.$behaviour) {\n var behaviours = this.$behaviour.getBehaviours();\n for (var key in behaviours) {\n if (behaviours[key][action]) {\n var ret = behaviours[key][action].apply(this, arguments);\n if (ret) {\n return ret;\n }\n }\n }\n }\n };\n \n this.getKeywords = function(append) {\n if (!this.completionKeywords) {\n var rules = this.$tokenizer.rules;\n var completionKeywords = [];\n for (var rule in rules) {\n var ruleItr = rules[rule];\n for (var r = 0, l = ruleItr.length; r < l; r++) {\n if (typeof ruleItr[r].token === \"string\") {\n if (/keyword|support|storage/.test(ruleItr[r].token))\n completionKeywords.push(ruleItr[r].regex);\n }\n else if (typeof ruleItr[r].token === \"object\") {\n for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) { \n if (/keyword|support|storage/.test(ruleItr[r].token[a])) {\n var rule = ruleItr[r].regex.match(/\\(.+?\\)/g)[a];\n completionKeywords.push(rule.substr(1, rule.length - 2));\n }\n }\n }\n }\n }\n this.completionKeywords = completionKeywords;\n }\n if (!append)\n return this.$keywordList;\n return completionKeywords.concat(this.$keywordList || []);\n };\n \n this.$createKeywordList = function() {\n if (!this.$highlightRules)\n this.getTokenizer();\n return this.$keywordList = this.$highlightRules.$keywordList || [];\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n var keywords = this.$keywordList || this.$createKeywordList();\n return keywords.map(function(word) {\n return {\n name: word,\n value: word,\n score: 0,\n meta: \"keyword\"\n };\n });\n };\n\n this.$id = \"ace/mode/text\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\n\nfunction throwDeltaError(delta, errorText){\n console.log(\"Invalid Delta:\", delta);\n throw \"Invalid Delta: \" + errorText;\n}\n\nfunction positionInDocument(docLines, position) {\n return position.row >= 0 && position.row < docLines.length &&\n position.column >= 0 && position.column <= docLines[position.row].length;\n}\n\nfunction validateDelta(docLines, delta) {\n if (delta.action != \"insert\" && delta.action != \"remove\")\n throwDeltaError(delta, \"delta.action must be 'insert' or 'remove'\");\n if (!(delta.lines instanceof Array))\n throwDeltaError(delta, \"delta.lines must be an Array\");\n if (!delta.start || !delta.end)\n throwDeltaError(delta, \"delta.start/end must be an present\");\n var start = delta.start;\n if (!positionInDocument(docLines, delta.start))\n throwDeltaError(delta, \"delta.start must be contained in document\");\n var end = delta.end;\n if (delta.action == \"remove\" && !positionInDocument(docLines, end))\n throwDeltaError(delta, \"delta.end must contained in document for 'remove' actions\");\n var numRangeRows = end.row - start.row;\n var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0));\n if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars)\n throwDeltaError(delta, \"delta.range must match delta lines\");\n}\n\nexports.applyDelta = function(docLines, delta, doNotValidate) {\n \n var row = delta.start.row;\n var startColumn = delta.start.column;\n var line = docLines[row] || \"\";\n switch (delta.action) {\n case \"insert\":\n var lines = delta.lines;\n if (lines.length === 1) {\n docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn);\n } else {\n var args = [row, 1].concat(delta.lines);\n docLines.splice.apply(docLines, args);\n docLines[row] = line.substring(0, startColumn) + docLines[row];\n docLines[row + delta.lines.length - 1] += line.substring(startColumn);\n }\n break;\n case \"remove\":\n var endColumn = delta.end.column;\n var endRow = delta.end.row;\n if (row === endRow) {\n docLines[row] = line.substring(0, startColumn) + line.substring(endColumn);\n } else {\n docLines.splice(\n row, endRow - row + 1,\n line.substring(0, startColumn) + docLines[endRow].substring(endColumn)\n );\n }\n break;\n }\n};\n});\n\nace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\n\nvar Anchor = exports.Anchor = function(doc, row, column) {\n this.$onChange = this.onChange.bind(this);\n this.attach(doc);\n \n if (typeof column == \"undefined\")\n this.setPosition(row.row, row.column);\n else\n this.setPosition(row, column);\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.getPosition = function() {\n return this.$clipPositionToDocument(this.row, this.column);\n };\n this.getDocument = function() {\n return this.document;\n };\n this.$insertRight = false;\n this.onChange = function(delta) {\n if (delta.start.row == delta.end.row && delta.start.row != this.row)\n return;\n\n if (delta.start.row > this.row)\n return;\n \n var point = $getTransformedPoint(delta, {row: this.row, column: this.column}, this.$insertRight);\n this.setPosition(point.row, point.column, true);\n };\n \n function $pointsInOrder(point1, point2, equalPointsInOrder) {\n var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column;\n return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);\n }\n \n function $getTransformedPoint(delta, point, moveIfEqual) {\n var deltaIsInsert = delta.action == \"insert\";\n var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);\n var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);\n var deltaStart = delta.start;\n var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.\n if ($pointsInOrder(point, deltaStart, moveIfEqual)) {\n return {\n row: point.row,\n column: point.column\n };\n }\n if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) {\n return {\n row: point.row + deltaRowShift,\n column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0)\n };\n }\n \n return {\n row: deltaStart.row,\n column: deltaStart.column\n };\n }\n this.setPosition = function(row, column, noClip) {\n var pos;\n if (noClip) {\n pos = {\n row: row,\n column: column\n };\n } else {\n pos = this.$clipPositionToDocument(row, column);\n }\n\n if (this.row == pos.row && this.column == pos.column)\n return;\n\n var old = {\n row: this.row,\n column: this.column\n };\n\n this.row = pos.row;\n this.column = pos.column;\n this._signal(\"change\", {\n old: old,\n value: pos\n });\n };\n this.detach = function() {\n this.document.off(\"change\", this.$onChange);\n };\n this.attach = function(doc) {\n this.document = doc || this.document;\n this.document.on(\"change\", this.$onChange);\n };\n this.$clipPositionToDocument = function(row, column) {\n var pos = {};\n\n if (row >= this.document.getLength()) {\n pos.row = Math.max(0, this.document.getLength() - 1);\n pos.column = this.document.getLine(pos.row).length;\n }\n else if (row < 0) {\n pos.row = 0;\n pos.column = 0;\n }\n else {\n pos.row = row;\n pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));\n }\n\n if (column < 0)\n pos.column = 0;\n\n return pos;\n };\n\n}).call(Anchor.prototype);\n\n});\n\nace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar applyDelta = require(\"./apply_delta\").applyDelta;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Anchor = require(\"./anchor\").Anchor;\n\nvar Document = function(textOrLines) {\n this.$lines = [\"\"];\n if (textOrLines.length === 0) {\n this.$lines = [\"\"];\n } else if (Array.isArray(textOrLines)) {\n this.insertMergedLines({row: 0, column: 0}, textOrLines);\n } else {\n this.insert({row: 0, column:0}, textOrLines);\n }\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.setValue = function(text) {\n var len = this.getLength() - 1;\n this.remove(new Range(0, 0, len, this.getLine(len).length));\n this.insert({row: 0, column: 0}, text);\n };\n this.getValue = function() {\n return this.getAllLines().join(this.getNewLineCharacter());\n };\n this.createAnchor = function(row, column) {\n return new Anchor(this, row, column);\n };\n if (\"aaa\".split(/a/).length === 0) {\n this.$split = function(text) {\n return text.replace(/\\r\\n|\\r/g, \"\\n\").split(\"\\n\");\n };\n } else {\n this.$split = function(text) {\n return text.split(/\\r\\n|\\r|\\n/);\n };\n }\n\n\n this.$detectNewLine = function(text) {\n var match = text.match(/^.*?(\\r\\n|\\r|\\n)/m);\n this.$autoNewLine = match ? match[1] : \"\\n\";\n this._signal(\"changeNewLineMode\");\n };\n this.getNewLineCharacter = function() {\n switch (this.$newLineMode) {\n case \"windows\":\n return \"\\r\\n\";\n case \"unix\":\n return \"\\n\";\n default:\n return this.$autoNewLine || \"\\n\";\n }\n };\n\n this.$autoNewLine = \"\";\n this.$newLineMode = \"auto\";\n this.setNewLineMode = function(newLineMode) {\n if (this.$newLineMode === newLineMode)\n return;\n\n this.$newLineMode = newLineMode;\n this._signal(\"changeNewLineMode\");\n };\n this.getNewLineMode = function() {\n return this.$newLineMode;\n };\n this.isNewLine = function(text) {\n return (text == \"\\r\\n\" || text == \"\\r\" || text == \"\\n\");\n };\n this.getLine = function(row) {\n return this.$lines[row] || \"\";\n };\n this.getLines = function(firstRow, lastRow) {\n return this.$lines.slice(firstRow, lastRow + 1);\n };\n this.getAllLines = function() {\n return this.getLines(0, this.getLength());\n };\n this.getLength = function() {\n return this.$lines.length;\n };\n this.getTextRange = function(range) {\n return this.getLinesForRange(range).join(this.getNewLineCharacter());\n };\n this.getLinesForRange = function(range) {\n var lines;\n if (range.start.row === range.end.row) {\n lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)];\n } else {\n lines = this.getLines(range.start.row, range.end.row);\n lines[0] = (lines[0] || \"\").substring(range.start.column);\n var l = lines.length - 1;\n if (range.end.row - range.start.row == l)\n lines[l] = lines[l].substring(0, range.end.column);\n }\n return lines;\n };\n this.insertLines = function(row, lines) {\n console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\");\n return this.insertFullLines(row, lines);\n };\n this.removeLines = function(firstRow, lastRow) {\n console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\");\n return this.removeFullLines(firstRow, lastRow);\n };\n this.insertNewLine = function(position) {\n console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\");\n return this.insertMergedLines(position, [\"\", \"\"]);\n };\n this.insert = function(position, text) {\n if (this.getLength() <= 1)\n this.$detectNewLine(text);\n \n return this.insertMergedLines(position, this.$split(text));\n };\n this.insertInLine = function(position, text) {\n var start = this.clippedPos(position.row, position.column);\n var end = this.pos(position.row, position.column + text.length);\n \n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: [text]\n }, true);\n \n return this.clonePos(end);\n };\n \n this.clippedPos = function(row, column) {\n var length = this.getLength();\n if (row === undefined) {\n row = length;\n } else if (row < 0) {\n row = 0;\n } else if (row >= length) {\n row = length - 1;\n column = undefined;\n }\n var line = this.getLine(row);\n if (column == undefined)\n column = line.length;\n column = Math.min(Math.max(column, 0), line.length);\n return {row: row, column: column};\n };\n \n this.clonePos = function(pos) {\n return {row: pos.row, column: pos.column};\n };\n \n this.pos = function(row, column) {\n return {row: row, column: column};\n };\n \n this.$clipPosition = function(position) {\n var length = this.getLength();\n if (position.row >= length) {\n position.row = Math.max(0, length - 1);\n position.column = this.getLine(length - 1).length;\n } else {\n position.row = Math.max(0, position.row);\n position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length);\n }\n return position;\n };\n this.insertFullLines = function(row, lines) {\n row = Math.min(Math.max(row, 0), this.getLength());\n var column = 0;\n if (row < this.getLength()) {\n lines = lines.concat([\"\"]);\n column = 0;\n } else {\n lines = [\"\"].concat(lines);\n row--;\n column = this.$lines[row].length;\n }\n this.insertMergedLines({row: row, column: column}, lines);\n }; \n this.insertMergedLines = function(position, lines) {\n var start = this.clippedPos(position.row, position.column);\n var end = {\n row: start.row + lines.length - 1,\n column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length\n };\n \n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: lines\n });\n \n return this.clonePos(end);\n };\n this.remove = function(range) {\n var start = this.clippedPos(range.start.row, range.start.column);\n var end = this.clippedPos(range.end.row, range.end.column);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({start: start, end: end})\n });\n return this.clonePos(start);\n };\n this.removeInLine = function(row, startColumn, endColumn) {\n var start = this.clippedPos(row, startColumn);\n var end = this.clippedPos(row, endColumn);\n \n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({start: start, end: end})\n }, true);\n \n return this.clonePos(start);\n };\n this.removeFullLines = function(firstRow, lastRow) {\n firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1);\n lastRow = Math.min(Math.max(0, lastRow ), this.getLength() - 1);\n var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0;\n var deleteLastNewLine = lastRow < this.getLength() - 1;\n var startRow = ( deleteFirstNewLine ? firstRow - 1 : firstRow );\n var startCol = ( deleteFirstNewLine ? this.getLine(startRow).length : 0 );\n var endRow = ( deleteLastNewLine ? lastRow + 1 : lastRow );\n var endCol = ( deleteLastNewLine ? 0 : this.getLine(endRow).length ); \n var range = new Range(startRow, startCol, endRow, endCol);\n var deletedLines = this.$lines.slice(firstRow, lastRow + 1);\n \n this.applyDelta({\n start: range.start,\n end: range.end,\n action: \"remove\",\n lines: this.getLinesForRange(range)\n });\n return deletedLines;\n };\n this.removeNewLine = function(row) {\n if (row < this.getLength() - 1 && row >= 0) {\n this.applyDelta({\n start: this.pos(row, this.getLine(row).length),\n end: this.pos(row + 1, 0),\n action: \"remove\",\n lines: [\"\", \"\"]\n });\n }\n };\n this.replace = function(range, text) {\n if (!(range instanceof Range))\n range = Range.fromPoints(range.start, range.end);\n if (text.length === 0 && range.isEmpty())\n return range.start;\n if (text == this.getTextRange(range))\n return range.end;\n\n this.remove(range);\n var end;\n if (text) {\n end = this.insert(range.start, text);\n }\n else {\n end = range.start;\n }\n \n return end;\n };\n this.applyDeltas = function(deltas) {\n for (var i=0; i=0; i--) {\n this.revertDelta(deltas[i]);\n }\n };\n this.applyDelta = function(delta, doNotValidate) {\n var isInsert = delta.action == \"insert\";\n if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]\n : !Range.comparePoints(delta.start, delta.end)) {\n return;\n }\n \n if (isInsert && delta.lines.length > 20000) {\n this.$splitAndapplyLargeDelta(delta, 20000);\n }\n else {\n applyDelta(this.$lines, delta, doNotValidate);\n this._signal(\"change\", delta);\n }\n };\n \n this.$safeApplyDelta = function(delta) {\n var docLength = this.$lines.length;\n if (\n delta.action == \"remove\" && delta.start.row < docLength && delta.end.row < docLength\n || delta.action == \"insert\" && delta.start.row <= docLength\n ) {\n this.applyDelta(delta);\n }\n };\n \n this.$splitAndapplyLargeDelta = function(delta, MAX) {\n var lines = delta.lines;\n var l = lines.length - MAX + 1;\n var row = delta.start.row; \n var column = delta.start.column;\n for (var from = 0, to = 0; from < l; from = to) {\n to += MAX - 1;\n var chunk = lines.slice(from, to);\n chunk.push(\"\");\n this.applyDelta({\n start: this.pos(row + from, column),\n end: this.pos(row + to, column = 0),\n action: delta.action,\n lines: chunk\n }, true);\n }\n delta.lines = lines.slice(from);\n delta.start.row = row + from;\n delta.start.column = column;\n this.applyDelta(delta, true);\n };\n this.revertDelta = function(delta) {\n this.$safeApplyDelta({\n start: this.clonePos(delta.start),\n end: this.clonePos(delta.end),\n action: (delta.action == \"insert\" ? \"remove\" : \"insert\"),\n lines: delta.lines.slice()\n });\n };\n this.indexToPosition = function(index, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n for (var i = startRow || 0, l = lines.length; i < l; i++) {\n index -= lines[i].length + newlineLength;\n if (index < 0)\n return {row: i, column: index + lines[i].length + newlineLength};\n }\n return {row: l-1, column: index + lines[l-1].length + newlineLength};\n };\n this.positionToIndex = function(pos, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n var index = 0;\n var row = Math.min(pos.row, lines.length);\n for (var i = startRow || 0; i < row; ++i)\n index += lines[i].length + newlineLength;\n\n return index + pos.column;\n };\n\n}).call(Document.prototype);\n\nexports.Document = Document;\n});\n\nace.define(\"ace/background_tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\n\nvar BackgroundTokenizer = function(tokenizer, editor) {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.tokenizer = tokenizer;\n\n var self = this;\n\n this.$worker = function() {\n if (!self.running) { return; }\n\n var workerStart = new Date();\n var currentLine = self.currentLine;\n var endLine = -1;\n var doc = self.doc;\n\n var startLine = currentLine;\n while (self.lines[currentLine])\n currentLine++;\n \n var len = doc.getLength();\n var processedLines = 0;\n self.running = false;\n while (currentLine < len) {\n self.$tokenizeRow(currentLine);\n endLine = currentLine;\n do {\n currentLine++;\n } while (self.lines[currentLine]);\n processedLines ++;\n if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) {\n self.running = setTimeout(self.$worker, 20);\n break;\n }\n }\n self.currentLine = currentLine;\n \n if (endLine == -1)\n endLine = currentLine;\n \n if (startLine <= endLine)\n self.fireUpdateEvent(startLine, endLine);\n };\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n this.setTokenizer = function(tokenizer) {\n this.tokenizer = tokenizer;\n this.lines = [];\n this.states = [];\n\n this.start(0);\n };\n this.setDocument = function(doc) {\n this.doc = doc;\n this.lines = [];\n this.states = [];\n\n this.stop();\n };\n this.fireUpdateEvent = function(firstRow, lastRow) {\n var data = {\n first: firstRow,\n last: lastRow\n };\n this._signal(\"update\", {data: data});\n };\n this.start = function(startRow) {\n this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength());\n this.lines.splice(this.currentLine, this.lines.length);\n this.states.splice(this.currentLine, this.states.length);\n\n this.stop();\n this.running = setTimeout(this.$worker, 700);\n };\n \n this.scheduleStart = function() {\n if (!this.running)\n this.running = setTimeout(this.$worker, 700);\n };\n\n this.$updateOnChange = function(delta) {\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n\n if (len === 0) {\n this.lines[startRow] = null;\n } else if (delta.action == \"remove\") {\n this.lines.splice(startRow, len + 1, null);\n this.states.splice(startRow, len + 1, null);\n } else {\n var args = Array(len + 1);\n args.unshift(startRow, 1);\n this.lines.splice.apply(this.lines, args);\n this.states.splice.apply(this.states, args);\n }\n\n this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength());\n\n this.stop();\n };\n this.stop = function() {\n if (this.running)\n clearTimeout(this.running);\n this.running = false;\n };\n this.getTokens = function(row) {\n return this.lines[row] || this.$tokenizeRow(row);\n };\n this.getState = function(row) {\n if (this.currentLine == row)\n this.$tokenizeRow(row);\n return this.states[row] || \"start\";\n };\n\n this.$tokenizeRow = function(row) {\n var line = this.doc.getLine(row);\n var state = this.states[row - 1];\n\n var data = this.tokenizer.getLineTokens(line, state, row);\n\n if (this.states[row] + \"\" !== data.state + \"\") {\n this.states[row] = data.state;\n this.lines[row + 1] = null;\n if (this.currentLine > row + 1)\n this.currentLine = row + 1;\n } else if (this.currentLine == row) {\n this.currentLine = row + 1;\n }\n\n return this.lines[row] = data.tokens;\n };\n\n}).call(BackgroundTokenizer.prototype);\n\nexports.BackgroundTokenizer = BackgroundTokenizer;\n});\n\nace.define(\"ace/search_highlight\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar lang = require(\"./lib/lang\");\nvar oop = require(\"./lib/oop\");\nvar Range = require(\"./range\").Range;\n\nvar SearchHighlight = function(regExp, clazz, type) {\n this.setRegexp(regExp);\n this.clazz = clazz;\n this.type = type || \"text\";\n};\n\n(function() {\n this.MAX_RANGES = 500;\n \n this.setRegexp = function(regExp) {\n if (this.regExp+\"\" == regExp+\"\")\n return;\n this.regExp = regExp;\n this.cache = [];\n };\n\n this.update = function(html, markerLayer, session, config) {\n if (!this.regExp)\n return;\n var start = config.firstRow, end = config.lastRow;\n\n for (var i = start; i <= end; i++) {\n var ranges = this.cache[i];\n if (ranges == null) {\n ranges = lang.getMatchOffsets(session.getLine(i), this.regExp);\n if (ranges.length > this.MAX_RANGES)\n ranges = ranges.slice(0, this.MAX_RANGES);\n ranges = ranges.map(function(match) {\n return new Range(i, match.offset, i, match.offset + match.length);\n });\n this.cache[i] = ranges.length ? ranges : \"\";\n }\n\n for (var j = ranges.length; j --; ) {\n markerLayer.drawSingleLineMarker(\n html, ranges[j].toScreenRange(session), this.clazz, config);\n }\n }\n };\n\n}).call(SearchHighlight.prototype);\n\nexports.SearchHighlight = SearchHighlight;\n});\n\nace.define(\"ace/edit_session/fold_line\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar Range = require(\"../range\").Range;\nfunction FoldLine(foldData, folds) {\n this.foldData = foldData;\n if (Array.isArray(folds)) {\n this.folds = folds;\n } else {\n folds = this.folds = [ folds ];\n }\n\n var last = folds[folds.length - 1];\n this.range = new Range(folds[0].start.row, folds[0].start.column,\n last.end.row, last.end.column);\n this.start = this.range.start;\n this.end = this.range.end;\n\n this.folds.forEach(function(fold) {\n fold.setFoldLine(this);\n }, this);\n}\n\n(function() {\n this.shiftRow = function(shift) {\n this.start.row += shift;\n this.end.row += shift;\n this.folds.forEach(function(fold) {\n fold.start.row += shift;\n fold.end.row += shift;\n });\n };\n\n this.addFold = function(fold) {\n if (fold.sameRow) {\n if (fold.start.row < this.startRow || fold.endRow > this.endRow) {\n throw new Error(\"Can't add a fold to this FoldLine as it has no connection\");\n }\n this.folds.push(fold);\n this.folds.sort(function(a, b) {\n return -a.range.compareEnd(b.start.row, b.start.column);\n });\n if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) {\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n } else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) {\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n } else if (fold.start.row == this.end.row) {\n this.folds.push(fold);\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n } else if (fold.end.row == this.start.row) {\n this.folds.unshift(fold);\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n } else {\n throw new Error(\"Trying to add fold to FoldRow that doesn't have a matching row\");\n }\n fold.foldLine = this;\n };\n\n this.containsRow = function(row) {\n return row >= this.start.row && row <= this.end.row;\n };\n\n this.walk = function(callback, endRow, endColumn) {\n var lastEnd = 0,\n folds = this.folds,\n fold,\n cmp, stop, isNewRow = true;\n\n if (endRow == null) {\n endRow = this.end.row;\n endColumn = this.end.column;\n }\n\n for (var i = 0; i < folds.length; i++) {\n fold = folds[i];\n\n cmp = fold.range.compareStart(endRow, endColumn);\n if (cmp == -1) {\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n return;\n }\n\n stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow);\n stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd);\n if (stop || cmp === 0) {\n return;\n }\n isNewRow = !fold.sameRow;\n lastEnd = fold.end.column;\n }\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n };\n\n this.getNextFoldTo = function(row, column) {\n var fold, cmp;\n for (var i = 0; i < this.folds.length; i++) {\n fold = this.folds[i];\n cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n return {\n fold: fold,\n kind: \"after\"\n };\n } else if (cmp === 0) {\n return {\n fold: fold,\n kind: \"inside\"\n };\n }\n }\n return null;\n };\n\n this.addRemoveChars = function(row, column, len) {\n var ret = this.getNextFoldTo(row, column),\n fold, folds;\n if (ret) {\n fold = ret.fold;\n if (ret.kind == \"inside\"\n && fold.start.column != column\n && fold.start.row != row)\n {\n window.console && window.console.log(row, column, fold);\n } else if (fold.start.row == row) {\n folds = this.folds;\n var i = folds.indexOf(fold);\n if (i === 0) {\n this.start.column += len;\n }\n for (i; i < folds.length; i++) {\n fold = folds[i];\n fold.start.column += len;\n if (!fold.sameRow) {\n return;\n }\n fold.end.column += len;\n }\n this.end.column += len;\n }\n }\n };\n\n this.split = function(row, column) {\n var pos = this.getNextFoldTo(row, column);\n \n if (!pos || pos.kind == \"inside\")\n return null;\n \n var fold = pos.fold;\n var folds = this.folds;\n var foldData = this.foldData;\n \n var i = folds.indexOf(fold);\n var foldBefore = folds[i - 1];\n this.end.row = foldBefore.end.row;\n this.end.column = foldBefore.end.column;\n folds = folds.splice(i, folds.length - i);\n\n var newFoldLine = new FoldLine(foldData, folds);\n foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine);\n return newFoldLine;\n };\n\n this.merge = function(foldLineNext) {\n var folds = foldLineNext.folds;\n for (var i = 0; i < folds.length; i++) {\n this.addFold(folds[i]);\n }\n var foldData = this.foldData;\n foldData.splice(foldData.indexOf(foldLineNext), 1);\n };\n\n this.toString = function() {\n var ret = [this.range.toString() + \": [\" ];\n\n this.folds.forEach(function(fold) {\n ret.push(\" \" + fold.toString());\n });\n ret.push(\"]\");\n return ret.join(\"\\n\");\n };\n\n this.idxToPosition = function(idx) {\n var lastFoldEndColumn = 0;\n\n for (var i = 0; i < this.folds.length; i++) {\n var fold = this.folds[i];\n\n idx -= fold.start.column - lastFoldEndColumn;\n if (idx < 0) {\n return {\n row: fold.start.row,\n column: fold.start.column + idx\n };\n }\n\n idx -= fold.placeholder.length;\n if (idx < 0) {\n return fold.start;\n }\n\n lastFoldEndColumn = fold.end.column;\n }\n\n return {\n row: this.end.row,\n column: this.end.column + idx\n };\n };\n}).call(FoldLine.prototype);\n\nexports.FoldLine = FoldLine;\n});\n\nace.define(\"ace/range_list\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\nvar Range = require(\"./range\").Range;\nvar comparePoints = Range.comparePoints;\n\nvar RangeList = function() {\n this.ranges = [];\n this.$bias = 1;\n};\n\n(function() {\n this.comparePoints = comparePoints;\n\n this.pointIndex = function(pos, excludeEdges, startIndex) {\n var list = this.ranges;\n\n for (var i = startIndex || 0; i < list.length; i++) {\n var range = list[i];\n var cmpEnd = comparePoints(pos, range.end);\n if (cmpEnd > 0)\n continue;\n var cmpStart = comparePoints(pos, range.start);\n if (cmpEnd === 0)\n return excludeEdges && cmpStart !== 0 ? -i-2 : i;\n if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges))\n return i;\n\n return -i-1;\n }\n return -i - 1;\n };\n\n this.add = function(range) {\n var excludeEdges = !range.isEmpty();\n var startIndex = this.pointIndex(range.start, excludeEdges);\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n\n var endIndex = this.pointIndex(range.end, excludeEdges, startIndex);\n\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n else\n endIndex++;\n return this.ranges.splice(startIndex, endIndex - startIndex, range);\n };\n\n this.addList = function(list) {\n var removed = [];\n for (var i = list.length; i--; ) {\n removed.push.apply(removed, this.add(list[i]));\n }\n return removed;\n };\n\n this.substractPoint = function(pos) {\n var i = this.pointIndex(pos);\n\n if (i >= 0)\n return this.ranges.splice(i, 1);\n };\n this.merge = function() {\n var removed = [];\n var list = this.ranges;\n \n list = list.sort(function(a, b) {\n return comparePoints(a.start, b.start);\n });\n \n var next = list[0], range;\n for (var i = 1; i < list.length; i++) {\n range = next;\n next = list[i];\n var cmp = comparePoints(range.end, next.start);\n if (cmp < 0)\n continue;\n\n if (cmp == 0 && !range.isEmpty() && !next.isEmpty())\n continue;\n\n if (comparePoints(range.end, next.end) < 0) {\n range.end.row = next.end.row;\n range.end.column = next.end.column;\n }\n\n list.splice(i, 1);\n removed.push(next);\n next = range;\n i--;\n }\n \n this.ranges = list;\n\n return removed;\n };\n\n this.contains = function(row, column) {\n return this.pointIndex({row: row, column: column}) >= 0;\n };\n\n this.containsPoint = function(pos) {\n return this.pointIndex(pos) >= 0;\n };\n\n this.rangeAtPoint = function(pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges[i];\n };\n\n\n this.clipRows = function(startRow, endRow) {\n var list = this.ranges;\n if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow)\n return [];\n\n var startIndex = this.pointIndex({row: startRow, column: 0});\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex({row: endRow, column: 0}, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n\n var clipped = [];\n for (var i = startIndex; i < endIndex; i++) {\n clipped.push(list[i]);\n }\n return clipped;\n };\n\n this.removeAll = function() {\n return this.ranges.splice(0, this.ranges.length);\n };\n\n this.attach = function(session) {\n if (this.session)\n this.detach();\n\n this.session = session;\n this.onChange = this.$onChange.bind(this);\n\n this.session.on('change', this.onChange);\n };\n\n this.detach = function() {\n if (!this.session)\n return;\n this.session.removeListener('change', this.onChange);\n this.session = null;\n };\n\n this.$onChange = function(delta) {\n var start = delta.start;\n var end = delta.end;\n var startRow = start.row;\n var endRow = end.row;\n var ranges = this.ranges;\n for (var i = 0, n = ranges.length; i < n; i++) {\n var r = ranges[i];\n if (r.end.row >= startRow)\n break;\n }\n \n if (delta.action == \"insert\") {\n var lineDif = endRow - startRow;\n var colDiff = -start.column + end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n if (r.start.row > startRow)\n break;\n \n if (r.start.row == startRow && r.start.column >= start.column) {\n if (r.start.column == start.column && this.$bias <= 0) {\n } else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n if (r.end.row == startRow && r.end.column >= start.column) {\n if (r.end.column == start.column && this.$bias < 0) {\n continue;\n }\n if (r.end.column == start.column && colDiff > 0 && i < n - 1) {\n if (r.end.column > r.start.column && r.end.column == ranges[i+1].start.column)\n r.end.column -= colDiff;\n }\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n } else {\n var lineDif = startRow - endRow;\n var colDiff = start.column - end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n \n if (r.start.row > endRow)\n break;\n \n if (r.end.row < endRow\n && (\n startRow < r.end.row \n || startRow == r.end.row && start.column < r.end.column\n )\n ) {\n r.end.row = startRow;\n r.end.column = start.column;\n }\n else if (r.end.row == endRow) {\n if (r.end.column <= end.column) {\n if (lineDif || r.end.column > start.column) {\n r.end.column = start.column;\n r.end.row = start.row;\n }\n }\n else {\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n else if (r.end.row > endRow) {\n r.end.row += lineDif;\n }\n \n if (r.start.row < endRow\n && (\n startRow < r.start.row \n || startRow == r.start.row && start.column < r.start.column\n )\n ) {\n r.start.row = startRow;\n r.start.column = start.column;\n }\n else if (r.start.row == endRow) {\n if (r.start.column <= end.column) {\n if (lineDif || r.start.column > start.column) {\n r.start.column = start.column;\n r.start.row = start.row;\n }\n }\n else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n else if (r.start.row > endRow) {\n r.start.row += lineDif;\n }\n }\n }\n\n if (lineDif != 0 && i < n) {\n for (; i < n; i++) {\n var r = ranges[i];\n r.start.row += lineDif;\n r.end.row += lineDif;\n }\n }\n };\n\n}).call(RangeList.prototype);\n\nexports.RangeList = RangeList;\n});\n\nace.define(\"ace/edit_session/fold\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/lib/oop\"], function(require, exports, module) {\n\"use strict\";\n\nvar RangeList = require(\"../range_list\").RangeList;\nvar oop = require(\"../lib/oop\");\nvar Fold = exports.Fold = function(range, placeholder) {\n this.foldLine = null;\n this.placeholder = placeholder;\n this.range = range;\n this.start = range.start;\n this.end = range.end;\n\n this.sameRow = range.start.row == range.end.row;\n this.subFolds = this.ranges = [];\n};\n\noop.inherits(Fold, RangeList);\n\n(function() {\n\n this.toString = function() {\n return '\"' + this.placeholder + '\" ' + this.range.toString();\n };\n\n this.setFoldLine = function(foldLine) {\n this.foldLine = foldLine;\n this.subFolds.forEach(function(fold) {\n fold.setFoldLine(foldLine);\n });\n };\n\n this.clone = function() {\n var range = this.range.clone();\n var fold = new Fold(range, this.placeholder);\n this.subFolds.forEach(function(subFold) {\n fold.subFolds.push(subFold.clone());\n });\n fold.collapseChildren = this.collapseChildren;\n return fold;\n };\n\n this.addSubFold = function(fold) {\n if (this.range.isEqual(fold))\n return;\n consumeRange(fold, this.start);\n\n var row = fold.start.row, column = fold.start.column;\n for (var i = 0, cmp = -1; i < this.subFolds.length; i++) {\n cmp = this.subFolds[i].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n var afterStart = this.subFolds[i];\n var firstConsumed = 0;\n\n if (cmp == 0) {\n if (afterStart.range.containsRange(fold))\n return afterStart.addSubFold(fold);\n else\n firstConsumed = 1;\n }\n var row = fold.range.end.row, column = fold.range.end.column;\n for (var j = i, cmp = -1; j < this.subFolds.length; j++) {\n cmp = this.subFolds[j].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n if (cmp == 0) j++;\n var consumedFolds = this.subFolds.splice(i, j - i, fold);\n var last = cmp == 0 ? consumedFolds.length - 1 : consumedFolds.length;\n for (var k = firstConsumed; k < last; k++) {\n fold.addSubFold(consumedFolds[k]);\n }\n fold.setFoldLine(this.foldLine);\n\n return fold;\n };\n \n this.restoreRange = function(range) {\n return restoreRange(range, this.start);\n };\n\n}).call(Fold.prototype);\n\nfunction consumePoint(point, anchor) {\n point.row -= anchor.row;\n if (point.row == 0)\n point.column -= anchor.column;\n}\nfunction consumeRange(range, anchor) {\n consumePoint(range.start, anchor);\n consumePoint(range.end, anchor);\n}\nfunction restorePoint(point, anchor) {\n if (point.row == 0)\n point.column += anchor.column;\n point.row += anchor.row;\n}\nfunction restoreRange(range, anchor) {\n restorePoint(range.start, anchor);\n restorePoint(range.end, anchor);\n}\n\n});\n\nace.define(\"ace/edit_session/folding\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/edit_session/fold_line\",\"ace/edit_session/fold\",\"ace/token_iterator\"], function(require, exports, module) {\n\"use strict\";\n\nvar Range = require(\"../range\").Range;\nvar FoldLine = require(\"./fold_line\").FoldLine;\nvar Fold = require(\"./fold\").Fold;\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\n\nfunction Folding() {\n this.getFoldAt = function(row, column, side) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine)\n return null;\n\n var folds = foldLine.folds;\n for (var i = 0; i < folds.length; i++) {\n var range = folds[i].range;\n if (range.contains(row, column)) {\n if (side == 1 && range.isEnd(row, column) && !range.isEmpty()) {\n continue;\n } else if (side == -1 && range.isStart(row, column) && !range.isEmpty()) {\n continue;\n }\n return folds[i];\n }\n }\n };\n this.getFoldsInRange = function(range) {\n var start = range.start;\n var end = range.end;\n var foldLines = this.$foldData;\n var foundFolds = [];\n\n start.column += 1;\n end.column -= 1;\n\n for (var i = 0; i < foldLines.length; i++) {\n var cmp = foldLines[i].range.compareRange(range);\n if (cmp == 2) {\n continue;\n }\n else if (cmp == -2) {\n break;\n }\n\n var folds = foldLines[i].folds;\n for (var j = 0; j < folds.length; j++) {\n var fold = folds[j];\n cmp = fold.range.compareRange(range);\n if (cmp == -2) {\n break;\n } else if (cmp == 2) {\n continue;\n } else\n if (cmp == 42) {\n break;\n }\n foundFolds.push(fold);\n }\n }\n start.column -= 1;\n end.column += 1;\n\n return foundFolds;\n };\n\n this.getFoldsInRangeList = function(ranges) {\n if (Array.isArray(ranges)) {\n var folds = [];\n ranges.forEach(function(range) {\n folds = folds.concat(this.getFoldsInRange(range));\n }, this);\n } else {\n var folds = this.getFoldsInRange(ranges);\n }\n return folds;\n };\n this.getAllFolds = function() {\n var folds = [];\n var foldLines = this.$foldData;\n \n for (var i = 0; i < foldLines.length; i++)\n for (var j = 0; j < foldLines[i].folds.length; j++)\n folds.push(foldLines[i].folds[j]);\n\n return folds;\n };\n this.getFoldStringAt = function(row, column, trim, foldLine) {\n foldLine = foldLine || this.getFoldLine(row);\n if (!foldLine)\n return null;\n\n var lastFold = {\n end: { column: 0 }\n };\n var str, fold;\n for (var i = 0; i < foldLine.folds.length; i++) {\n fold = foldLine.folds[i];\n var cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n str = this\n .getLine(fold.start.row)\n .substring(lastFold.end.column, fold.start.column);\n break;\n }\n else if (cmp === 0) {\n return null;\n }\n lastFold = fold;\n }\n if (!str)\n str = this.getLine(fold.start.row).substring(lastFold.end.column);\n\n if (trim == -1)\n return str.substring(0, column - lastFold.end.column);\n else if (trim == 1)\n return str.substring(column - lastFold.end.column);\n else\n return str;\n };\n\n this.getFoldLine = function(docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) {\n return foldLine;\n } else if (foldLine.end.row > docRow) {\n return null;\n }\n }\n return null;\n };\n this.getNextFoldLine = function(docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.end.row >= docRow) {\n return foldLine;\n }\n }\n return null;\n };\n\n this.getFoldedRowCount = function(first, last) {\n var foldData = this.$foldData, rowCount = last-first+1;\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i],\n end = foldLine.end.row,\n start = foldLine.start.row;\n if (end >= last) {\n if (start < last) {\n if (start >= first)\n rowCount -= last-start;\n else\n rowCount = 0; // in one fold\n }\n break;\n } else if (end >= first){\n if (start >= first) // fold inside range\n rowCount -= end-start;\n else\n rowCount -= end-first+1;\n }\n }\n return rowCount;\n };\n\n this.$addFoldLine = function(foldLine) {\n this.$foldData.push(foldLine);\n this.$foldData.sort(function(a, b) {\n return a.start.row - b.start.row;\n });\n return foldLine;\n };\n this.addFold = function(placeholder, range) {\n var foldData = this.$foldData;\n var added = false;\n var fold;\n \n if (placeholder instanceof Fold)\n fold = placeholder;\n else {\n fold = new Fold(range, placeholder);\n fold.collapseChildren = range.collapseChildren;\n }\n this.$clipRangeToDocument(fold.range);\n\n var startRow = fold.start.row;\n var startColumn = fold.start.column;\n var endRow = fold.end.row;\n var endColumn = fold.end.column;\n\n var startFold = this.getFoldAt(startRow, startColumn, 1);\n var endFold = this.getFoldAt(endRow, endColumn, -1);\n if (startFold && endFold == startFold)\n return startFold.addSubFold(fold);\n\n if (startFold && !startFold.range.isStart(startRow, startColumn))\n this.removeFold(startFold);\n \n if (endFold && !endFold.range.isEnd(endRow, endColumn))\n this.removeFold(endFold);\n var folds = this.getFoldsInRange(fold.range);\n if (folds.length > 0) {\n this.removeFolds(folds);\n if (!fold.collapseChildren) {\n folds.forEach(function(subFold) {\n fold.addSubFold(subFold);\n });\n }\n }\n\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (endRow == foldLine.start.row) {\n foldLine.addFold(fold);\n added = true;\n break;\n } else if (startRow == foldLine.end.row) {\n foldLine.addFold(fold);\n added = true;\n if (!fold.sameRow) {\n var foldLineNext = foldData[i + 1];\n if (foldLineNext && foldLineNext.start.row == endRow) {\n foldLine.merge(foldLineNext);\n break;\n }\n }\n break;\n } else if (endRow <= foldLine.start.row) {\n break;\n }\n }\n\n if (!added)\n foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold));\n\n if (this.$useWrapMode)\n this.$updateWrapData(foldLine.start.row, foldLine.start.row);\n else\n this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row);\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"add\" });\n\n return fold;\n };\n\n this.addFolds = function(folds) {\n folds.forEach(function(fold) {\n this.addFold(fold);\n }, this);\n };\n\n this.removeFold = function(fold) {\n var foldLine = fold.foldLine;\n var startRow = foldLine.start.row;\n var endRow = foldLine.end.row;\n\n var foldLines = this.$foldData;\n var folds = foldLine.folds;\n if (folds.length == 1) {\n foldLines.splice(foldLines.indexOf(foldLine), 1);\n } else\n if (foldLine.range.isEnd(fold.end.row, fold.end.column)) {\n folds.pop();\n foldLine.end.row = folds[folds.length - 1].end.row;\n foldLine.end.column = folds[folds.length - 1].end.column;\n } else\n if (foldLine.range.isStart(fold.start.row, fold.start.column)) {\n folds.shift();\n foldLine.start.row = folds[0].start.row;\n foldLine.start.column = folds[0].start.column;\n } else\n if (fold.sameRow) {\n folds.splice(folds.indexOf(fold), 1);\n } else\n {\n var newFoldLine = foldLine.split(fold.start.row, fold.start.column);\n folds = newFoldLine.folds;\n folds.shift();\n newFoldLine.start.row = folds[0].start.row;\n newFoldLine.start.column = folds[0].start.column;\n }\n\n if (!this.$updating) {\n if (this.$useWrapMode)\n this.$updateWrapData(startRow, endRow);\n else\n this.$updateRowLengthCache(startRow, endRow);\n }\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"remove\" });\n };\n\n this.removeFolds = function(folds) {\n var cloneFolds = [];\n for (var i = 0; i < folds.length; i++) {\n cloneFolds.push(folds[i]);\n }\n\n cloneFolds.forEach(function(fold) {\n this.removeFold(fold);\n }, this);\n this.$modified = true;\n };\n\n this.expandFold = function(fold) {\n this.removeFold(fold);\n fold.subFolds.forEach(function(subFold) {\n fold.restoreRange(subFold);\n this.addFold(subFold);\n }, this);\n if (fold.collapseChildren > 0) {\n this.foldAll(fold.start.row+1, fold.end.row, fold.collapseChildren-1);\n }\n fold.subFolds = [];\n };\n\n this.expandFolds = function(folds) {\n folds.forEach(function(fold) {\n this.expandFold(fold);\n }, this);\n };\n\n this.unfold = function(location, expandInner) {\n var range, folds;\n if (location == null) {\n range = new Range(0, 0, this.getLength(), 0);\n if (expandInner == null) expandInner = true;\n } else if (typeof location == \"number\") {\n range = new Range(location, 0, location, this.getLine(location).length);\n } else if (\"row\" in location) {\n range = Range.fromPoints(location, location);\n } else if (Array.isArray(location)) {\n folds = [];\n location.forEach(function(range) {\n folds = folds.concat(this.unfold(range));\n }, this);\n return folds;\n } else {\n range = location;\n }\n \n folds = this.getFoldsInRangeList(range);\n var outermostFolds = folds;\n while (\n folds.length == 1\n && Range.comparePoints(folds[0].start, range.start) < 0 \n && Range.comparePoints(folds[0].end, range.end) > 0\n ) {\n this.expandFolds(folds);\n folds = this.getFoldsInRangeList(range);\n }\n \n if (expandInner != false) {\n this.removeFolds(folds);\n } else {\n this.expandFolds(folds);\n }\n if (outermostFolds.length)\n return outermostFolds;\n };\n this.isRowFolded = function(docRow, startFoldRow) {\n return !!this.getFoldLine(docRow, startFoldRow);\n };\n\n this.getRowFoldEnd = function(docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.end.row : docRow;\n };\n\n this.getRowFoldStart = function(docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.start.row : docRow;\n };\n\n this.getFoldDisplayLine = function(foldLine, endRow, endColumn, startRow, startColumn) {\n if (startRow == null)\n startRow = foldLine.start.row;\n if (startColumn == null)\n startColumn = 0;\n if (endRow == null)\n endRow = foldLine.end.row;\n if (endColumn == null)\n endColumn = this.getLine(endRow).length;\n var doc = this.doc;\n var textLine = \"\";\n\n foldLine.walk(function(placeholder, row, column, lastColumn) {\n if (row < startRow)\n return;\n if (row == startRow) {\n if (column < startColumn)\n return;\n lastColumn = Math.max(startColumn, lastColumn);\n }\n\n if (placeholder != null) {\n textLine += placeholder;\n } else {\n textLine += doc.getLine(row).substring(lastColumn, column);\n }\n }, endRow, endColumn);\n return textLine;\n };\n\n this.getDisplayLine = function(row, endColumn, startRow, startColumn) {\n var foldLine = this.getFoldLine(row);\n\n if (!foldLine) {\n var line;\n line = this.doc.getLine(row);\n return line.substring(startColumn || 0, endColumn || line.length);\n } else {\n return this.getFoldDisplayLine(\n foldLine, row, endColumn, startRow, startColumn);\n }\n };\n\n this.$cloneFoldData = function() {\n var fd = [];\n fd = this.$foldData.map(function(foldLine) {\n var folds = foldLine.folds.map(function(fold) {\n return fold.clone();\n });\n return new FoldLine(fd, folds);\n });\n\n return fd;\n };\n\n this.toggleFold = function(tryToUnfold) {\n var selection = this.selection;\n var range = selection.getRange();\n var fold;\n var bracketPos;\n\n if (range.isEmpty()) {\n var cursor = range.start;\n fold = this.getFoldAt(cursor.row, cursor.column);\n\n if (fold) {\n this.expandFold(fold);\n return;\n } else if (bracketPos = this.findMatchingBracket(cursor)) {\n if (range.comparePoint(bracketPos) == 1) {\n range.end = bracketPos;\n } else {\n range.start = bracketPos;\n range.start.column++;\n range.end.column--;\n }\n } else if (bracketPos = this.findMatchingBracket({row: cursor.row, column: cursor.column + 1})) {\n if (range.comparePoint(bracketPos) == 1)\n range.end = bracketPos;\n else\n range.start = bracketPos;\n\n range.start.column++;\n } else {\n range = this.getCommentFoldRange(cursor.row, cursor.column) || range;\n }\n } else {\n var folds = this.getFoldsInRange(range);\n if (tryToUnfold && folds.length) {\n this.expandFolds(folds);\n return;\n } else if (folds.length == 1 ) {\n fold = folds[0];\n }\n }\n\n if (!fold)\n fold = this.getFoldAt(range.start.row, range.start.column);\n\n if (fold && fold.range.toString() == range.toString()) {\n this.expandFold(fold);\n return;\n }\n\n var placeholder = \"...\";\n if (!range.isMultiLine()) {\n placeholder = this.getTextRange(range);\n if (placeholder.length < 4)\n return;\n placeholder = placeholder.trim().substring(0, 2) + \"..\";\n }\n\n this.addFold(placeholder, range);\n };\n\n this.getCommentFoldRange = function(row, column, dir) {\n var iterator = new TokenIterator(this, row, column);\n var token = iterator.getCurrentToken();\n var type = token && token.type;\n if (token && /^comment|string/.test(type)) {\n type = type.match(/comment|string/)[0];\n if (type == \"comment\")\n type += \"|doc-start\";\n var re = new RegExp(type);\n var range = new Range();\n if (dir != 1) {\n do {\n token = iterator.stepBackward();\n } while (token && re.test(token.type));\n iterator.stepForward();\n }\n \n range.start.row = iterator.getCurrentTokenRow();\n range.start.column = iterator.getCurrentTokenColumn() + 2;\n\n iterator = new TokenIterator(this, row, column);\n \n if (dir != -1) {\n var lastRow = -1;\n do {\n token = iterator.stepForward();\n if (lastRow == -1) {\n var state = this.getState(iterator.$row);\n if (!re.test(state))\n lastRow = iterator.$row;\n } else if (iterator.$row > lastRow) {\n break;\n }\n } while (token && re.test(token.type));\n token = iterator.stepBackward();\n } else\n token = iterator.getCurrentToken();\n\n range.end.row = iterator.getCurrentTokenRow();\n range.end.column = iterator.getCurrentTokenColumn() + token.value.length - 2;\n return range;\n }\n };\n\n this.foldAll = function(startRow, endRow, depth, test) {\n if (depth == undefined)\n depth = 100000; // JSON.stringify doesn't hanle Infinity\n var foldWidgets = this.foldWidgets;\n if (!foldWidgets)\n return; // mode doesn't support folding\n endRow = endRow || this.getLength();\n startRow = startRow || 0;\n for (var row = startRow; row < endRow; row++) {\n if (foldWidgets[row] == null)\n foldWidgets[row] = this.getFoldWidget(row);\n if (foldWidgets[row] != \"start\")\n continue;\n \n if (test && !test(row)) continue;\n\n var range = this.getFoldWidgetRange(row);\n if (range && range.isMultiLine()\n && range.end.row <= endRow\n && range.start.row >= startRow\n ) {\n row = range.end.row;\n range.collapseChildren = depth;\n this.addFold(\"...\", range);\n }\n }\n };\n \n this.foldToLevel = function(level) {\n this.foldAll();\n while (level-- > 0)\n this.unfold(null, false);\n };\n \n this.foldAllComments = function() {\n var session = this;\n this.foldAll(null, null, null, function(row) {\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token.type == \"text\" && /^\\s+$/.test(token.value))\n continue;\n if (/comment/.test(token.type))\n return true;\n return false;\n }\n });\n };\n this.$foldStyles = {\n \"manual\": 1,\n \"markbegin\": 1,\n \"markbeginend\": 1\n };\n this.$foldStyle = \"markbegin\";\n this.setFoldStyle = function(style) {\n if (!this.$foldStyles[style])\n throw new Error(\"invalid fold style: \" + style + \"[\" + Object.keys(this.$foldStyles).join(\", \") + \"]\");\n \n if (this.$foldStyle == style)\n return;\n\n this.$foldStyle = style;\n \n if (style == \"manual\")\n this.unfold();\n var mode = this.$foldMode;\n this.$setFolding(null);\n this.$setFolding(mode);\n };\n\n this.$setFolding = function(foldMode) {\n if (this.$foldMode == foldMode)\n return;\n \n this.$foldMode = foldMode;\n \n this.off('change', this.$updateFoldWidgets);\n this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n this._signal(\"changeAnnotation\");\n \n if (!foldMode || this.$foldStyle == \"manual\") {\n this.foldWidgets = null;\n return;\n }\n \n this.foldWidgets = [];\n this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle);\n this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle);\n \n this.$updateFoldWidgets = this.updateFoldWidgets.bind(this);\n this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this);\n this.on('change', this.$updateFoldWidgets);\n this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n };\n\n this.getParentFoldRangeData = function (row, ignoreCurrent) {\n var fw = this.foldWidgets;\n if (!fw || (ignoreCurrent && fw[row]))\n return {};\n\n var i = row - 1, firstRange;\n while (i >= 0) {\n var c = fw[i];\n if (c == null)\n c = fw[i] = this.getFoldWidget(i);\n\n if (c == \"start\") {\n var range = this.getFoldWidgetRange(i);\n if (!firstRange)\n firstRange = range;\n if (range && range.end.row >= row)\n break;\n }\n i--;\n }\n\n return {\n range: i !== -1 && range,\n firstRange: firstRange\n };\n };\n\n this.onFoldWidgetClick = function(row, e) {\n e = e.domEvent;\n var options = {\n children: e.shiftKey,\n all: e.ctrlKey || e.metaKey,\n siblings: e.altKey\n };\n \n var range = this.$toggleFoldWidget(row, options);\n if (!range) {\n var el = (e.target || e.srcElement);\n if (el && /ace_fold-widget/.test(el.className))\n el.className += \" ace_invalid\";\n }\n };\n \n this.$toggleFoldWidget = function(row, options) {\n if (!this.getFoldWidget)\n return;\n var type = this.getFoldWidget(row);\n var line = this.getLine(row);\n\n var dir = type === \"end\" ? -1 : 1;\n var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir);\n\n if (fold) {\n if (options.children || options.all)\n this.removeFold(fold);\n else\n this.expandFold(fold);\n return fold;\n }\n\n var range = this.getFoldWidgetRange(row, true);\n if (range && !range.isMultiLine()) {\n fold = this.getFoldAt(range.start.row, range.start.column, 1);\n if (fold && range.isEqual(fold.range)) {\n this.removeFold(fold);\n return fold;\n }\n }\n \n if (options.siblings) {\n var data = this.getParentFoldRangeData(row);\n if (data.range) {\n var startRow = data.range.start.row + 1;\n var endRow = data.range.end.row;\n }\n this.foldAll(startRow, endRow, options.all ? 10000 : 0);\n } else if (options.children) {\n endRow = range ? range.end.row : this.getLength();\n this.foldAll(row + 1, endRow, options.all ? 10000 : 0);\n } else if (range) {\n if (options.all) \n range.collapseChildren = 10000;\n this.addFold(\"...\", range);\n }\n \n return range;\n };\n \n \n \n this.toggleFoldWidget = function(toggleParent) {\n var row = this.selection.getCursor().row;\n row = this.getRowFoldStart(row);\n var range = this.$toggleFoldWidget(row, {});\n \n if (range)\n return;\n var data = this.getParentFoldRangeData(row, true);\n range = data.range || data.firstRange;\n \n if (range) {\n row = range.start.row;\n var fold = this.getFoldAt(row, this.getLine(row).length, 1);\n\n if (fold) {\n this.removeFold(fold);\n } else {\n this.addFold(\"...\", range);\n }\n }\n };\n\n this.updateFoldWidgets = function(delta) {\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n\n if (len === 0) {\n this.foldWidgets[firstRow] = null;\n } else if (delta.action == 'remove') {\n this.foldWidgets.splice(firstRow, len + 1, null);\n } else {\n var args = Array(len + 1);\n args.unshift(firstRow, 1);\n this.foldWidgets.splice.apply(this.foldWidgets, args);\n }\n };\n this.tokenizerUpdateFoldWidgets = function(e) {\n var rows = e.data;\n if (rows.first != rows.last) {\n if (this.foldWidgets.length > rows.first)\n this.foldWidgets.splice(rows.first, this.foldWidgets.length);\n }\n };\n}\n\nexports.Folding = Folding;\n\n});\n\nace.define(\"ace/edit_session/bracket_match\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\n\n\nfunction BracketMatch() {\n\n this.findMatchingBracket = function(position, chr) {\n if (position.column == 0) return null;\n\n var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column-1);\n if (charBeforeCursor == \"\") return null;\n\n var match = charBeforeCursor.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match)\n return null;\n\n if (match[1])\n return this.$findClosingBracket(match[1], position);\n else\n return this.$findOpeningBracket(match[2], position);\n };\n \n this.getBracketRange = function(pos) {\n var line = this.getLine(pos.row);\n var before = true, range;\n\n var chr = line.charAt(pos.column - 1);\n var match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match) {\n chr = line.charAt(pos.column);\n pos = {row: pos.row, column: pos.column + 1};\n match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n before = false;\n }\n if (!match)\n return null;\n\n if (match[1]) {\n var bracketPos = this.$findClosingBracket(match[1], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(pos, bracketPos);\n if (!before) {\n range.end.column++;\n range.start.column--;\n }\n range.cursor = range.end;\n } else {\n var bracketPos = this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(bracketPos, pos);\n if (!before) {\n range.start.column++;\n range.end.column--;\n }\n range.cursor = range.start;\n }\n \n return range;\n };\n this.getMatchingBracketRanges = function(pos) {\n var line = this.getLine(pos.row);\n\n var chr = line.charAt(pos.column - 1);\n var match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match) {\n chr = line.charAt(pos.column);\n pos = {row: pos.row, column: pos.column + 1};\n match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n }\n\n if (!match)\n return null;\n\n var startRange = new Range(pos.row, pos.column - 1, pos.row, pos.column);\n var bracketPos = match[1] ? this.$findClosingBracket(match[1], pos)\n : this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return [startRange];\n var endRange = new Range(bracketPos.row, bracketPos.column, bracketPos.row, bracketPos.column + 1);\n\n return [startRange, endRange];\n };\n\n this.$brackets = {\n \")\": \"(\",\n \"(\": \")\",\n \"]\": \"[\",\n \"[\": \"]\",\n \"{\": \"}\",\n \"}\": \"{\",\n \"<\": \">\",\n \">\": \"<\"\n };\n\n this.$findOpeningBracket = function(bracket, position, typeRe) {\n var openBracket = this.$brackets[bracket];\n var depth = 1;\n\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n \n if (!typeRe){\n typeRe = new RegExp(\n \"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"rparen\", \".paren\")\n .replace(/\\b(?:end)\\b/, \"(?:start|begin|end)\")\n + \")+\"\n );\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2;\n var value = token.value;\n \n while (true) {\n \n while (valueIndex >= 0) {\n var chr = value.charAt(valueIndex);\n if (chr == openBracket) {\n depth -= 1;\n if (depth == 0) {\n return {row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn()};\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex -= 1;\n }\n do {\n token = iterator.stepBackward();\n } while (token && !typeRe.test(token.type));\n\n if (token == null)\n break;\n \n value = token.value;\n valueIndex = value.length - 1;\n }\n \n return null;\n };\n\n this.$findClosingBracket = function(bracket, position, typeRe) {\n var closingBracket = this.$brackets[bracket];\n var depth = 1;\n\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n\n if (!typeRe){\n typeRe = new RegExp(\n \"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"lparen\", \".paren\")\n .replace(/\\b(?:start|begin)\\b/, \"(?:start|begin|end)\")\n + \")+\"\n );\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn();\n\n while (true) {\n\n var value = token.value;\n var valueLength = value.length;\n while (valueIndex < valueLength) {\n var chr = value.charAt(valueIndex);\n if (chr == closingBracket) {\n depth -= 1;\n if (depth == 0) {\n return {row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn()};\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex += 1;\n }\n do {\n token = iterator.stepForward();\n } while (token && !typeRe.test(token.type));\n\n if (token == null)\n break;\n\n valueIndex = 0;\n }\n \n return null;\n };\n}\nexports.BracketMatch = BracketMatch;\n\n});\n\nace.define(\"ace/edit_session\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/bidihandler\",\"ace/config\",\"ace/lib/event_emitter\",\"ace/selection\",\"ace/mode/text\",\"ace/range\",\"ace/document\",\"ace/background_tokenizer\",\"ace/search_highlight\",\"ace/edit_session/folding\",\"ace/edit_session/bracket_match\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar BidiHandler = require(\"./bidihandler\").BidiHandler;\nvar config = require(\"./config\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Selection = require(\"./selection\").Selection;\nvar TextMode = require(\"./mode/text\").Mode;\nvar Range = require(\"./range\").Range;\nvar Document = require(\"./document\").Document;\nvar BackgroundTokenizer = require(\"./background_tokenizer\").BackgroundTokenizer;\nvar SearchHighlight = require(\"./search_highlight\").SearchHighlight;\n\nvar EditSession = function(text, mode) {\n this.$breakpoints = [];\n this.$decorations = [];\n this.$frontMarkers = {};\n this.$backMarkers = {};\n this.$markerId = 1;\n this.$undoSelect = true;\n\n this.$foldData = [];\n this.id = \"session\" + (++EditSession.$uid);\n this.$foldData.toString = function() {\n return this.join(\"\\n\");\n };\n this.on(\"changeFold\", this.onChangeFold.bind(this));\n this.$onChange = this.onChange.bind(this);\n\n if (typeof text != \"object\" || !text.getLine)\n text = new Document(text);\n\n this.setDocument(text);\n this.selection = new Selection(this);\n this.$bidiHandler = new BidiHandler(this);\n\n config.resetOptions(this);\n this.setMode(mode);\n config._signal(\"session\", this);\n};\n\n\nEditSession.$uid = 0;\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.setDocument = function(doc) {\n if (this.doc)\n this.doc.off(\"change\", this.$onChange);\n\n this.doc = doc;\n doc.on(\"change\", this.$onChange);\n\n if (this.bgTokenizer)\n this.bgTokenizer.setDocument(this.getDocument());\n\n this.resetCaches();\n };\n this.getDocument = function() {\n return this.doc;\n };\n this.$resetRowCache = function(docRow) {\n if (!docRow) {\n this.$docRowCache = [];\n this.$screenRowCache = [];\n return;\n }\n var l = this.$docRowCache.length;\n var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1;\n if (l > i) {\n this.$docRowCache.splice(i, l);\n this.$screenRowCache.splice(i, l);\n }\n };\n\n this.$getRowCacheIndex = function(cacheArray, val) {\n var low = 0;\n var hi = cacheArray.length - 1;\n\n while (low <= hi) {\n var mid = (low + hi) >> 1;\n var c = cacheArray[mid];\n\n if (val > c)\n low = mid + 1;\n else if (val < c)\n hi = mid - 1;\n else\n return mid;\n }\n\n return low -1;\n };\n\n this.resetCaches = function() {\n this.$modified = true;\n this.$wrapData = [];\n this.$rowLengthCache = [];\n this.$resetRowCache(0);\n if (this.bgTokenizer)\n this.bgTokenizer.start(0);\n };\n\n this.onChangeFold = function(e) {\n var fold = e.data;\n this.$resetRowCache(fold.start.row);\n };\n\n this.onChange = function(delta) {\n this.$modified = true;\n this.$bidiHandler.onChange(delta);\n this.$resetRowCache(delta.start.row);\n\n var removedFolds = this.$updateInternalDataOnChange(delta);\n if (!this.$fromUndo && this.$undoManager) {\n if (removedFolds && removedFolds.length) {\n this.$undoManager.add({\n action: \"removeFolds\",\n folds: removedFolds\n }, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n }\n this.$undoManager.add(delta, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n \n this.$informUndoManager.schedule();\n }\n\n this.bgTokenizer && this.bgTokenizer.$updateOnChange(delta);\n this._signal(\"change\", delta);\n };\n this.setValue = function(text) {\n this.doc.setValue(text);\n this.selection.moveTo(0, 0);\n\n this.$resetRowCache(0);\n this.setUndoManager(this.$undoManager);\n this.getUndoManager().reset();\n };\n this.getValue =\n this.toString = function() {\n return this.doc.getValue();\n };\n this.getSelection = function() {\n return this.selection;\n };\n this.getState = function(row) {\n return this.bgTokenizer.getState(row);\n };\n this.getTokens = function(row) {\n return this.bgTokenizer.getTokens(row);\n };\n this.getTokenAt = function(row, column) {\n var tokens = this.bgTokenizer.getTokens(row);\n var token, c = 0;\n if (column == null) {\n var i = tokens.length - 1;\n c = this.getLine(row).length;\n } else {\n for (var i = 0; i < tokens.length; i++) {\n c += tokens[i].value.length;\n if (c >= column)\n break;\n }\n }\n token = tokens[i];\n if (!token)\n return null;\n token.index = i;\n token.start = c - token.value.length;\n return token;\n };\n this.setUndoManager = function(undoManager) {\n this.$undoManager = undoManager;\n \n if (this.$informUndoManager)\n this.$informUndoManager.cancel();\n \n if (undoManager) {\n var self = this;\n undoManager.addSession(this);\n this.$syncInformUndoManager = function() {\n self.$informUndoManager.cancel();\n self.mergeUndoDeltas = false;\n };\n this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager);\n } else {\n this.$syncInformUndoManager = function() {};\n }\n };\n this.markUndoGroup = function() {\n if (this.$syncInformUndoManager)\n this.$syncInformUndoManager();\n };\n \n this.$defaultUndoManager = {\n undo: function() {},\n redo: function() {},\n hasUndo: function() {},\n hasRedo: function() {},\n reset: function() {},\n add: function() {},\n addSelection: function() {},\n startNewGroup: function() {},\n addSession: function() {}\n };\n this.getUndoManager = function() {\n return this.$undoManager || this.$defaultUndoManager;\n };\n this.getTabString = function() {\n if (this.getUseSoftTabs()) {\n return lang.stringRepeat(\" \", this.getTabSize());\n } else {\n return \"\\t\";\n }\n };\n this.setUseSoftTabs = function(val) {\n this.setOption(\"useSoftTabs\", val);\n };\n this.getUseSoftTabs = function() {\n return this.$useSoftTabs && !this.$mode.$indentWithTabs;\n };\n this.setTabSize = function(tabSize) {\n this.setOption(\"tabSize\", tabSize);\n };\n this.getTabSize = function() {\n return this.$tabSize;\n };\n this.isTabStop = function(position) {\n return this.$useSoftTabs && (position.column % this.$tabSize === 0);\n };\n this.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) {\n this.setOption(\"navigateWithinSoftTabs\", navigateWithinSoftTabs);\n };\n this.getNavigateWithinSoftTabs = function() {\n return this.$navigateWithinSoftTabs;\n };\n\n this.$overwrite = false;\n this.setOverwrite = function(overwrite) {\n this.setOption(\"overwrite\", overwrite);\n };\n this.getOverwrite = function() {\n return this.$overwrite;\n };\n this.toggleOverwrite = function() {\n this.setOverwrite(!this.$overwrite);\n };\n this.addGutterDecoration = function(row, className) {\n if (!this.$decorations[row])\n this.$decorations[row] = \"\";\n this.$decorations[row] += \" \" + className;\n this._signal(\"changeBreakpoint\", {});\n };\n this.removeGutterDecoration = function(row, className) {\n this.$decorations[row] = (this.$decorations[row] || \"\").replace(\" \" + className, \"\");\n this._signal(\"changeBreakpoint\", {});\n };\n this.getBreakpoints = function() {\n return this.$breakpoints;\n };\n this.setBreakpoints = function(rows) {\n this.$breakpoints = [];\n for (var i=0; i 0)\n inToken = !!line.charAt(column - 1).match(this.tokenRe);\n\n if (!inToken)\n inToken = !!line.charAt(column).match(this.tokenRe);\n\n if (inToken)\n var re = this.tokenRe;\n else if (/^\\s+$/.test(line.slice(column-1, column+1)))\n var re = /\\s/;\n else\n var re = this.nonTokenRe;\n\n var start = column;\n if (start > 0) {\n do {\n start--;\n }\n while (start >= 0 && line.charAt(start).match(re));\n start++;\n }\n\n var end = column;\n while (end < line.length && line.charAt(end).match(re)) {\n end++;\n }\n\n return new Range(row, start, row, end);\n };\n this.getAWordRange = function(row, column) {\n var wordRange = this.getWordRange(row, column);\n var line = this.getLine(wordRange.end.row);\n\n while (line.charAt(wordRange.end.column).match(/[ \\t]/)) {\n wordRange.end.column += 1;\n }\n return wordRange;\n };\n this.setNewLineMode = function(newLineMode) {\n this.doc.setNewLineMode(newLineMode);\n };\n this.getNewLineMode = function() {\n return this.doc.getNewLineMode();\n };\n this.setUseWorker = function(useWorker) { this.setOption(\"useWorker\", useWorker); };\n this.getUseWorker = function() { return this.$useWorker; };\n this.onReloadTokenizer = function(e) {\n var rows = e.data;\n this.bgTokenizer.start(rows.first);\n this._signal(\"tokenizerUpdate\", e);\n };\n\n this.$modes = config.$modes;\n this.$mode = null;\n this.$modeId = null;\n this.setMode = function(mode, cb) {\n if (mode && typeof mode === \"object\") {\n if (mode.getTokenizer)\n return this.$onChangeMode(mode);\n var options = mode;\n var path = options.path;\n } else {\n path = mode || \"ace/mode/text\";\n }\n if (!this.$modes[\"ace/mode/text\"])\n this.$modes[\"ace/mode/text\"] = new TextMode();\n\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n cb && cb();\n return;\n }\n this.$modeId = path;\n config.loadModule([\"mode\", path], function(m) {\n if (this.$modeId !== path)\n return cb && cb();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n } else if (m && m.Mode) {\n m = new m.Mode(options);\n if (!options) {\n this.$modes[path] = m;\n m.$id = path;\n }\n this.$onChangeMode(m);\n }\n cb && cb();\n }.bind(this));\n if (!this.$mode)\n this.$onChangeMode(this.$modes[\"ace/mode/text\"], true);\n };\n\n this.$onChangeMode = function(mode, $isPlaceholder) {\n if (!$isPlaceholder)\n this.$modeId = mode.$id;\n if (this.$mode === mode) \n return;\n \n var oldMode = this.$mode;\n this.$mode = mode;\n\n this.$stopWorker();\n\n if (this.$useWorker)\n this.$startWorker();\n\n var tokenizer = mode.getTokenizer();\n\n if(tokenizer.on !== undefined) {\n var onReloadTokenizer = this.onReloadTokenizer.bind(this);\n tokenizer.on(\"update\", onReloadTokenizer);\n }\n\n if (!this.bgTokenizer) {\n this.bgTokenizer = new BackgroundTokenizer(tokenizer);\n var _self = this;\n this.bgTokenizer.on(\"update\", function(e) {\n _self._signal(\"tokenizerUpdate\", e);\n });\n } else {\n this.bgTokenizer.setTokenizer(tokenizer);\n }\n\n this.bgTokenizer.setDocument(this.getDocument());\n\n this.tokenRe = mode.tokenRe;\n this.nonTokenRe = mode.nonTokenRe;\n\n \n if (!$isPlaceholder) {\n if (mode.attachToSession)\n mode.attachToSession(this);\n this.$options.wrapMethod.set.call(this, this.$wrapMethod);\n this.$setFolding(mode.foldingRules);\n this.bgTokenizer.start(0);\n this._emit(\"changeMode\", {oldMode: oldMode, mode: mode});\n }\n };\n\n this.$stopWorker = function() {\n if (this.$worker) {\n this.$worker.terminate();\n this.$worker = null;\n }\n };\n\n this.$startWorker = function() {\n try {\n this.$worker = this.$mode.createWorker(this);\n } catch (e) {\n config.warn(\"Could not load worker\", e);\n this.$worker = null;\n }\n };\n this.getMode = function() {\n return this.$mode;\n };\n\n this.$scrollTop = 0;\n this.setScrollTop = function(scrollTop) {\n if (this.$scrollTop === scrollTop || isNaN(scrollTop))\n return;\n\n this.$scrollTop = scrollTop;\n this._signal(\"changeScrollTop\", scrollTop);\n };\n this.getScrollTop = function() {\n return this.$scrollTop;\n };\n\n this.$scrollLeft = 0;\n this.setScrollLeft = function(scrollLeft) {\n if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft))\n return;\n\n this.$scrollLeft = scrollLeft;\n this._signal(\"changeScrollLeft\", scrollLeft);\n };\n this.getScrollLeft = function() {\n return this.$scrollLeft;\n };\n this.getScreenWidth = function() {\n this.$computeWidth();\n if (this.lineWidgets) \n return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth);\n return this.screenWidth;\n };\n \n this.getLineWidgetMaxWidth = function() {\n if (this.lineWidgetsWidth != null) return this.lineWidgetsWidth;\n var width = 0;\n this.lineWidgets.forEach(function(w) {\n if (w && w.screenWidth > width)\n width = w.screenWidth;\n });\n return this.lineWidgetWidth = width;\n };\n\n this.$computeWidth = function(force) {\n if (this.$modified || force) {\n this.$modified = false;\n\n if (this.$useWrapMode)\n return this.screenWidth = this.$wrapLimit;\n\n var lines = this.doc.getAllLines();\n var cache = this.$rowLengthCache;\n var longestScreenLine = 0;\n var foldIndex = 0;\n var foldLine = this.$foldData[foldIndex];\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n var len = lines.length;\n\n for (var i = 0; i < len; i++) {\n if (i > foldStart) {\n i = foldLine.end.row + 1;\n if (i >= len)\n break;\n foldLine = this.$foldData[foldIndex++];\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n\n if (cache[i] == null)\n cache[i] = this.$getStringScreenWidth(lines[i])[0];\n\n if (cache[i] > longestScreenLine)\n longestScreenLine = cache[i];\n }\n this.screenWidth = longestScreenLine;\n }\n };\n this.getLine = function(row) {\n return this.doc.getLine(row);\n };\n this.getLines = function(firstRow, lastRow) {\n return this.doc.getLines(firstRow, lastRow);\n };\n this.getLength = function() {\n return this.doc.getLength();\n };\n this.getTextRange = function(range) {\n return this.doc.getTextRange(range || this.selection.getRange());\n };\n this.insert = function(position, text) {\n return this.doc.insert(position, text);\n };\n this.remove = function(range) {\n return this.doc.remove(range);\n };\n this.removeFullLines = function(firstRow, lastRow){\n return this.doc.removeFullLines(firstRow, lastRow);\n };\n this.undoChanges = function(deltas, dontSelect) {\n if (!deltas.length)\n return;\n\n this.$fromUndo = true;\n for (var i = deltas.length - 1; i != -1; i--) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.revertDelta(delta);\n } else if (delta.folds) {\n this.addFolds(delta.folds);\n }\n }\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionBefore)\n this.selection.fromJSON(deltas.selectionBefore);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, true));\n }\n this.$fromUndo = false;\n };\n this.redoChanges = function(deltas, dontSelect) {\n if (!deltas.length)\n return;\n\n this.$fromUndo = true;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.$safeApplyDelta(delta);\n }\n }\n\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionAfter)\n this.selection.fromJSON(deltas.selectionAfter);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, false));\n }\n this.$fromUndo = false;\n };\n this.setUndoSelect = function(enable) {\n this.$undoSelect = enable;\n };\n\n this.$getUndoSelection = function(deltas, isUndo) {\n function isInsert(delta) {\n return isUndo ? delta.action !== \"insert\" : delta.action === \"insert\";\n }\n\n var range, point;\n\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (!delta.start) continue; // skip folds\n if (!range) {\n if (isInsert(delta)) {\n range = Range.fromPoints(delta.start, delta.end);\n } else {\n range = Range.fromPoints(delta.start, delta.start);\n }\n continue;\n }\n \n if (isInsert(delta)) {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range.setStart(point);\n }\n point = delta.end;\n if (range.compare(point.row, point.column) == 1) {\n range.setEnd(point);\n }\n } else {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range = Range.fromPoints(delta.start, delta.start);\n }\n }\n }\n return range;\n };\n this.replace = function(range, text) {\n return this.doc.replace(range, text);\n };\n this.moveText = function(fromRange, toPosition, copy) {\n var text = this.getTextRange(fromRange);\n var folds = this.getFoldsInRange(fromRange);\n\n var toRange = Range.fromPoints(toPosition, toPosition);\n if (!copy) {\n this.remove(fromRange);\n var rowDiff = fromRange.start.row - fromRange.end.row;\n var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column;\n if (collDiff) {\n if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column)\n toRange.start.column += collDiff;\n if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column)\n toRange.end.column += collDiff;\n }\n if (rowDiff && toRange.start.row >= fromRange.end.row) {\n toRange.start.row += rowDiff;\n toRange.end.row += rowDiff;\n }\n }\n\n toRange.end = this.insert(toRange.start, text);\n if (folds.length) {\n var oldStart = fromRange.start;\n var newStart = toRange.start;\n var rowDiff = newStart.row - oldStart.row;\n var collDiff = newStart.column - oldStart.column;\n this.addFolds(folds.map(function(x) {\n x = x.clone();\n if (x.start.row == oldStart.row)\n x.start.column += collDiff;\n if (x.end.row == oldStart.row)\n x.end.column += collDiff;\n x.start.row += rowDiff;\n x.end.row += rowDiff;\n return x;\n }));\n }\n\n return toRange;\n };\n this.indentRows = function(startRow, endRow, indentString) {\n indentString = indentString.replace(/\\t/g, this.getTabString());\n for (var row=startRow; row<=endRow; row++)\n this.doc.insertInLine({row: row, column: 0}, indentString);\n };\n this.outdentRows = function (range) {\n var rowRange = range.collapseRows();\n var deleteRange = new Range(0, 0, 0, 0);\n var size = this.getTabSize();\n\n for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) {\n var line = this.getLine(i);\n\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n for (var j = 0; j < size; ++j)\n if (line.charAt(j) != ' ')\n break;\n if (j < size && line.charAt(j) == '\\t') {\n deleteRange.start.column = j;\n deleteRange.end.column = j + 1;\n } else {\n deleteRange.start.column = 0;\n deleteRange.end.column = j;\n }\n this.remove(deleteRange);\n }\n };\n\n this.$moveLines = function(firstRow, lastRow, dir) {\n firstRow = this.getRowFoldStart(firstRow);\n lastRow = this.getRowFoldEnd(lastRow);\n if (dir < 0) {\n var row = this.getRowFoldStart(firstRow + dir);\n if (row < 0) return 0;\n var diff = row-firstRow;\n } else if (dir > 0) {\n var row = this.getRowFoldEnd(lastRow + dir);\n if (row > this.doc.getLength()-1) return 0;\n var diff = row-lastRow;\n } else {\n firstRow = this.$clipRowToDocument(firstRow);\n lastRow = this.$clipRowToDocument(lastRow);\n var diff = lastRow - firstRow + 1;\n }\n\n var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE);\n var folds = this.getFoldsInRange(range).map(function(x){\n x = x.clone();\n x.start.row += diff;\n x.end.row += diff;\n return x;\n });\n \n var lines = dir == 0\n ? this.doc.getLines(firstRow, lastRow)\n : this.doc.removeFullLines(firstRow, lastRow);\n this.doc.insertFullLines(firstRow+diff, lines);\n folds.length && this.addFolds(folds);\n return diff;\n };\n this.moveLinesUp = function(firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, -1);\n };\n this.moveLinesDown = function(firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 1);\n };\n this.duplicateLines = function(firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 0);\n };\n\n\n this.$clipRowToDocument = function(row) {\n return Math.max(0, Math.min(row, this.doc.getLength()-1));\n };\n\n this.$clipColumnToRow = function(row, column) {\n if (column < 0)\n return 0;\n return Math.min(this.doc.getLine(row).length, column);\n };\n\n\n this.$clipPositionToDocument = function(row, column) {\n column = Math.max(0, column);\n\n if (row < 0) {\n row = 0;\n column = 0;\n } else {\n var len = this.doc.getLength();\n if (row >= len) {\n row = len - 1;\n column = this.doc.getLine(len-1).length;\n } else {\n column = Math.min(this.doc.getLine(row).length, column);\n }\n }\n\n return {\n row: row,\n column: column\n };\n };\n\n this.$clipRangeToDocument = function(range) {\n if (range.start.row < 0) {\n range.start.row = 0;\n range.start.column = 0;\n } else {\n range.start.column = this.$clipColumnToRow(\n range.start.row,\n range.start.column\n );\n }\n\n var len = this.doc.getLength() - 1;\n if (range.end.row > len) {\n range.end.row = len;\n range.end.column = this.doc.getLine(len).length;\n } else {\n range.end.column = this.$clipColumnToRow(\n range.end.row,\n range.end.column\n );\n }\n return range;\n };\n this.$wrapLimit = 80;\n this.$useWrapMode = false;\n this.$wrapLimitRange = {\n min : null,\n max : null\n };\n this.setUseWrapMode = function(useWrapMode) {\n if (useWrapMode != this.$useWrapMode) {\n this.$useWrapMode = useWrapMode;\n this.$modified = true;\n this.$resetRowCache(0);\n if (useWrapMode) {\n var len = this.getLength();\n this.$wrapData = Array(len);\n this.$updateWrapData(0, len - 1);\n }\n\n this._signal(\"changeWrapMode\");\n }\n };\n this.getUseWrapMode = function() {\n return this.$useWrapMode;\n };\n this.setWrapLimitRange = function(min, max) {\n if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) {\n this.$wrapLimitRange = { min: min, max: max };\n this.$modified = true;\n this.$bidiHandler.markAsDirty();\n if (this.$useWrapMode)\n this._signal(\"changeWrapMode\");\n }\n };\n this.adjustWrapLimit = function(desiredLimit, $printMargin) {\n var limits = this.$wrapLimitRange;\n if (limits.max < 0)\n limits = {min: $printMargin, max: $printMargin};\n var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max);\n if (wrapLimit != this.$wrapLimit && wrapLimit > 1) {\n this.$wrapLimit = wrapLimit;\n this.$modified = true;\n if (this.$useWrapMode) {\n this.$updateWrapData(0, this.getLength() - 1);\n this.$resetRowCache(0);\n this._signal(\"changeWrapLimit\");\n }\n return true;\n }\n return false;\n };\n\n this.$constrainWrapLimit = function(wrapLimit, min, max) {\n if (min)\n wrapLimit = Math.max(min, wrapLimit);\n\n if (max)\n wrapLimit = Math.min(max, wrapLimit);\n\n return wrapLimit;\n };\n this.getWrapLimit = function() {\n return this.$wrapLimit;\n };\n this.setWrapLimit = function (limit) {\n this.setWrapLimitRange(limit, limit);\n };\n this.getWrapLimitRange = function() {\n return {\n min : this.$wrapLimitRange.min,\n max : this.$wrapLimitRange.max\n };\n };\n\n this.$updateInternalDataOnChange = function(delta) {\n var useWrapMode = this.$useWrapMode;\n var action = delta.action;\n var start = delta.start;\n var end = delta.end;\n var firstRow = start.row;\n var lastRow = end.row;\n var len = lastRow - firstRow;\n var removedFolds = null;\n \n this.$updating = true;\n if (len != 0) {\n if (action === \"remove\") {\n this[useWrapMode ? \"$wrapData\" : \"$rowLengthCache\"].splice(firstRow, len);\n\n var foldLines = this.$foldData;\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n\n var foldLine = this.getFoldLine(end.row);\n var idx = 0;\n if (foldLine) {\n foldLine.addRemoveChars(end.row, end.column, start.column - end.column);\n foldLine.shiftRow(-len);\n\n var foldLineBefore = this.getFoldLine(firstRow);\n if (foldLineBefore && foldLineBefore !== foldLine) {\n foldLineBefore.merge(foldLine);\n foldLine = foldLineBefore;\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= end.row) {\n foldLine.shiftRow(-len);\n }\n }\n\n lastRow = firstRow;\n } else {\n var args = Array(len);\n args.unshift(firstRow, 0);\n var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache;\n arr.splice.apply(arr, args);\n var foldLines = this.$foldData;\n var foldLine = this.getFoldLine(firstRow);\n var idx = 0;\n if (foldLine) {\n var cmp = foldLine.range.compareInside(start.row, start.column);\n if (cmp == 0) {\n foldLine = foldLine.split(start.row, start.column);\n if (foldLine) {\n foldLine.shiftRow(len);\n foldLine.addRemoveChars(lastRow, 0, end.column - start.column);\n }\n } else\n if (cmp == -1) {\n foldLine.addRemoveChars(firstRow, 0, end.column - start.column);\n foldLine.shiftRow(len);\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= firstRow) {\n foldLine.shiftRow(len);\n }\n }\n }\n } else {\n len = Math.abs(delta.start.column - delta.end.column);\n if (action === \"remove\") {\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n\n len = -len;\n }\n var foldLine = this.getFoldLine(firstRow);\n if (foldLine) {\n foldLine.addRemoveChars(firstRow, start.column, len);\n }\n }\n\n if (useWrapMode && this.$wrapData.length != this.doc.getLength()) {\n console.error(\"doc.getLength() and $wrapData.length have to be the same!\");\n }\n this.$updating = false;\n\n if (useWrapMode)\n this.$updateWrapData(firstRow, lastRow);\n else\n this.$updateRowLengthCache(firstRow, lastRow);\n\n return removedFolds;\n };\n\n this.$updateRowLengthCache = function(firstRow, lastRow, b) {\n this.$rowLengthCache[firstRow] = null;\n this.$rowLengthCache[lastRow] = null;\n };\n\n this.$updateWrapData = function(firstRow, lastRow) {\n var lines = this.doc.getAllLines();\n var tabSize = this.getTabSize();\n var wrapData = this.$wrapData;\n var wrapLimit = this.$wrapLimit;\n var tokens;\n var foldLine;\n\n var row = firstRow;\n lastRow = Math.min(lastRow, lines.length - 1);\n while (row <= lastRow) {\n foldLine = this.getFoldLine(row, foldLine);\n if (!foldLine) {\n tokens = this.$getDisplayTokens(lines[row]);\n wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row ++;\n } else {\n tokens = [];\n foldLine.walk(function(placeholder, row, column, lastColumn) {\n var walkTokens;\n if (placeholder != null) {\n walkTokens = this.$getDisplayTokens(\n placeholder, tokens.length);\n walkTokens[0] = PLACEHOLDER_START;\n for (var i = 1; i < walkTokens.length; i++) {\n walkTokens[i] = PLACEHOLDER_BODY;\n }\n } else {\n walkTokens = this.$getDisplayTokens(\n lines[row].substring(lastColumn, column),\n tokens.length);\n }\n tokens = tokens.concat(walkTokens);\n }.bind(this),\n foldLine.end.row,\n lines[foldLine.end.row].length + 1\n );\n\n wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row = foldLine.end.row + 1;\n }\n }\n };\n var CHAR = 1,\n CHAR_EXT = 2,\n PLACEHOLDER_START = 3,\n PLACEHOLDER_BODY = 4,\n PUNCTUATION = 9,\n SPACE = 10,\n TAB = 11,\n TAB_SPACE = 12;\n\n\n this.$computeWrapSplits = function(tokens, wrapLimit, tabSize) {\n if (tokens.length == 0) {\n return [];\n }\n\n var splits = [];\n var displayLength = tokens.length;\n var lastSplit = 0, lastDocSplit = 0;\n\n var isCode = this.$wrapAsCode;\n\n var indentedSoftWrap = this.$indentedSoftWrap;\n var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8)\n || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2);\n\n function getWrapIndent() {\n var indentation = 0;\n if (maxIndent === 0)\n return indentation;\n if (indentedSoftWrap) {\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token == SPACE)\n indentation += 1;\n else if (token == TAB)\n indentation += tabSize;\n else if (token == TAB_SPACE)\n continue;\n else\n break;\n }\n }\n if (isCode && indentedSoftWrap !== false)\n indentation += tabSize;\n return Math.min(indentation, maxIndent);\n }\n function addSplit(screenPos) {\n var len = screenPos - lastSplit;\n for (var i = lastSplit; i < screenPos; i++) {\n var ch = tokens[i];\n if (ch === 12 || ch === 2) len -= 1;\n }\n\n if (!splits.length) {\n indent = getWrapIndent();\n splits.indent = indent;\n }\n lastDocSplit += len;\n splits.push(lastDocSplit);\n lastSplit = screenPos;\n }\n var indent = 0;\n while (displayLength - lastSplit > wrapLimit - indent) {\n var split = lastSplit + wrapLimit - indent;\n if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) {\n addSplit(split);\n continue;\n }\n if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) {\n for (split; split != lastSplit - 1; split--) {\n if (tokens[split] == PLACEHOLDER_START) {\n break;\n }\n }\n if (split > lastSplit) {\n addSplit(split);\n continue;\n }\n split = lastSplit + wrapLimit;\n for (split; split < tokens.length; split++) {\n if (tokens[split] != PLACEHOLDER_BODY) {\n break;\n }\n }\n if (split == tokens.length) {\n break; // Breaks the while-loop.\n }\n addSplit(split);\n continue;\n }\n var minSplit = Math.max(split - (wrapLimit -(wrapLimit>>2)), lastSplit - 1);\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split --;\n }\n if (isCode) {\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split --;\n }\n while (split > minSplit && tokens[split] == PUNCTUATION) {\n split --;\n }\n } else {\n while (split > minSplit && tokens[split] < SPACE) {\n split --;\n }\n }\n if (split > minSplit) {\n addSplit(++split);\n continue;\n }\n split = lastSplit + wrapLimit;\n if (tokens[split] == CHAR_EXT)\n split--;\n addSplit(split - indent);\n }\n return splits;\n };\n this.$getDisplayTokens = function(str, offset) {\n var arr = [];\n var tabSize;\n offset = offset || 0;\n\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n if (c == 9) {\n tabSize = this.getScreenTabSize(arr.length + offset);\n arr.push(TAB);\n for (var n = 1; n < tabSize; n++) {\n arr.push(TAB_SPACE);\n }\n }\n else if (c == 32) {\n arr.push(SPACE);\n } else if((c > 39 && c < 48) || (c > 57 && c < 64)) {\n arr.push(PUNCTUATION);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n arr.push(CHAR, CHAR_EXT);\n } else {\n arr.push(CHAR);\n }\n }\n return arr;\n };\n this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn == 0)\n return [0, 0];\n if (maxScreenColumn == null)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charCodeAt(column);\n if (c == 9) {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n screenColumn += 2;\n } else {\n screenColumn += 1;\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n\n return [screenColumn, column];\n };\n\n this.lineWidgets = null;\n this.getRowLength = function(row) {\n var h = 1;\n if (this.lineWidgets)\n h += this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n \n if (!this.$useWrapMode || !this.$wrapData[row])\n return h;\n else\n return this.$wrapData[row].length + h;\n };\n this.getRowLineCount = function(row) {\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1;\n } else {\n return this.$wrapData[row].length + 1;\n }\n };\n\n this.getRowWrapIndent = function(screenRow) {\n if (this.$useWrapMode) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n var splits = this.$wrapData[pos.row];\n return splits.length && splits[0] < pos.column ? splits.indent : 0;\n } else {\n return 0;\n }\n };\n this.getScreenLastRowColumn = function(screenRow) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n return this.documentToScreenColumn(pos.row, pos.column);\n };\n this.getDocumentLastRowColumn = function(docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.getScreenLastRowColumn(screenRow);\n };\n this.getDocumentLastRowColumnPosition = function(docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10);\n };\n this.getRowSplitData = function(row) {\n if (!this.$useWrapMode) {\n return undefined;\n } else {\n return this.$wrapData[row];\n }\n };\n this.getScreenTabSize = function(screenColumn) {\n return this.$tabSize - (screenColumn % this.$tabSize | 0);\n };\n\n\n this.screenToDocumentRow = function(screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).row;\n };\n\n\n this.screenToDocumentColumn = function(screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).column;\n };\n this.screenToDocumentPosition = function(screenRow, screenColumn, offsetX) {\n if (screenRow < 0)\n return {row: 0, column: 0};\n\n var line;\n var docRow = 0;\n var docColumn = 0;\n var column;\n var row = 0;\n var rowLength = 0;\n\n var rowCache = this.$screenRowCache;\n var i = this.$getRowCacheIndex(rowCache, screenRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var docRow = this.$docRowCache[i];\n var doCache = screenRow > rowCache[l - 1];\n } else {\n var doCache = !l;\n }\n\n var maxRow = this.getLength() - 1;\n var foldLine = this.getNextFoldLine(docRow);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (row <= screenRow) {\n rowLength = this.getRowLength(docRow);\n if (row + rowLength > screenRow || docRow >= maxRow) {\n break;\n } else {\n row += rowLength;\n docRow++;\n if (docRow > foldStart) {\n docRow = foldLine.end.row+1;\n foldLine = this.getNextFoldLine(docRow, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n }\n\n if (doCache) {\n this.$docRowCache.push(docRow);\n this.$screenRowCache.push(row);\n }\n }\n\n if (foldLine && foldLine.start.row <= docRow) {\n line = this.getFoldDisplayLine(foldLine);\n docRow = foldLine.start.row;\n } else if (row + rowLength <= screenRow || docRow > maxRow) {\n return {\n row: maxRow,\n column: this.getLine(maxRow).length\n };\n } else {\n line = this.getLine(docRow);\n foldLine = null;\n }\n var wrapIndent = 0, splitIndex = Math.floor(screenRow - row);\n if (this.$useWrapMode) {\n var splits = this.$wrapData[docRow];\n if (splits) {\n column = splits[splitIndex];\n if(splitIndex > 0 && splits.length) {\n wrapIndent = splits.indent;\n docColumn = splits[splitIndex - 1] || splits[splits.length - 1];\n line = line.substring(docColumn);\n }\n }\n }\n\n if (offsetX !== undefined && this.$bidiHandler.isBidiRow(row + splitIndex, docRow, splitIndex))\n screenColumn = this.$bidiHandler.offsetToCol(offsetX);\n\n docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1];\n if (this.$useWrapMode && docColumn >= column)\n docColumn = column - 1;\n\n if (foldLine)\n return foldLine.idxToPosition(docColumn);\n\n return {row: docRow, column: docColumn};\n };\n this.documentToScreenPosition = function(docRow, docColumn) {\n if (typeof docColumn === \"undefined\")\n var pos = this.$clipPositionToDocument(docRow.row, docRow.column);\n else\n pos = this.$clipPositionToDocument(docRow, docColumn);\n\n docRow = pos.row;\n docColumn = pos.column;\n\n var screenRow = 0;\n var foldStartRow = null;\n var fold = null;\n fold = this.getFoldAt(docRow, docColumn, 1);\n if (fold) {\n docRow = fold.start.row;\n docColumn = fold.start.column;\n }\n\n var rowEnd, row = 0;\n\n\n var rowCache = this.$docRowCache;\n var i = this.$getRowCacheIndex(rowCache, docRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var screenRow = this.$screenRowCache[i];\n var doCache = docRow > rowCache[l - 1];\n } else {\n var doCache = !l;\n }\n\n var foldLine = this.getNextFoldLine(row);\n var foldStart = foldLine ?foldLine.start.row :Infinity;\n\n while (row < docRow) {\n if (row >= foldStart) {\n rowEnd = foldLine.end.row + 1;\n if (rowEnd > docRow)\n break;\n foldLine = this.getNextFoldLine(rowEnd, foldLine);\n foldStart = foldLine ?foldLine.start.row :Infinity;\n }\n else {\n rowEnd = row + 1;\n }\n\n screenRow += this.getRowLength(row);\n row = rowEnd;\n\n if (doCache) {\n this.$docRowCache.push(row);\n this.$screenRowCache.push(screenRow);\n }\n }\n var textLine = \"\";\n if (foldLine && row >= foldStart) {\n textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn);\n foldStartRow = foldLine.start.row;\n } else {\n textLine = this.getLine(docRow).substring(0, docColumn);\n foldStartRow = docRow;\n }\n var wrapIndent = 0;\n if (this.$useWrapMode) {\n var wrapRow = this.$wrapData[foldStartRow];\n if (wrapRow) {\n var screenRowOffset = 0;\n while (textLine.length >= wrapRow[screenRowOffset]) {\n screenRow ++;\n screenRowOffset++;\n }\n textLine = textLine.substring(\n wrapRow[screenRowOffset - 1] || 0, textLine.length\n );\n wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0;\n }\n }\n \n if (this.lineWidgets && this.lineWidgets[row] && this.lineWidgets[row].rowsAbove)\n screenRow += this.lineWidgets[row].rowsAbove;\n\n return {\n row: screenRow,\n column: wrapIndent + this.$getStringScreenWidth(textLine)[0]\n };\n };\n this.documentToScreenColumn = function(row, docColumn) {\n return this.documentToScreenPosition(row, docColumn).column;\n };\n this.documentToScreenRow = function(docRow, docColumn) {\n return this.documentToScreenPosition(docRow, docColumn).row;\n };\n this.getScreenLength = function() {\n var screenRows = 0;\n var fold = null;\n if (!this.$useWrapMode) {\n screenRows = this.getLength();\n var foldData = this.$foldData;\n for (var i = 0; i < foldData.length; i++) {\n fold = foldData[i];\n screenRows -= fold.end.row - fold.start.row;\n }\n } else {\n var lastRow = this.$wrapData.length;\n var row = 0, i = 0;\n var fold = this.$foldData[i++];\n var foldStart = fold ? fold.start.row :Infinity;\n\n while (row < lastRow) {\n var splits = this.$wrapData[row];\n screenRows += splits ? splits.length + 1 : 1;\n row ++;\n if (row > foldStart) {\n row = fold.end.row+1;\n fold = this.$foldData[i++];\n foldStart = fold ?fold.start.row :Infinity;\n }\n }\n }\n if (this.lineWidgets)\n screenRows += this.$getWidgetScreenLength();\n\n return screenRows;\n };\n this.$setFontMetrics = function(fm) {\n if (!this.$enableVarChar) return;\n this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn === 0)\n return [0, 0];\n if (!maxScreenColumn)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n \n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charAt(column);\n if (c === \"\\t\") {\n screenColumn += this.getScreenTabSize(screenColumn);\n } else {\n screenColumn += fm.getCharacterWidth(c);\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n \n return [screenColumn, column];\n };\n };\n \n this.destroy = function() {\n if (this.bgTokenizer) {\n this.bgTokenizer.setDocument(null);\n this.bgTokenizer = null;\n }\n this.$stopWorker();\n this.removeAllListeners();\n if (this.doc) {\n this.doc.off(\"change\", this.$onChange);\n }\n this.selection.detach();\n };\n\n this.isFullWidth = isFullWidth;\n function isFullWidth(c) {\n if (c < 0x1100)\n return false;\n return c >= 0x1100 && c <= 0x115F ||\n c >= 0x11A3 && c <= 0x11A7 ||\n c >= 0x11FA && c <= 0x11FF ||\n c >= 0x2329 && c <= 0x232A ||\n c >= 0x2E80 && c <= 0x2E99 ||\n c >= 0x2E9B && c <= 0x2EF3 ||\n c >= 0x2F00 && c <= 0x2FD5 ||\n c >= 0x2FF0 && c <= 0x2FFB ||\n c >= 0x3000 && c <= 0x303E ||\n c >= 0x3041 && c <= 0x3096 ||\n c >= 0x3099 && c <= 0x30FF ||\n c >= 0x3105 && c <= 0x312D ||\n c >= 0x3131 && c <= 0x318E ||\n c >= 0x3190 && c <= 0x31BA ||\n c >= 0x31C0 && c <= 0x31E3 ||\n c >= 0x31F0 && c <= 0x321E ||\n c >= 0x3220 && c <= 0x3247 ||\n c >= 0x3250 && c <= 0x32FE ||\n c >= 0x3300 && c <= 0x4DBF ||\n c >= 0x4E00 && c <= 0xA48C ||\n c >= 0xA490 && c <= 0xA4C6 ||\n c >= 0xA960 && c <= 0xA97C ||\n c >= 0xAC00 && c <= 0xD7A3 ||\n c >= 0xD7B0 && c <= 0xD7C6 ||\n c >= 0xD7CB && c <= 0xD7FB ||\n c >= 0xF900 && c <= 0xFAFF ||\n c >= 0xFE10 && c <= 0xFE19 ||\n c >= 0xFE30 && c <= 0xFE52 ||\n c >= 0xFE54 && c <= 0xFE66 ||\n c >= 0xFE68 && c <= 0xFE6B ||\n c >= 0xFF01 && c <= 0xFF60 ||\n c >= 0xFFE0 && c <= 0xFFE6;\n }\n\n}).call(EditSession.prototype);\n\nrequire(\"./edit_session/folding\").Folding.call(EditSession.prototype);\nrequire(\"./edit_session/bracket_match\").BracketMatch.call(EditSession.prototype);\n\n\nconfig.defineOptions(EditSession.prototype, \"session\", {\n wrap: {\n set: function(value) {\n if (!value || value == \"off\")\n value = false;\n else if (value == \"free\")\n value = true;\n else if (value == \"printMargin\")\n value = -1;\n else if (typeof value == \"string\")\n value = parseInt(value, 10) || false;\n\n if (this.$wrap == value)\n return;\n this.$wrap = value;\n if (!value) {\n this.setUseWrapMode(false);\n } else {\n var col = typeof value == \"number\" ? value : null;\n this.setWrapLimitRange(col, col);\n this.setUseWrapMode(true);\n }\n },\n get: function() {\n if (this.getUseWrapMode()) {\n if (this.$wrap == -1)\n return \"printMargin\";\n if (!this.getWrapLimitRange().min)\n return \"free\";\n return this.$wrap;\n }\n return \"off\";\n },\n handlesSet: true\n }, \n wrapMethod: {\n set: function(val) {\n val = val == \"auto\"\n ? this.$mode.type != \"text\"\n : val != \"text\";\n if (val != this.$wrapAsCode) {\n this.$wrapAsCode = val;\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n }\n },\n initialValue: \"auto\"\n },\n indentedSoftWrap: {\n set: function() {\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n },\n initialValue: true \n },\n firstLineNumber: {\n set: function() {this._signal(\"changeBreakpoint\");},\n initialValue: 1\n },\n useWorker: {\n set: function(useWorker) {\n this.$useWorker = useWorker;\n\n this.$stopWorker();\n if (useWorker)\n this.$startWorker();\n },\n initialValue: true\n },\n useSoftTabs: {initialValue: true},\n tabSize: {\n set: function(tabSize) {\n tabSize = parseInt(tabSize);\n if (tabSize > 0 && this.$tabSize !== tabSize) {\n this.$modified = true;\n this.$rowLengthCache = [];\n this.$tabSize = tabSize;\n this._signal(\"changeTabSize\");\n }\n },\n initialValue: 4,\n handlesSet: true\n },\n navigateWithinSoftTabs: {initialValue: false},\n foldStyle: {\n set: function(val) {this.setFoldStyle(val);},\n handlesSet: true\n },\n overwrite: {\n set: function(val) {this._signal(\"changeOverwrite\");},\n initialValue: false\n },\n newLineMode: {\n set: function(val) {this.doc.setNewLineMode(val);},\n get: function() {return this.doc.getNewLineMode();},\n handlesSet: true\n },\n mode: {\n set: function(val) { this.setMode(val); },\n get: function() { return this.$modeId; },\n handlesSet: true\n }\n});\n\nexports.EditSession = EditSession;\n});\n\nace.define(\"ace/search\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar lang = require(\"./lib/lang\");\nvar oop = require(\"./lib/oop\");\nvar Range = require(\"./range\").Range;\n\nvar Search = function() {\n this.$options = {};\n};\n\n(function() {\n this.set = function(options) {\n oop.mixin(this.$options, options);\n return this;\n };\n this.getOptions = function() {\n return lang.copyObject(this.$options);\n };\n this.setOptions = function(options) {\n this.$options = options;\n };\n this.find = function(session) {\n var options = this.$options;\n var iterator = this.$matchIterator(session, options);\n if (!iterator)\n return false;\n\n var firstRange = null;\n iterator.forEach(function(sr, sc, er, ec) {\n firstRange = new Range(sr, sc, er, ec);\n if (sc == ec && options.start && options.start.start\n && options.skipCurrent != false && firstRange.isEqual(options.start)\n ) {\n firstRange = null;\n return false;\n }\n \n return true;\n });\n\n return firstRange;\n };\n this.findAll = function(session) {\n var options = this.$options;\n if (!options.needle)\n return [];\n this.$assembleRegExp(options);\n\n var range = options.range;\n var lines = range\n ? session.getLines(range.start.row, range.end.row)\n : session.doc.getAllLines();\n\n var ranges = [];\n var re = options.re;\n if (options.$isMultiLine) {\n var len = re.length;\n var maxRow = lines.length - len;\n var prevRange;\n outer: for (var row = re.offset || 0; row <= maxRow; row++) {\n for (var j = 0; j < len; j++)\n if (lines[row + j].search(re[j]) == -1)\n continue outer;\n \n var startLine = lines[row];\n var line = lines[row + len - 1];\n var startIndex = startLine.length - startLine.match(re[0])[0].length;\n var endIndex = line.match(re[len - 1])[0].length;\n \n if (prevRange && prevRange.end.row === row &&\n prevRange.end.column > startIndex\n ) {\n continue;\n }\n ranges.push(prevRange = new Range(\n row, startIndex, row + len - 1, endIndex\n ));\n if (len > 2)\n row = row + len - 2;\n }\n } else {\n for (var i = 0; i < lines.length; i++) {\n var matches = lang.getMatchOffsets(lines[i], re);\n for (var j = 0; j < matches.length; j++) {\n var match = matches[j];\n ranges.push(new Range(i, match.offset, i, match.offset + match.length));\n }\n }\n }\n\n if (range) {\n var startColumn = range.start.column;\n var endColumn = range.start.column;\n var i = 0, j = ranges.length - 1;\n while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == range.start.row)\n i++;\n\n while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == range.end.row)\n j--;\n \n ranges = ranges.slice(i, j + 1);\n for (i = 0, j = ranges.length; i < j; i++) {\n ranges[i].start.row += range.start.row;\n ranges[i].end.row += range.start.row;\n }\n }\n\n return ranges;\n };\n this.replace = function(input, replacement) {\n var options = this.$options;\n\n var re = this.$assembleRegExp(options);\n if (options.$isMultiLine)\n return replacement;\n\n if (!re)\n return;\n\n var match = re.exec(input);\n if (!match || match[0].length != input.length)\n return null;\n \n replacement = input.replace(re, replacement);\n if (options.preserveCase) {\n replacement = replacement.split(\"\");\n for (var i = Math.min(input.length, input.length); i--; ) {\n var ch = input[i];\n if (ch && ch.toLowerCase() != ch)\n replacement[i] = replacement[i].toUpperCase();\n else\n replacement[i] = replacement[i].toLowerCase();\n }\n replacement = replacement.join(\"\");\n }\n \n return replacement;\n };\n\n this.$assembleRegExp = function(options, $disableFakeMultiline) {\n if (options.needle instanceof RegExp)\n return options.re = options.needle;\n\n var needle = options.needle;\n\n if (!options.needle)\n return options.re = false;\n\n if (!options.regExp)\n needle = lang.escapeRegExp(needle);\n\n if (options.wholeWord)\n needle = addWordBoundary(needle, options);\n\n var modifier = options.caseSensitive ? \"gm\" : \"gmi\";\n\n options.$isMultiLine = !$disableFakeMultiline && /[\\n\\r]/.test(needle);\n if (options.$isMultiLine)\n return options.re = this.$assembleMultilineRegExp(needle, modifier);\n\n try {\n var re = new RegExp(needle, modifier);\n } catch(e) {\n re = false;\n }\n return options.re = re;\n };\n\n this.$assembleMultilineRegExp = function(needle, modifier) {\n var parts = needle.replace(/\\r\\n|\\r|\\n/g, \"$\\n^\").split(\"\\n\");\n var re = [];\n for (var i = 0; i < parts.length; i++) try {\n re.push(new RegExp(parts[i], modifier));\n } catch(e) {\n return false;\n }\n return re;\n };\n\n this.$matchIterator = function(session, options) {\n var re = this.$assembleRegExp(options);\n if (!re)\n return false;\n var backwards = options.backwards == true;\n var skipCurrent = options.skipCurrent != false;\n\n var range = options.range;\n var start = options.start;\n if (!start)\n start = range ? range[backwards ? \"end\" : \"start\"] : session.selection.getRange();\n \n if (start.start)\n start = start[skipCurrent != backwards ? \"end\" : \"start\"];\n\n var firstRow = range ? range.start.row : 0;\n var lastRow = range ? range.end.row : session.getLength() - 1;\n \n if (backwards) {\n var forEach = function(callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row--; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = lastRow, firstRow = start.row; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n };\n }\n else {\n var forEach = function(callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row = row + 1; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = firstRow, lastRow = start.row; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n };\n }\n \n if (options.$isMultiLine) {\n var len = re.length;\n var forEachInLine = function(row, offset, callback) {\n var startRow = backwards ? row - len + 1 : row;\n if (startRow < 0 || startRow + len > session.getLength()) return;\n var line = session.getLine(startRow);\n var startIndex = line.search(re[0]);\n if (!backwards && startIndex < offset || startIndex === -1) return;\n for (var i = 1; i < len; i++) {\n line = session.getLine(startRow + i);\n if (line.search(re[i]) == -1)\n return;\n }\n var endIndex = line.match(re[len - 1])[0].length;\n if (backwards && endIndex > offset) return;\n if (callback(startRow, startIndex, startRow + len - 1, endIndex))\n return true;\n };\n }\n else if (backwards) {\n var forEachInLine = function(row, endIndex, callback) {\n var line = session.getLine(row);\n var matches = [];\n var m, last = 0;\n re.lastIndex = 0;\n while((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (!length) {\n if (last >= line.length) break;\n re.lastIndex = last += 1;\n }\n if (m.index + length > endIndex)\n break;\n matches.push(m.index, length);\n }\n for (var i = matches.length - 1; i >= 0; i -= 2) {\n var column = matches[i - 1];\n var length = matches[i];\n if (callback(row, column, row, column + length))\n return true;\n }\n };\n }\n else {\n var forEachInLine = function(row, startIndex, callback) {\n var line = session.getLine(row);\n var last;\n var m;\n re.lastIndex = startIndex;\n while((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (callback(row, last, row,last + length))\n return true;\n if (!length) {\n re.lastIndex = last += 1;\n if (last >= line.length) return false;\n }\n }\n };\n }\n return {forEach: forEach};\n };\n\n}).call(Search.prototype);\n\nfunction addWordBoundary(needle, options) {\n function wordBoundary(c) {\n if (/\\w/.test(c) || options.regExp) return \"\\\\b\";\n return \"\";\n }\n return wordBoundary(needle[0]) + needle\n + wordBoundary(needle[needle.length - 1]);\n}\n\nexports.Search = Search;\n});\n\nace.define(\"ace/keyboard/hash_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar keyUtil = require(\"../lib/keys\");\nvar useragent = require(\"../lib/useragent\");\nvar KEY_MODS = keyUtil.KEY_MODS;\n\nfunction HashHandler(config, platform) {\n this.platform = platform || (useragent.isMac ? \"mac\" : \"win\");\n this.commands = {};\n this.commandKeyBinding = {};\n this.addCommands(config);\n this.$singleCommand = true;\n}\n\nfunction MultiHashHandler(config, platform) {\n HashHandler.call(this, config, platform);\n this.$singleCommand = false;\n}\n\nMultiHashHandler.prototype = HashHandler.prototype;\n\n(function() {\n \n\n this.addCommand = function(command) {\n if (this.commands[command.name])\n this.removeCommand(command);\n\n this.commands[command.name] = command;\n\n if (command.bindKey)\n this._buildKeyHash(command);\n };\n\n this.removeCommand = function(command, keepCommand) {\n var name = command && (typeof command === 'string' ? command : command.name);\n command = this.commands[name];\n if (!keepCommand)\n delete this.commands[name];\n var ckb = this.commandKeyBinding;\n for (var keyId in ckb) {\n var cmdGroup = ckb[keyId];\n if (cmdGroup == command) {\n delete ckb[keyId];\n } else if (Array.isArray(cmdGroup)) {\n var i = cmdGroup.indexOf(command);\n if (i != -1) {\n cmdGroup.splice(i, 1);\n if (cmdGroup.length == 1)\n ckb[keyId] = cmdGroup[0];\n }\n }\n }\n };\n\n this.bindKey = function(key, command, position) {\n if (typeof key == \"object\" && key) {\n if (position == undefined)\n position = key.position;\n key = key[this.platform];\n }\n if (!key)\n return;\n if (typeof command == \"function\")\n return this.addCommand({exec: command, bindKey: key, name: command.name || key});\n \n key.split(\"|\").forEach(function(keyPart) {\n var chain = \"\";\n if (keyPart.indexOf(\" \") != -1) {\n var parts = keyPart.split(/\\s+/);\n keyPart = parts.pop();\n parts.forEach(function(keyPart) {\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n chain += (chain ? \" \" : \"\") + id;\n this._addCommandToBinding(chain, \"chainKeys\");\n }, this);\n chain += \" \";\n }\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n this._addCommandToBinding(chain + id, command, position);\n }, this);\n };\n \n function getPosition(command) {\n return typeof command == \"object\" && command.bindKey\n && command.bindKey.position \n || (command.isDefault ? -100 : 0);\n }\n this._addCommandToBinding = function(keyId, command, position) {\n var ckb = this.commandKeyBinding, i;\n if (!command) {\n delete ckb[keyId];\n } else if (!ckb[keyId] || this.$singleCommand) {\n ckb[keyId] = command;\n } else {\n if (!Array.isArray(ckb[keyId])) {\n ckb[keyId] = [ckb[keyId]];\n } else if ((i = ckb[keyId].indexOf(command)) != -1) {\n ckb[keyId].splice(i, 1);\n }\n \n if (typeof position != \"number\") {\n position = getPosition(command);\n }\n\n var commands = ckb[keyId];\n for (i = 0; i < commands.length; i++) {\n var other = commands[i];\n var otherPos = getPosition(other);\n if (otherPos > position)\n break;\n }\n commands.splice(i, 0, command);\n }\n };\n\n this.addCommands = function(commands) {\n commands && Object.keys(commands).forEach(function(name) {\n var command = commands[name];\n if (!command)\n return;\n \n if (typeof command === \"string\")\n return this.bindKey(command, name);\n\n if (typeof command === \"function\")\n command = { exec: command };\n\n if (typeof command !== \"object\")\n return;\n\n if (!command.name)\n command.name = name;\n\n this.addCommand(command);\n }, this);\n };\n\n this.removeCommands = function(commands) {\n Object.keys(commands).forEach(function(name) {\n this.removeCommand(commands[name]);\n }, this);\n };\n\n this.bindKeys = function(keyList) {\n Object.keys(keyList).forEach(function(key) {\n this.bindKey(key, keyList[key]);\n }, this);\n };\n\n this._buildKeyHash = function(command) {\n this.bindKey(command.bindKey, command);\n };\n this.parseKeys = function(keys) {\n var parts = keys.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function(x){return x;});\n var key = parts.pop();\n\n var keyCode = keyUtil[key];\n if (keyUtil.FUNCTION_KEYS[keyCode])\n key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase();\n else if (!parts.length)\n return {key: key, hashId: -1};\n else if (parts.length == 1 && parts[0] == \"shift\")\n return {key: key.toUpperCase(), hashId: -1};\n\n var hashId = 0;\n for (var i = parts.length; i--;) {\n var modifier = keyUtil.KEY_MODS[parts[i]];\n if (modifier == null) {\n if (typeof console != \"undefined\")\n console.error(\"invalid modifier \" + parts[i] + \" in \" + keys);\n return false;\n }\n hashId |= modifier;\n }\n return {key: key, hashId: hashId};\n };\n\n this.findKeyCommand = function findKeyCommand(hashId, keyString) {\n var key = KEY_MODS[hashId] + keyString;\n return this.commandKeyBinding[key];\n };\n\n this.handleKeyboard = function(data, hashId, keyString, keyCode) {\n if (keyCode < 0) return;\n var key = KEY_MODS[hashId] + keyString;\n var command = this.commandKeyBinding[key];\n if (data.$keyChain) {\n data.$keyChain += \" \" + key;\n command = this.commandKeyBinding[data.$keyChain] || command;\n }\n \n if (command) {\n if (command == \"chainKeys\" || command[command.length - 1] == \"chainKeys\") {\n data.$keyChain = data.$keyChain || key;\n return {command: \"null\"};\n }\n }\n \n if (data.$keyChain) {\n if ((!hashId || hashId == 4) && keyString.length == 1)\n data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input\n else if (hashId == -1 || keyCode > 0)\n data.$keyChain = \"\"; // reset keyChain\n }\n return {command: command};\n };\n \n this.getStatusText = function(editor, data) {\n return data.$keyChain || \"\";\n };\n\n}).call(HashHandler.prototype);\n\nexports.HashHandler = HashHandler;\nexports.MultiHashHandler = MultiHashHandler;\n});\n\nace.define(\"ace/commands/command_manager\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/keyboard/hash_handler\",\"ace/lib/event_emitter\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar MultiHashHandler = require(\"../keyboard/hash_handler\").MultiHashHandler;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\n\nvar CommandManager = function(platform, commands) {\n MultiHashHandler.call(this, commands, platform);\n this.byName = this.commands;\n this.setDefaultHandler(\"exec\", function(e) {\n return e.command.exec(e.editor, e.args || {});\n });\n};\n\noop.inherits(CommandManager, MultiHashHandler);\n\n(function() {\n\n oop.implement(this, EventEmitter);\n\n this.exec = function(command, editor, args) {\n if (Array.isArray(command)) {\n for (var i = command.length; i--; ) {\n if (this.exec(command[i], editor, args)) return true;\n }\n return false;\n }\n\n if (typeof command === \"string\")\n command = this.commands[command];\n\n if (!command)\n return false;\n\n if (editor && editor.$readOnly && !command.readOnly)\n return false;\n\n if (this.$checkCommandState != false && command.isAvailable && !command.isAvailable(editor))\n return false;\n\n var e = {editor: editor, command: command, args: args};\n e.returnValue = this._emit(\"exec\", e);\n this._signal(\"afterExec\", e);\n\n return e.returnValue === false ? false : true;\n };\n\n this.toggleRecording = function(editor) {\n if (this.$inReplay)\n return;\n\n editor && editor._emit(\"changeStatus\");\n if (this.recording) {\n this.macro.pop();\n this.off(\"exec\", this.$addCommandToMacro);\n\n if (!this.macro.length)\n this.macro = this.oldMacro;\n\n return this.recording = false;\n }\n if (!this.$addCommandToMacro) {\n this.$addCommandToMacro = function(e) {\n this.macro.push([e.command, e.args]);\n }.bind(this);\n }\n\n this.oldMacro = this.macro;\n this.macro = [];\n this.on(\"exec\", this.$addCommandToMacro);\n return this.recording = true;\n };\n\n this.replay = function(editor) {\n if (this.$inReplay || !this.macro)\n return;\n\n if (this.recording)\n return this.toggleRecording(editor);\n\n try {\n this.$inReplay = true;\n this.macro.forEach(function(x) {\n if (typeof x == \"string\")\n this.exec(x, editor);\n else\n this.exec(x[0], editor, x[1]);\n }, this);\n } finally {\n this.$inReplay = false;\n }\n };\n\n this.trimMacro = function(m) {\n return m.map(function(x){\n if (typeof x[0] != \"string\")\n x[0] = x[0].name;\n if (!x[1])\n x = x[0];\n return x;\n });\n };\n\n}).call(CommandManager.prototype);\n\nexports.CommandManager = CommandManager;\n\n});\n\nace.define(\"ace/commands/default_commands\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/config\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar lang = require(\"../lib/lang\");\nvar config = require(\"../config\");\nvar Range = require(\"../range\").Range;\n\nfunction bindKey(win, mac) {\n return {win: win, mac: mac};\n}\nexports.commands = [{\n name: \"showSettingsMenu\",\n description: \"Show settings menu\",\n bindKey: bindKey(\"Ctrl-,\", \"Command-,\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/settings_menu\", function(module) {\n module.init(editor);\n editor.showSettingsMenu();\n });\n },\n readOnly: true\n}, {\n name: \"goToNextError\",\n description: \"Go to next error\",\n bindKey: bindKey(\"Alt-E\", \"F4\"),\n exec: function(editor) {\n config.loadModule(\"./ext/error_marker\", function(module) {\n module.showErrorMarker(editor, 1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"goToPreviousError\",\n description: \"Go to previous error\",\n bindKey: bindKey(\"Alt-Shift-E\", \"Shift-F4\"),\n exec: function(editor) {\n config.loadModule(\"./ext/error_marker\", function(module) {\n module.showErrorMarker(editor, -1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"selectall\",\n description: \"Select all\",\n bindKey: bindKey(\"Ctrl-A\", \"Command-A\"),\n exec: function(editor) { editor.selectAll(); },\n readOnly: true\n}, {\n name: \"centerselection\",\n description: \"Center selection\",\n bindKey: bindKey(null, \"Ctrl-L\"),\n exec: function(editor) { editor.centerSelection(); },\n readOnly: true\n}, {\n name: \"gotoline\",\n description: \"Go to line...\",\n bindKey: bindKey(\"Ctrl-L\", \"Command-L\"),\n exec: function(editor, line) {\n if (typeof line === \"number\" && !isNaN(line))\n editor.gotoLine(line);\n editor.prompt({ $type: \"gotoLine\" });\n },\n readOnly: true\n}, {\n name: \"fold\",\n bindKey: bindKey(\"Alt-L|Ctrl-F1\", \"Command-Alt-L|Command-F1\"),\n exec: function(editor) { editor.session.toggleFold(false); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"unfold\",\n bindKey: bindKey(\"Alt-Shift-L|Ctrl-Shift-F1\", \"Command-Alt-Shift-L|Command-Shift-F1\"),\n exec: function(editor) { editor.session.toggleFold(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"toggleFoldWidget\",\n description: \"Toggle fold widget\",\n bindKey: bindKey(\"F2\", \"F2\"),\n exec: function(editor) { editor.session.toggleFoldWidget(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"toggleParentFoldWidget\",\n description: \"Toggle parent fold widget\",\n bindKey: bindKey(\"Alt-F2\", \"Alt-F2\"),\n exec: function(editor) { editor.session.toggleFoldWidget(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"foldall\",\n description: \"Fold all\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function(editor) { editor.session.foldAll(); },\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"foldAllComments\",\n description: \"Fold all comments\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function(editor) { editor.session.foldAllComments(); },\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"foldOther\",\n description: \"Fold other\",\n bindKey: bindKey(\"Alt-0\", \"Command-Option-0\"),\n exec: function(editor) { \n editor.session.foldAll();\n editor.session.unfold(editor.selection.getAllRanges());\n },\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"unfoldall\",\n description: \"Unfold all\",\n bindKey: bindKey(\"Alt-Shift-0\", \"Command-Option-Shift-0\"),\n exec: function(editor) { editor.session.unfold(); },\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"findnext\",\n description: \"Find next\",\n bindKey: bindKey(\"Ctrl-K\", \"Command-G\"),\n exec: function(editor) { editor.findNext(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"findprevious\",\n description: \"Find previous\",\n bindKey: bindKey(\"Ctrl-Shift-K\", \"Command-Shift-G\"),\n exec: function(editor) { editor.findPrevious(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"selectOrFindNext\",\n description: \"Select or find next\",\n bindKey: bindKey(\"Alt-K\", \"Ctrl-G\"),\n exec: function(editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findNext(); \n },\n readOnly: true\n}, {\n name: \"selectOrFindPrevious\",\n description: \"Select or find previous\",\n bindKey: bindKey(\"Alt-Shift-K\", \"Ctrl-Shift-G\"),\n exec: function(editor) { \n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findPrevious();\n },\n readOnly: true\n}, {\n name: \"find\",\n description: \"Find\",\n bindKey: bindKey(\"Ctrl-F\", \"Command-F\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/searchbox\", function(e) {e.Search(editor);});\n },\n readOnly: true\n}, {\n name: \"overwrite\",\n description: \"Overwrite\",\n bindKey: \"Insert\",\n exec: function(editor) { editor.toggleOverwrite(); },\n readOnly: true\n}, {\n name: \"selecttostart\",\n description: \"Select to start\",\n bindKey: bindKey(\"Ctrl-Shift-Home\", \"Command-Shift-Home|Command-Shift-Up\"),\n exec: function(editor) { editor.getSelection().selectFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"gotostart\",\n description: \"Go to start\",\n bindKey: bindKey(\"Ctrl-Home\", \"Command-Home|Command-Up\"),\n exec: function(editor) { editor.navigateFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"selectup\",\n description: \"Select up\",\n bindKey: bindKey(\"Shift-Up\", \"Shift-Up|Ctrl-Shift-P\"),\n exec: function(editor) { editor.getSelection().selectUp(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"golineup\",\n description: \"Go line up\",\n bindKey: bindKey(\"Up\", \"Up|Ctrl-P\"),\n exec: function(editor, args) { editor.navigateUp(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selecttoend\",\n description: \"Select to end\",\n bindKey: bindKey(\"Ctrl-Shift-End\", \"Command-Shift-End|Command-Shift-Down\"),\n exec: function(editor) { editor.getSelection().selectFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"gotoend\",\n description: \"Go to end\",\n bindKey: bindKey(\"Ctrl-End\", \"Command-End|Command-Down\"),\n exec: function(editor) { editor.navigateFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"selectdown\",\n description: \"Select down\",\n bindKey: bindKey(\"Shift-Down\", \"Shift-Down|Ctrl-Shift-N\"),\n exec: function(editor) { editor.getSelection().selectDown(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"golinedown\",\n description: \"Go line down\",\n bindKey: bindKey(\"Down\", \"Down|Ctrl-N\"),\n exec: function(editor, args) { editor.navigateDown(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectwordleft\",\n description: \"Select word left\",\n bindKey: bindKey(\"Ctrl-Shift-Left\", \"Option-Shift-Left\"),\n exec: function(editor) { editor.getSelection().selectWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotowordleft\",\n description: \"Go to word left\",\n bindKey: bindKey(\"Ctrl-Left\", \"Option-Left\"),\n exec: function(editor) { editor.navigateWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selecttolinestart\",\n description: \"Select to line start\",\n bindKey: bindKey(\"Alt-Shift-Left\", \"Command-Shift-Left|Ctrl-Shift-A\"),\n exec: function(editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotolinestart\",\n description: \"Go to line start\",\n bindKey: bindKey(\"Alt-Left|Home\", \"Command-Left|Home|Ctrl-A\"),\n exec: function(editor) { editor.navigateLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectleft\",\n description: \"Select left\",\n bindKey: bindKey(\"Shift-Left\", \"Shift-Left|Ctrl-Shift-B\"),\n exec: function(editor) { editor.getSelection().selectLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotoleft\",\n description: \"Go to left\",\n bindKey: bindKey(\"Left\", \"Left|Ctrl-B\"),\n exec: function(editor, args) { editor.navigateLeft(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectwordright\",\n description: \"Select word right\",\n bindKey: bindKey(\"Ctrl-Shift-Right\", \"Option-Shift-Right\"),\n exec: function(editor) { editor.getSelection().selectWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotowordright\",\n description: \"Go to word right\",\n bindKey: bindKey(\"Ctrl-Right\", \"Option-Right\"),\n exec: function(editor) { editor.navigateWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selecttolineend\",\n description: \"Select to line end\",\n bindKey: bindKey(\"Alt-Shift-Right\", \"Command-Shift-Right|Shift-End|Ctrl-Shift-E\"),\n exec: function(editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotolineend\",\n description: \"Go to line end\",\n bindKey: bindKey(\"Alt-Right|End\", \"Command-Right|End|Ctrl-E\"),\n exec: function(editor) { editor.navigateLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectright\",\n description: \"Select right\",\n bindKey: bindKey(\"Shift-Right\", \"Shift-Right\"),\n exec: function(editor) { editor.getSelection().selectRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotoright\",\n description: \"Go to right\",\n bindKey: bindKey(\"Right\", \"Right|Ctrl-F\"),\n exec: function(editor, args) { editor.navigateRight(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectpagedown\",\n description: \"Select page down\",\n bindKey: \"Shift-PageDown\",\n exec: function(editor) { editor.selectPageDown(); },\n readOnly: true\n}, {\n name: \"pagedown\",\n description: \"Page down\",\n bindKey: bindKey(null, \"Option-PageDown\"),\n exec: function(editor) { editor.scrollPageDown(); },\n readOnly: true\n}, {\n name: \"gotopagedown\",\n description: \"Go to page down\",\n bindKey: bindKey(\"PageDown\", \"PageDown|Ctrl-V\"),\n exec: function(editor) { editor.gotoPageDown(); },\n readOnly: true\n}, {\n name: \"selectpageup\",\n description: \"Select page up\",\n bindKey: \"Shift-PageUp\",\n exec: function(editor) { editor.selectPageUp(); },\n readOnly: true\n}, {\n name: \"pageup\",\n description: \"Page up\",\n bindKey: bindKey(null, \"Option-PageUp\"),\n exec: function(editor) { editor.scrollPageUp(); },\n readOnly: true\n}, {\n name: \"gotopageup\",\n description: \"Go to page up\",\n bindKey: \"PageUp\",\n exec: function(editor) { editor.gotoPageUp(); },\n readOnly: true\n}, {\n name: \"scrollup\",\n description: \"Scroll up\",\n bindKey: bindKey(\"Ctrl-Up\", null),\n exec: function(e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n}, {\n name: \"scrolldown\",\n description: \"Scroll down\",\n bindKey: bindKey(\"Ctrl-Down\", null),\n exec: function(e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n}, {\n name: \"selectlinestart\",\n description: \"Select line start\",\n bindKey: \"Shift-Home\",\n exec: function(editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectlineend\",\n description: \"Select line end\",\n bindKey: \"Shift-End\",\n exec: function(editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"togglerecording\",\n description: \"Toggle recording\",\n bindKey: bindKey(\"Ctrl-Alt-E\", \"Command-Option-E\"),\n exec: function(editor) { editor.commands.toggleRecording(editor); },\n readOnly: true\n}, {\n name: \"replaymacro\",\n description: \"Replay macro\",\n bindKey: bindKey(\"Ctrl-Shift-E\", \"Command-Shift-E\"),\n exec: function(editor) { editor.commands.replay(editor); },\n readOnly: true\n}, {\n name: \"jumptomatching\",\n description: \"Jump to matching\",\n bindKey: bindKey(\"Ctrl-\\\\|Ctrl-P\", \"Command-\\\\\"),\n exec: function(editor) { editor.jumpToMatching(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"selecttomatching\",\n description: \"Select to matching\",\n bindKey: bindKey(\"Ctrl-Shift-\\\\|Ctrl-Shift-P\", \"Command-Shift-\\\\\"),\n exec: function(editor) { editor.jumpToMatching(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"expandToMatching\",\n description: \"Expand to matching\",\n bindKey: bindKey(\"Ctrl-Shift-M\", \"Ctrl-Shift-M\"),\n exec: function(editor) { editor.jumpToMatching(true, true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"passKeysToBrowser\",\n description: \"Pass keys to browser\",\n bindKey: bindKey(null, null),\n exec: function() {},\n passEvent: true,\n readOnly: true\n}, {\n name: \"copy\",\n description: \"Copy\",\n exec: function(editor) {\n },\n readOnly: true\n},\n{\n name: \"cut\",\n description: \"Cut\",\n exec: function(editor) {\n var cutLine = editor.$copyWithEmptySelection && editor.selection.isEmpty();\n var range = cutLine ? editor.selection.getLineRange() : editor.selection.getRange();\n editor._emit(\"cut\", range);\n\n if (!range.isEmpty())\n editor.session.remove(range);\n editor.clearSelection();\n },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"paste\",\n description: \"Paste\",\n exec: function(editor, args) {\n editor.$handlePaste(args);\n },\n scrollIntoView: \"cursor\"\n}, {\n name: \"removeline\",\n description: \"Remove line\",\n bindKey: bindKey(\"Ctrl-D\", \"Command-D\"),\n exec: function(editor) { editor.removeLines(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEachLine\"\n}, {\n name: \"duplicateSelection\",\n description: \"Duplicate selection\",\n bindKey: bindKey(\"Ctrl-Shift-D\", \"Command-Shift-D\"),\n exec: function(editor) { editor.duplicateSelection(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"sortlines\",\n description: \"Sort lines\",\n bindKey: bindKey(\"Ctrl-Alt-S\", \"Command-Alt-S\"),\n exec: function(editor) { editor.sortLines(); },\n scrollIntoView: \"selection\",\n multiSelectAction: \"forEachLine\"\n}, {\n name: \"togglecomment\",\n description: \"Toggle comment\",\n bindKey: bindKey(\"Ctrl-/\", \"Command-/\"),\n exec: function(editor) { editor.toggleCommentLines(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"toggleBlockComment\",\n description: \"Toggle block comment\",\n bindKey: bindKey(\"Ctrl-Shift-/\", \"Command-Shift-/\"),\n exec: function(editor) { editor.toggleBlockComment(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"modifyNumberUp\",\n description: \"Modify number up\",\n bindKey: bindKey(\"Ctrl-Shift-Up\", \"Alt-Shift-Up\"),\n exec: function(editor) { editor.modifyNumber(1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"modifyNumberDown\",\n description: \"Modify number down\",\n bindKey: bindKey(\"Ctrl-Shift-Down\", \"Alt-Shift-Down\"),\n exec: function(editor) { editor.modifyNumber(-1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"replace\",\n description: \"Replace\",\n bindKey: bindKey(\"Ctrl-H\", \"Command-Option-F\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/searchbox\", function(e) {e.Search(editor, true);});\n }\n}, {\n name: \"undo\",\n description: \"Undo\",\n bindKey: bindKey(\"Ctrl-Z\", \"Command-Z\"),\n exec: function(editor) { editor.undo(); }\n}, {\n name: \"redo\",\n description: \"Redo\",\n bindKey: bindKey(\"Ctrl-Shift-Z|Ctrl-Y\", \"Command-Shift-Z|Command-Y\"),\n exec: function(editor) { editor.redo(); }\n}, {\n name: \"copylinesup\",\n description: \"Copy lines up\",\n bindKey: bindKey(\"Alt-Shift-Up\", \"Command-Option-Up\"),\n exec: function(editor) { editor.copyLinesUp(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"movelinesup\",\n description: \"Move lines up\",\n bindKey: bindKey(\"Alt-Up\", \"Option-Up\"),\n exec: function(editor) { editor.moveLinesUp(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"copylinesdown\",\n description: \"Copy lines down\",\n bindKey: bindKey(\"Alt-Shift-Down\", \"Command-Option-Down\"),\n exec: function(editor) { editor.copyLinesDown(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"movelinesdown\",\n description: \"Move lines down\",\n bindKey: bindKey(\"Alt-Down\", \"Option-Down\"),\n exec: function(editor) { editor.moveLinesDown(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"del\",\n description: \"Delete\",\n bindKey: bindKey(\"Delete\", \"Delete|Ctrl-D|Shift-Delete\"),\n exec: function(editor) { editor.remove(\"right\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"backspace\",\n description: \"Backspace\",\n bindKey: bindKey(\n \"Shift-Backspace|Backspace\",\n \"Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H\"\n ),\n exec: function(editor) { editor.remove(\"left\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"cut_or_delete\",\n description: \"Cut or delete\",\n bindKey: bindKey(\"Shift-Delete\", null),\n exec: function(editor) { \n if (editor.selection.isEmpty()) {\n editor.remove(\"left\");\n } else {\n return false;\n }\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolinestart\",\n description: \"Remove to line start\",\n bindKey: bindKey(\"Alt-Backspace\", \"Command-Backspace\"),\n exec: function(editor) { editor.removeToLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolineend\",\n description: \"Remove to line end\",\n bindKey: bindKey(\"Alt-Delete\", \"Ctrl-K|Command-Delete\"),\n exec: function(editor) { editor.removeToLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolinestarthard\",\n description: \"Remove to line start hard\",\n bindKey: bindKey(\"Ctrl-Shift-Backspace\", null),\n exec: function(editor) {\n var range = editor.selection.getRange();\n range.start.column = 0;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolineendhard\",\n description: \"Remove to line end hard\",\n bindKey: bindKey(\"Ctrl-Shift-Delete\", null),\n exec: function(editor) {\n var range = editor.selection.getRange();\n range.end.column = Number.MAX_VALUE;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removewordleft\",\n description: \"Remove word left\",\n bindKey: bindKey(\"Ctrl-Backspace\", \"Alt-Backspace|Ctrl-Alt-Backspace\"),\n exec: function(editor) { editor.removeWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removewordright\",\n description: \"Remove word right\",\n bindKey: bindKey(\"Ctrl-Delete\", \"Alt-Delete\"),\n exec: function(editor) { editor.removeWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"outdent\",\n description: \"Outdent\",\n bindKey: bindKey(\"Shift-Tab\", \"Shift-Tab\"),\n exec: function(editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"indent\",\n description: \"Indent\",\n bindKey: bindKey(\"Tab\", \"Tab\"),\n exec: function(editor) { editor.indent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"blockoutdent\",\n description: \"Block outdent\",\n bindKey: bindKey(\"Ctrl-[\", \"Ctrl-[\"),\n exec: function(editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"blockindent\",\n description: \"Block indent\",\n bindKey: bindKey(\"Ctrl-]\", \"Ctrl-]\"),\n exec: function(editor) { editor.blockIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"insertstring\",\n description: \"Insert string\",\n exec: function(editor, str) { editor.insert(str); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"inserttext\",\n description: \"Insert text\",\n exec: function(editor, args) {\n editor.insert(lang.stringRepeat(args.text || \"\", args.times || 1));\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"splitline\",\n description: \"Split line\",\n bindKey: bindKey(null, \"Ctrl-O\"),\n exec: function(editor) { editor.splitLine(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"transposeletters\",\n description: \"Transpose letters\",\n bindKey: bindKey(\"Alt-Shift-X\", \"Ctrl-T\"),\n exec: function(editor) { editor.transposeLetters(); },\n multiSelectAction: function(editor) {editor.transposeSelections(1); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"touppercase\",\n description: \"To uppercase\",\n bindKey: bindKey(\"Ctrl-U\", \"Ctrl-U\"),\n exec: function(editor) { editor.toUpperCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"tolowercase\",\n description: \"To lowercase\",\n bindKey: bindKey(\"Ctrl-Shift-U\", \"Ctrl-Shift-U\"),\n exec: function(editor) { editor.toLowerCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"autoindent\",\n description: \"Auto Indent\",\n bindKey: bindKey(null, null),\n exec: function(editor) { editor.autoIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"animate\"\n}, {\n name: \"expandtoline\",\n description: \"Expand to line\",\n bindKey: bindKey(\"Ctrl-Shift-L\", \"Command-Shift-L\"),\n exec: function(editor) {\n var range = editor.selection.getRange();\n\n range.start.column = range.end.column = 0;\n range.end.row++;\n editor.selection.setRange(range, false);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"joinlines\",\n description: \"Join lines\",\n bindKey: bindKey(null, null),\n exec: function(editor) {\n var isBackwards = editor.selection.isBackwards();\n var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor();\n var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead();\n var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length;\n var selectedText = editor.session.doc.getTextRange(editor.selection.getRange());\n var selectedCount = selectedText.replace(/\\n\\s*/, \" \").length;\n var insertLine = editor.session.doc.getLine(selectionStart.row);\n\n for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) {\n var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i)));\n if (curLine.length !== 0) {\n curLine = \" \" + curLine;\n }\n insertLine += curLine;\n }\n\n if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) {\n insertLine += editor.session.doc.getNewLineCharacter();\n }\n\n editor.clearSelection();\n editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine);\n\n if (selectedCount > 0) {\n editor.selection.moveCursorTo(selectionStart.row, selectionStart.column);\n editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount);\n } else {\n firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol;\n editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol);\n }\n },\n multiSelectAction: \"forEach\",\n readOnly: true\n}, {\n name: \"invertSelection\",\n description: \"Invert selection\",\n bindKey: bindKey(null, null),\n exec: function(editor) {\n var endRow = editor.session.doc.getLength() - 1;\n var endCol = editor.session.doc.getLine(endRow).length;\n var ranges = editor.selection.rangeList.ranges;\n var newRanges = [];\n if (ranges.length < 1) {\n ranges = [editor.selection.getRange()];\n }\n\n for (var i = 0; i < ranges.length; i++) {\n if (i == (ranges.length - 1)) {\n if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) {\n newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol));\n }\n }\n\n if (i === 0) {\n if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) {\n newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column));\n }\n } else {\n newRanges.push(new Range(ranges[i-1].end.row, ranges[i-1].end.column, ranges[i].start.row, ranges[i].start.column));\n }\n }\n\n editor.exitMultiSelectMode();\n editor.clearSelection();\n\n for(var i = 0; i < newRanges.length; i++) {\n editor.selection.addRange(newRanges[i], false);\n }\n },\n readOnly: true,\n scrollIntoView: \"none\"\n}, {\n name: \"addLineAfter\",\n description: \"Add new line after the current line\",\n exec: function(editor) {\n editor.selection.clearSelection();\n editor.navigateLineEnd();\n editor.insert(\"\\n\");\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"addLineBefore\",\n description: \"Add new line before the current line\",\n exec: function(editor) {\n editor.selection.clearSelection();\n var cursor = editor.getCursorPosition();\n editor.selection.moveTo(cursor.row - 1, Number.MAX_VALUE);\n editor.insert(\"\\n\");\n if (cursor.row === 0) editor.navigateUp();\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"openCommandPallete\",\n description: \"Open command pallete\",\n bindKey: bindKey(\"F1\", \"F1\"),\n exec: function(editor) {\n editor.prompt({ $type: \"commands\" });\n },\n readOnly: true\n}, {\n name: \"modeSelect\",\n description: \"Change language mode...\",\n bindKey: bindKey(null, null),\n exec: function(editor) {\n editor.prompt({ $type: \"modes\" });\n },\n readOnly: true\n}];\n\nfor (var i = 1; i < 9; i++) {\n exports.commands.push({\n name: \"foldToLevel\" + i,\n description: \"Fold To Level \" + i,\n level: i,\n exec: function(editor) { editor.session.foldToLevel(this.level); },\n scrollIntoView: \"center\",\n readOnly: true\n });\n}\n\n});\n\nace.define(\"ace/editor\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/keyboard/textinput\",\"ace/mouse/mouse_handler\",\"ace/mouse/fold_handler\",\"ace/keyboard/keybinding\",\"ace/edit_session\",\"ace/search\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/commands/command_manager\",\"ace/commands/default_commands\",\"ace/config\",\"ace/token_iterator\",\"ace/clipboard\"], function(require, exports, module) {\n\"use strict\";\n\nrequire(\"./lib/fixoldbrowsers\");\n\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar lang = require(\"./lib/lang\");\nvar useragent = require(\"./lib/useragent\");\nvar TextInput = require(\"./keyboard/textinput\").TextInput;\nvar MouseHandler = require(\"./mouse/mouse_handler\").MouseHandler;\nvar FoldHandler = require(\"./mouse/fold_handler\").FoldHandler;\nvar KeyBinding = require(\"./keyboard/keybinding\").KeyBinding;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar Search = require(\"./search\").Search;\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar CommandManager = require(\"./commands/command_manager\").CommandManager;\nvar defaultCommands = require(\"./commands/default_commands\").commands;\nvar config = require(\"./config\");\nvar TokenIterator = require(\"./token_iterator\").TokenIterator;\n\nvar clipboard = require(\"./clipboard\");\nvar Editor = function(renderer, session, options) {\n this.$toDestroy = [];\n var container = renderer.getContainerElement();\n this.container = container;\n this.renderer = renderer;\n this.id = \"editor\" + (++Editor.$uid);\n\n this.commands = new CommandManager(useragent.isMac ? \"mac\" : \"win\", defaultCommands);\n if (typeof document == \"object\") {\n this.textInput = new TextInput(renderer.getTextAreaContainer(), this);\n this.renderer.textarea = this.textInput.getElement();\n this.$mouseHandler = new MouseHandler(this);\n new FoldHandler(this);\n }\n\n this.keyBinding = new KeyBinding(this);\n\n this.$search = new Search().set({\n wrap: true\n });\n\n this.$historyTracker = this.$historyTracker.bind(this);\n this.commands.on(\"exec\", this.$historyTracker);\n\n this.$initOperationListeners();\n \n this._$emitInputEvent = lang.delayedCall(function() {\n this._signal(\"input\", {});\n if (this.session && this.session.bgTokenizer)\n this.session.bgTokenizer.scheduleStart();\n }.bind(this));\n \n this.on(\"change\", function(_, _self) {\n _self._$emitInputEvent.schedule(31);\n });\n\n this.setSession(session || options && options.session || new EditSession(\"\"));\n config.resetOptions(this);\n if (options)\n this.setOptions(options);\n config._signal(\"editor\", this);\n};\n\nEditor.$uid = 0;\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$initOperationListeners = function() {\n this.commands.on(\"exec\", this.startOperation.bind(this), true);\n this.commands.on(\"afterExec\", this.endOperation.bind(this), true);\n\n this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this, true));\n this.on(\"change\", function() {\n if (!this.curOp) {\n this.startOperation();\n this.curOp.selectionBefore = this.$lastSel;\n }\n this.curOp.docChanged = true;\n }.bind(this), true);\n \n this.on(\"changeSelection\", function() {\n if (!this.curOp) {\n this.startOperation();\n this.curOp.selectionBefore = this.$lastSel;\n }\n this.curOp.selectionChanged = true;\n }.bind(this), true);\n };\n\n this.curOp = null;\n this.prevOp = {};\n this.startOperation = function(commandEvent) {\n if (this.curOp) {\n if (!commandEvent || this.curOp.command)\n return;\n this.prevOp = this.curOp;\n }\n if (!commandEvent) {\n this.previousCommand = null;\n commandEvent = {};\n }\n\n this.$opResetTimer.schedule();\n this.curOp = this.session.curOp = {\n command: commandEvent.command || {},\n args: commandEvent.args,\n scrollTop: this.renderer.scrollTop\n };\n this.curOp.selectionBefore = this.selection.toJSON();\n };\n\n this.endOperation = function(e) {\n if (this.curOp && this.session) {\n if (e && e.returnValue === false || !this.session)\n return (this.curOp = null);\n if (e == true && this.curOp.command && this.curOp.command.name == \"mouse\")\n return;\n this._signal(\"beforeEndOperation\");\n if (!this.curOp) return;\n var command = this.curOp.command;\n var scrollIntoView = command && command.scrollIntoView;\n if (scrollIntoView) {\n switch (scrollIntoView) {\n case \"center-animate\":\n scrollIntoView = \"animate\";\n case \"center\":\n this.renderer.scrollCursorIntoView(null, 0.5);\n break;\n case \"animate\":\n case \"cursor\":\n this.renderer.scrollCursorIntoView();\n break;\n case \"selectionPart\":\n var range = this.selection.getRange();\n var config = this.renderer.layerConfig;\n if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) {\n this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead);\n }\n break;\n default:\n break;\n }\n if (scrollIntoView == \"animate\")\n this.renderer.animateScrolling(this.curOp.scrollTop);\n }\n var sel = this.selection.toJSON();\n this.curOp.selectionAfter = sel;\n this.$lastSel = this.selection.toJSON();\n this.session.getUndoManager().addSelection(sel);\n this.prevOp = this.curOp;\n this.curOp = null;\n }\n };\n this.$mergeableCommands = [\"backspace\", \"del\", \"insertstring\"];\n this.$historyTracker = function(e) {\n if (!this.$mergeUndoDeltas)\n return;\n\n var prev = this.prevOp;\n var mergeableCommands = this.$mergeableCommands;\n var shouldMerge = prev.command && (e.command.name == prev.command.name);\n if (e.command.name == \"insertstring\") {\n var text = e.args;\n if (this.mergeNextCommand === undefined)\n this.mergeNextCommand = true;\n\n shouldMerge = shouldMerge\n && this.mergeNextCommand // previous command allows to coalesce with\n && (!/\\s/.test(text) || /\\s/.test(prev.args)); // previous insertion was of same type\n\n this.mergeNextCommand = true;\n } else {\n shouldMerge = shouldMerge\n && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable\n }\n\n if (\n this.$mergeUndoDeltas != \"always\"\n && Date.now() - this.sequenceStartTime > 2000\n ) {\n shouldMerge = false; // the sequence is too long\n }\n\n if (shouldMerge)\n this.session.mergeUndoDeltas = true;\n else if (mergeableCommands.indexOf(e.command.name) !== -1)\n this.sequenceStartTime = Date.now();\n };\n this.setKeyboardHandler = function(keyboardHandler, cb) {\n if (keyboardHandler && typeof keyboardHandler === \"string\" && keyboardHandler != \"ace\") {\n this.$keybindingId = keyboardHandler;\n var _self = this;\n config.loadModule([\"keybinding\", keyboardHandler], function(module) {\n if (_self.$keybindingId == keyboardHandler)\n _self.keyBinding.setKeyboardHandler(module && module.handler);\n cb && cb();\n });\n } else {\n this.$keybindingId = null;\n this.keyBinding.setKeyboardHandler(keyboardHandler);\n cb && cb();\n }\n };\n this.getKeyboardHandler = function() {\n return this.keyBinding.getKeyboardHandler();\n };\n this.setSession = function(session) {\n if (this.session == session)\n return;\n if (this.curOp) this.endOperation();\n this.curOp = {};\n\n var oldSession = this.session;\n if (oldSession) {\n this.session.off(\"change\", this.$onDocumentChange);\n this.session.off(\"changeMode\", this.$onChangeMode);\n this.session.off(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.session.off(\"changeTabSize\", this.$onChangeTabSize);\n this.session.off(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.session.off(\"changeWrapMode\", this.$onChangeWrapMode);\n this.session.off(\"changeFold\", this.$onChangeFold);\n this.session.off(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.session.off(\"changeBackMarker\", this.$onChangeBackMarker);\n this.session.off(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.session.off(\"changeAnnotation\", this.$onChangeAnnotation);\n this.session.off(\"changeOverwrite\", this.$onCursorChange);\n this.session.off(\"changeScrollTop\", this.$onScrollTopChange);\n this.session.off(\"changeScrollLeft\", this.$onScrollLeftChange);\n\n var selection = this.session.getSelection();\n selection.off(\"changeCursor\", this.$onCursorChange);\n selection.off(\"changeSelection\", this.$onSelectionChange);\n }\n\n this.session = session;\n if (session) {\n this.$onDocumentChange = this.onDocumentChange.bind(this);\n session.on(\"change\", this.$onDocumentChange);\n this.renderer.setSession(session);\n \n this.$onChangeMode = this.onChangeMode.bind(this);\n session.on(\"changeMode\", this.$onChangeMode);\n \n this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this);\n session.on(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n \n this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer);\n session.on(\"changeTabSize\", this.$onChangeTabSize);\n \n this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this);\n session.on(\"changeWrapLimit\", this.$onChangeWrapLimit);\n \n this.$onChangeWrapMode = this.onChangeWrapMode.bind(this);\n session.on(\"changeWrapMode\", this.$onChangeWrapMode);\n \n this.$onChangeFold = this.onChangeFold.bind(this);\n session.on(\"changeFold\", this.$onChangeFold);\n \n this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this);\n this.session.on(\"changeFrontMarker\", this.$onChangeFrontMarker);\n \n this.$onChangeBackMarker = this.onChangeBackMarker.bind(this);\n this.session.on(\"changeBackMarker\", this.$onChangeBackMarker);\n \n this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this);\n this.session.on(\"changeBreakpoint\", this.$onChangeBreakpoint);\n \n this.$onChangeAnnotation = this.onChangeAnnotation.bind(this);\n this.session.on(\"changeAnnotation\", this.$onChangeAnnotation);\n \n this.$onCursorChange = this.onCursorChange.bind(this);\n this.session.on(\"changeOverwrite\", this.$onCursorChange);\n \n this.$onScrollTopChange = this.onScrollTopChange.bind(this);\n this.session.on(\"changeScrollTop\", this.$onScrollTopChange);\n \n this.$onScrollLeftChange = this.onScrollLeftChange.bind(this);\n this.session.on(\"changeScrollLeft\", this.$onScrollLeftChange);\n \n this.selection = session.getSelection();\n this.selection.on(\"changeCursor\", this.$onCursorChange);\n \n this.$onSelectionChange = this.onSelectionChange.bind(this);\n this.selection.on(\"changeSelection\", this.$onSelectionChange);\n \n this.onChangeMode();\n \n this.onCursorChange();\n \n this.onScrollTopChange();\n this.onScrollLeftChange();\n this.onSelectionChange();\n this.onChangeFrontMarker();\n this.onChangeBackMarker();\n this.onChangeBreakpoint();\n this.onChangeAnnotation();\n this.session.getUseWrapMode() && this.renderer.adjustWrapLimit();\n this.renderer.updateFull();\n } else {\n this.selection = null;\n this.renderer.setSession(session);\n }\n\n this._signal(\"changeSession\", {\n session: session,\n oldSession: oldSession\n });\n \n this.curOp = null;\n \n oldSession && oldSession._signal(\"changeEditor\", {oldEditor: this});\n session && session._signal(\"changeEditor\", {editor: this});\n \n if (session && session.bgTokenizer)\n session.bgTokenizer.scheduleStart();\n };\n this.getSession = function() {\n return this.session;\n };\n this.setValue = function(val, cursorPos) {\n this.session.doc.setValue(val);\n\n if (!cursorPos)\n this.selectAll();\n else if (cursorPos == 1)\n this.navigateFileEnd();\n else if (cursorPos == -1)\n this.navigateFileStart();\n\n return val;\n };\n this.getValue = function() {\n return this.session.getValue();\n };\n this.getSelection = function() {\n return this.selection;\n };\n this.resize = function(force) {\n this.renderer.onResize(force);\n };\n this.setTheme = function(theme, cb) {\n this.renderer.setTheme(theme, cb);\n };\n this.getTheme = function() {\n return this.renderer.getTheme();\n };\n this.setStyle = function(style) {\n this.renderer.setStyle(style);\n };\n this.unsetStyle = function(style) {\n this.renderer.unsetStyle(style);\n };\n this.getFontSize = function () {\n return this.getOption(\"fontSize\") ||\n dom.computedStyle(this.container).fontSize;\n };\n this.setFontSize = function(size) {\n this.setOption(\"fontSize\", size);\n };\n\n this.$highlightBrackets = function() {\n if (this.$highlightPending) {\n return;\n }\n var self = this;\n this.$highlightPending = true;\n setTimeout(function () {\n self.$highlightPending = false;\n var session = self.session;\n if (!session || !session.bgTokenizer) return;\n if (session.$bracketHighlight) {\n session.$bracketHighlight.markerIds.forEach(function(id) {\n session.removeMarker(id);\n });\n session.$bracketHighlight = null;\n }\n var ranges = session.getMatchingBracketRanges(self.getCursorPosition());\n if (!ranges && session.$mode.getMatching) \n ranges = session.$mode.getMatching(self.session);\n if (!ranges)\n return;\n\n var markerType = \"ace_bracket\";\n if (!Array.isArray(ranges)) {\n ranges = [ranges];\n } else if (ranges.length == 1) {\n markerType = \"ace_error_bracket\";\n }\n if (ranges.length == 2) {\n if (Range.comparePoints(ranges[0].end, ranges[1].start) == 0)\n ranges = [Range.fromPoints(ranges[0].start, ranges[1].end)];\n else if (Range.comparePoints(ranges[0].start, ranges[1].end) == 0)\n ranges = [Range.fromPoints(ranges[1].start, ranges[0].end)];\n }\n\n session.$bracketHighlight = {\n ranges: ranges,\n markerIds: ranges.map(function(range) {\n return session.addMarker(range, markerType, \"text\");\n })\n };\n }, 50);\n };\n this.$highlightTags = function() {\n if (this.$highlightTagPending)\n return;\n var self = this;\n this.$highlightTagPending = true;\n setTimeout(function() {\n self.$highlightTagPending = false;\n \n var session = self.session;\n if (!session || !session.bgTokenizer) return;\n \n var pos = self.getCursorPosition();\n var iterator = new TokenIterator(self.session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n \n if (!token || !/\\b(?:tag-open|tag-name)/.test(token.type)) {\n session.removeMarker(session.$tagHighlight);\n session.$tagHighlight = null;\n return;\n }\n \n if (token.type.indexOf(\"tag-open\") !== -1) {\n token = iterator.stepForward();\n if (!token)\n return;\n }\n \n var tag = token.value;\n var currentTag = token.value;\n var depth = 0;\n var prevToken = iterator.stepBackward();\n \n if (prevToken.value === '<'){\n do {\n prevToken = token;\n token = iterator.stepForward();\n\n if (token) {\n if (token.type.indexOf('tag-name') !== -1) {\n currentTag = token.value;\n if (tag === currentTag) {\n if (prevToken.value === '<') {\n depth++;\n } else if (prevToken.value === '') { // self closing tag\n depth--;\n }\n }\n \n } while (token && depth >= 0);\n } else {\n do {\n token = prevToken;\n prevToken = iterator.stepBackward();\n\n if (token) {\n if (token.type.indexOf('tag-name') !== -1) {\n if (tag === token.value) {\n if (prevToken.value === '<') {\n depth++;\n } else if (prevToken.value === '') { // self closing tag\n var stepCount = 0;\n var tmpToken = prevToken;\n while (tmpToken) {\n if (tmpToken.type.indexOf('tag-name') !== -1 && tmpToken.value === tag) {\n depth--;\n break;\n } else if (tmpToken.value === '<') {\n break;\n }\n tmpToken = iterator.stepBackward();\n stepCount++;\n }\n for (var i = 0; i < stepCount; i++) {\n iterator.stepForward();\n }\n }\n }\n } while (prevToken && depth <= 0);\n iterator.stepForward();\n }\n \n if (!token) {\n session.removeMarker(session.$tagHighlight);\n session.$tagHighlight = null;\n return;\n }\n \n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn();\n var range = new Range(row, column, row, column+token.value.length);\n var sbm = session.$backMarkers[session.$tagHighlight];\n if (session.$tagHighlight && sbm != undefined && range.compareRange(sbm.range) !== 0) {\n session.removeMarker(session.$tagHighlight);\n session.$tagHighlight = null;\n }\n \n if (!session.$tagHighlight)\n session.$tagHighlight = session.addMarker(range, \"ace_bracket\", \"text\");\n }, 50);\n };\n this.focus = function() {\n var _self = this;\n setTimeout(function() {\n if (!_self.isFocused())\n _self.textInput.focus();\n });\n this.textInput.focus();\n };\n this.isFocused = function() {\n return this.textInput.isFocused();\n };\n this.blur = function() {\n this.textInput.blur();\n };\n this.onFocus = function(e) {\n if (this.$isFocused)\n return;\n this.$isFocused = true;\n this.renderer.showCursor();\n this.renderer.visualizeFocus();\n this._emit(\"focus\", e);\n };\n this.onBlur = function(e) {\n if (!this.$isFocused)\n return;\n this.$isFocused = false;\n this.renderer.hideCursor();\n this.renderer.visualizeBlur();\n this._emit(\"blur\", e);\n };\n\n this.$cursorChange = function() {\n this.renderer.updateCursor();\n this.$highlightBrackets();\n this.$highlightTags();\n this.$updateHighlightActiveLine();\n };\n this.onDocumentChange = function(delta) {\n var wrap = this.session.$useWrapMode;\n var lastRow = (delta.start.row == delta.end.row ? delta.end.row : Infinity);\n this.renderer.updateLines(delta.start.row, lastRow, wrap);\n\n this._signal(\"change\", delta);\n this.$cursorChange();\n };\n\n this.onTokenizerUpdate = function(e) {\n var rows = e.data;\n this.renderer.updateLines(rows.first, rows.last);\n };\n\n\n this.onScrollTopChange = function() {\n this.renderer.scrollToY(this.session.getScrollTop());\n };\n\n this.onScrollLeftChange = function() {\n this.renderer.scrollToX(this.session.getScrollLeft());\n };\n this.onCursorChange = function() {\n this.$cursorChange();\n this._signal(\"changeSelection\");\n };\n\n this.$updateHighlightActiveLine = function() {\n var session = this.getSession();\n\n var highlight;\n if (this.$highlightActiveLine) {\n if (this.$selectionStyle != \"line\" || !this.selection.isMultiLine())\n highlight = this.getCursorPosition();\n if (this.renderer.theme && this.renderer.theme.$selectionColorConflict && !this.selection.isEmpty())\n highlight = false;\n if (this.renderer.$maxLines && this.session.getLength() === 1 && !(this.renderer.$minLines > 1))\n highlight = false;\n }\n\n if (session.$highlightLineMarker && !highlight) {\n session.removeMarker(session.$highlightLineMarker.id);\n session.$highlightLineMarker = null;\n } else if (!session.$highlightLineMarker && highlight) {\n var range = new Range(highlight.row, highlight.column, highlight.row, Infinity);\n range.id = session.addMarker(range, \"ace_active-line\", \"screenLine\");\n session.$highlightLineMarker = range;\n } else if (highlight) {\n session.$highlightLineMarker.start.row = highlight.row;\n session.$highlightLineMarker.end.row = highlight.row;\n session.$highlightLineMarker.start.column = highlight.column;\n session._signal(\"changeBackMarker\");\n }\n };\n\n this.onSelectionChange = function(e) {\n var session = this.session;\n\n if (session.$selectionMarker) {\n session.removeMarker(session.$selectionMarker);\n }\n session.$selectionMarker = null;\n\n if (!this.selection.isEmpty()) {\n var range = this.selection.getRange();\n var style = this.getSelectionStyle();\n session.$selectionMarker = session.addMarker(range, \"ace_selection\", style);\n } else {\n this.$updateHighlightActiveLine();\n }\n\n var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp();\n this.session.highlight(re);\n\n this._signal(\"changeSelection\");\n };\n\n this.$getSelectionHighLightRegexp = function() {\n var session = this.session;\n\n var selection = this.getSelectionRange();\n if (selection.isEmpty() || selection.isMultiLine())\n return;\n\n var startColumn = selection.start.column;\n var endColumn = selection.end.column;\n var line = session.getLine(selection.start.row);\n \n var needle = line.substring(startColumn, endColumn);\n if (needle.length > 5000 || !/[\\w\\d]/.test(needle))\n return;\n\n var re = this.$search.$assembleRegExp({\n wholeWord: true,\n caseSensitive: true,\n needle: needle\n });\n \n var wordWithBoundary = line.substring(startColumn - 1, endColumn + 1);\n if (!re.test(wordWithBoundary))\n return;\n \n return re;\n };\n\n\n this.onChangeFrontMarker = function() {\n this.renderer.updateFrontMarkers();\n };\n\n this.onChangeBackMarker = function() {\n this.renderer.updateBackMarkers();\n };\n\n\n this.onChangeBreakpoint = function() {\n this.renderer.updateBreakpoints();\n };\n\n this.onChangeAnnotation = function() {\n this.renderer.setAnnotations(this.session.getAnnotations());\n };\n\n\n this.onChangeMode = function(e) {\n this.renderer.updateText();\n this._emit(\"changeMode\", e);\n };\n\n\n this.onChangeWrapLimit = function() {\n this.renderer.updateFull();\n };\n\n this.onChangeWrapMode = function() {\n this.renderer.onResize(true);\n };\n\n\n this.onChangeFold = function() {\n this.$updateHighlightActiveLine();\n this.renderer.updateFull();\n };\n this.getSelectedText = function() {\n return this.session.getTextRange(this.getSelectionRange());\n };\n this.getCopyText = function() {\n var text = this.getSelectedText();\n var nl = this.session.doc.getNewLineCharacter();\n var copyLine= false;\n if (!text && this.$copyWithEmptySelection) {\n copyLine = true;\n var ranges = this.selection.getAllRanges();\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (i && ranges[i - 1].start.row == range.start.row)\n continue;\n text += this.session.getLine(range.start.row) + nl;\n }\n }\n var e = {text: text};\n this._signal(\"copy\", e);\n clipboard.lineMode = copyLine ? e.text : false;\n return e.text;\n };\n this.onCopy = function() {\n this.commands.exec(\"copy\", this);\n };\n this.onCut = function() {\n this.commands.exec(\"cut\", this);\n };\n this.onPaste = function(text, event) {\n var e = {text: text, event: event};\n this.commands.exec(\"paste\", this, e);\n };\n \n this.$handlePaste = function(e) {\n if (typeof e == \"string\") \n e = {text: e};\n this._signal(\"paste\", e);\n var text = e.text;\n\n var lineMode = text === clipboard.lineMode;\n var session = this.session;\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode) {\n if (lineMode)\n session.insert({ row: this.selection.lead.row, column: 0 }, text);\n else\n this.insert(text);\n } else if (lineMode) {\n this.selection.rangeList.ranges.forEach(function(range) {\n session.insert({ row: range.start.row, column: 0 }, text);\n });\n } else {\n var lines = text.split(/\\r\\n|\\r|\\n/);\n var ranges = this.selection.rangeList.ranges;\n \n var isFullLine = lines.length == 2 && (!lines[0] || !lines[1]);\n if (lines.length != ranges.length || isFullLine)\n return this.commands.exec(\"insertstring\", this, text);\n \n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.isEmpty())\n session.remove(range);\n \n session.insert(range.start, lines[i]);\n }\n }\n };\n\n this.execCommand = function(command, args) {\n return this.commands.exec(command, this, args);\n };\n this.insert = function(text, pasted) {\n var session = this.session;\n var mode = session.getMode();\n var cursor = this.getCursorPosition();\n\n if (this.getBehavioursEnabled() && !pasted) {\n var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text);\n if (transform) {\n if (text !== transform.text) {\n if (!this.inVirtualSelectionMode) {\n this.session.mergeUndoDeltas = false;\n this.mergeNextCommand = false;\n }\n }\n text = transform.text;\n\n }\n }\n \n if (text == \"\\t\")\n text = this.session.getTabString();\n if (!this.selection.isEmpty()) {\n var range = this.getSelectionRange();\n cursor = this.session.remove(range);\n this.clearSelection();\n }\n else if (this.session.getOverwrite() && text.indexOf(\"\\n\") == -1) {\n var range = new Range.fromPoints(cursor, cursor);\n range.end.column += text.length;\n this.session.remove(range);\n }\n\n if (text == \"\\n\" || text == \"\\r\\n\") {\n var line = session.getLine(cursor.row);\n if (cursor.column > line.search(/\\S|$/)) {\n var d = line.substr(cursor.column).search(/\\S|$/);\n session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d);\n }\n }\n this.clearSelection();\n\n var start = cursor.column;\n var lineState = session.getState(cursor.row);\n var line = session.getLine(cursor.row);\n var shouldOutdent = mode.checkOutdent(lineState, line, text);\n session.insert(cursor, text);\n\n if (transform && transform.selection) {\n if (transform.selection.length == 2) { // Transform relative to the current column\n this.selection.setSelectionRange(\n new Range(cursor.row, start + transform.selection[0],\n cursor.row, start + transform.selection[1]));\n } else { // Transform relative to the current row.\n this.selection.setSelectionRange(\n new Range(cursor.row + transform.selection[0],\n transform.selection[1],\n cursor.row + transform.selection[2],\n transform.selection[3]));\n }\n }\n if (this.$enableAutoIndent) {\n if (session.getDocument().isNewLine(text)) {\n var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString());\n\n session.insert({row: cursor.row+1, column: 0}, lineIndent);\n }\n if (shouldOutdent)\n mode.autoOutdent(lineState, session, cursor.row);\n }\n };\n\n this.autoIndent = function () {\n var session = this.session;\n var mode = session.getMode();\n\n var startRow, endRow;\n if (this.selection.isEmpty()) {\n startRow = 0;\n endRow = session.doc.getLength() - 1;\n } else {\n var selectedRange = this.getSelectionRange();\n\n startRow = selectedRange.start.row;\n endRow = selectedRange.end.row;\n }\n\n var prevLineState = \"\";\n var prevLine = \"\";\n var lineIndent = \"\";\n var line, currIndent, range;\n var tab = session.getTabString();\n\n for (var row = startRow; row <= endRow; row++) {\n if (row > 0) {\n prevLineState = session.getState(row - 1);\n prevLine = session.getLine(row - 1);\n lineIndent = mode.getNextLineIndent(prevLineState, prevLine, tab);\n }\n\n line = session.getLine(row);\n currIndent = mode.$getIndent(line);\n if (lineIndent !== currIndent) {\n if (currIndent.length > 0) {\n range = new Range(row, 0, row, currIndent.length);\n session.remove(range);\n }\n if (lineIndent.length > 0) {\n session.insert({row: row, column: 0}, lineIndent);\n }\n }\n\n mode.autoOutdent(prevLineState, session, row);\n }\n };\n\n\n this.onTextInput = function(text, composition) {\n if (!composition)\n return this.keyBinding.onTextInput(text);\n \n this.startOperation({command: { name: \"insertstring\" }});\n var applyComposition = this.applyComposition.bind(this, text, composition);\n if (this.selection.rangeCount)\n this.forEachSelection(applyComposition);\n else\n applyComposition();\n this.endOperation();\n };\n \n this.applyComposition = function(text, composition) {\n if (composition.extendLeft || composition.extendRight) {\n var r = this.selection.getRange();\n r.start.column -= composition.extendLeft;\n r.end.column += composition.extendRight;\n if (r.start.column < 0) {\n r.start.row--;\n r.start.column += this.session.getLine(r.start.row).length + 1;\n }\n this.selection.setRange(r);\n if (!text && !r.isEmpty())\n this.remove();\n }\n if (text || !this.selection.isEmpty())\n this.insert(text, true);\n if (composition.restoreStart || composition.restoreEnd) {\n var r = this.selection.getRange();\n r.start.column -= composition.restoreStart;\n r.end.column -= composition.restoreEnd;\n this.selection.setRange(r);\n }\n };\n\n this.onCommandKey = function(e, hashId, keyCode) {\n return this.keyBinding.onCommandKey(e, hashId, keyCode);\n };\n this.setOverwrite = function(overwrite) {\n this.session.setOverwrite(overwrite);\n };\n this.getOverwrite = function() {\n return this.session.getOverwrite();\n };\n this.toggleOverwrite = function() {\n this.session.toggleOverwrite();\n };\n this.setScrollSpeed = function(speed) {\n this.setOption(\"scrollSpeed\", speed);\n };\n this.getScrollSpeed = function() {\n return this.getOption(\"scrollSpeed\");\n };\n this.setDragDelay = function(dragDelay) {\n this.setOption(\"dragDelay\", dragDelay);\n };\n this.getDragDelay = function() {\n return this.getOption(\"dragDelay\");\n };\n this.setSelectionStyle = function(val) {\n this.setOption(\"selectionStyle\", val);\n };\n this.getSelectionStyle = function() {\n return this.getOption(\"selectionStyle\");\n };\n this.setHighlightActiveLine = function(shouldHighlight) {\n this.setOption(\"highlightActiveLine\", shouldHighlight);\n };\n this.getHighlightActiveLine = function() {\n return this.getOption(\"highlightActiveLine\");\n };\n this.setHighlightGutterLine = function(shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n\n this.getHighlightGutterLine = function() {\n return this.getOption(\"highlightGutterLine\");\n };\n this.setHighlightSelectedWord = function(shouldHighlight) {\n this.setOption(\"highlightSelectedWord\", shouldHighlight);\n };\n this.getHighlightSelectedWord = function() {\n return this.$highlightSelectedWord;\n };\n\n this.setAnimatedScroll = function(shouldAnimate){\n this.renderer.setAnimatedScroll(shouldAnimate);\n };\n\n this.getAnimatedScroll = function(){\n return this.renderer.getAnimatedScroll();\n };\n this.setShowInvisibles = function(showInvisibles) {\n this.renderer.setShowInvisibles(showInvisibles);\n };\n this.getShowInvisibles = function() {\n return this.renderer.getShowInvisibles();\n };\n\n this.setDisplayIndentGuides = function(display) {\n this.renderer.setDisplayIndentGuides(display);\n };\n\n this.getDisplayIndentGuides = function() {\n return this.renderer.getDisplayIndentGuides();\n };\n this.setShowPrintMargin = function(showPrintMargin) {\n this.renderer.setShowPrintMargin(showPrintMargin);\n };\n this.getShowPrintMargin = function() {\n return this.renderer.getShowPrintMargin();\n };\n this.setPrintMarginColumn = function(showPrintMargin) {\n this.renderer.setPrintMarginColumn(showPrintMargin);\n };\n this.getPrintMarginColumn = function() {\n return this.renderer.getPrintMarginColumn();\n };\n this.setReadOnly = function(readOnly) {\n this.setOption(\"readOnly\", readOnly);\n };\n this.getReadOnly = function() {\n return this.getOption(\"readOnly\");\n };\n this.setBehavioursEnabled = function (enabled) {\n this.setOption(\"behavioursEnabled\", enabled);\n };\n this.getBehavioursEnabled = function () {\n return this.getOption(\"behavioursEnabled\");\n };\n this.setWrapBehavioursEnabled = function (enabled) {\n this.setOption(\"wrapBehavioursEnabled\", enabled);\n };\n this.getWrapBehavioursEnabled = function () {\n return this.getOption(\"wrapBehavioursEnabled\");\n };\n this.setShowFoldWidgets = function(show) {\n this.setOption(\"showFoldWidgets\", show);\n\n };\n this.getShowFoldWidgets = function() {\n return this.getOption(\"showFoldWidgets\");\n };\n\n this.setFadeFoldWidgets = function(fade) {\n this.setOption(\"fadeFoldWidgets\", fade);\n };\n\n this.getFadeFoldWidgets = function() {\n return this.getOption(\"fadeFoldWidgets\");\n };\n this.remove = function(dir) {\n if (this.selection.isEmpty()){\n if (dir == \"left\")\n this.selection.selectLeft();\n else\n this.selection.selectRight();\n }\n\n var range = this.getSelectionRange();\n if (this.getBehavioursEnabled()) {\n var session = this.session;\n var state = session.getState(range.start.row);\n var new_range = session.getMode().transformAction(state, 'deletion', this, session, range);\n\n if (range.end.column === 0) {\n var text = session.getTextRange(range);\n if (text[text.length - 1] == \"\\n\") {\n var line = session.getLine(range.end.row);\n if (/^\\s+$/.test(line)) {\n range.end.column = line.length;\n }\n }\n }\n if (new_range)\n range = new_range;\n }\n\n this.session.remove(range);\n this.clearSelection();\n };\n this.removeWordRight = function() {\n if (this.selection.isEmpty())\n this.selection.selectWordRight();\n\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n this.removeWordLeft = function() {\n if (this.selection.isEmpty())\n this.selection.selectWordLeft();\n\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n this.removeToLineStart = function() {\n if (this.selection.isEmpty())\n this.selection.selectLineStart();\n if (this.selection.isEmpty())\n this.selection.selectLeft();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n this.removeToLineEnd = function() {\n if (this.selection.isEmpty())\n this.selection.selectLineEnd();\n\n var range = this.getSelectionRange();\n if (range.start.column == range.end.column && range.start.row == range.end.row) {\n range.end.column = 0;\n range.end.row++;\n }\n\n this.session.remove(range);\n this.clearSelection();\n };\n this.splitLine = function() {\n if (!this.selection.isEmpty()) {\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n }\n\n var cursor = this.getCursorPosition();\n this.insert(\"\\n\");\n this.moveCursorToPosition(cursor);\n };\n this.transposeLetters = function() {\n if (!this.selection.isEmpty()) {\n return;\n }\n\n var cursor = this.getCursorPosition();\n var column = cursor.column;\n if (column === 0)\n return;\n\n var line = this.session.getLine(cursor.row);\n var swap, range;\n if (column < line.length) {\n swap = line.charAt(column) + line.charAt(column-1);\n range = new Range(cursor.row, column-1, cursor.row, column+1);\n }\n else {\n swap = line.charAt(column-1) + line.charAt(column-2);\n range = new Range(cursor.row, column-2, cursor.row, column);\n }\n this.session.replace(range, swap);\n this.session.selection.moveToPosition(range.end);\n };\n this.toLowerCase = function() {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toLowerCase());\n this.selection.setSelectionRange(originalRange);\n };\n this.toUpperCase = function() {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toUpperCase());\n this.selection.setSelectionRange(originalRange);\n };\n this.indent = function() {\n var session = this.session;\n var range = this.getSelectionRange();\n\n if (range.start.row < range.end.row) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n } else if (range.start.column < range.end.column) {\n var text = session.getTextRange(range);\n if (!/^\\s+$/.test(text)) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n }\n \n var line = session.getLine(range.start.row);\n var position = range.start;\n var size = session.getTabSize();\n var column = session.documentToScreenColumn(position.row, position.column);\n\n if (this.session.getUseSoftTabs()) {\n var count = (size - column % size);\n var indentString = lang.stringRepeat(\" \", count);\n } else {\n var count = column % size;\n while (line[range.start.column - 1] == \" \" && count) {\n range.start.column--;\n count--;\n }\n this.selection.setSelectionRange(range);\n indentString = \"\\t\";\n }\n return this.insert(indentString);\n };\n this.blockIndent = function() {\n var rows = this.$getSelectedRows();\n this.session.indentRows(rows.first, rows.last, \"\\t\");\n };\n this.blockOutdent = function() {\n var selection = this.session.getSelection();\n this.session.outdentRows(selection.getRange());\n };\n this.sortLines = function() {\n var rows = this.$getSelectedRows();\n var session = this.session;\n\n var lines = [];\n for (var i = rows.first; i <= rows.last; i++)\n lines.push(session.getLine(i));\n\n lines.sort(function(a, b) {\n if (a.toLowerCase() < b.toLowerCase()) return -1;\n if (a.toLowerCase() > b.toLowerCase()) return 1;\n return 0;\n });\n\n var deleteRange = new Range(0, 0, 0, 0);\n for (var i = rows.first; i <= rows.last; i++) {\n var line = session.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n deleteRange.end.column = line.length;\n session.replace(deleteRange, lines[i-rows.first]);\n }\n };\n this.toggleCommentLines = function() {\n var state = this.session.getState(this.getCursorPosition().row);\n var rows = this.$getSelectedRows();\n this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last);\n };\n\n this.toggleBlockComment = function() {\n var cursor = this.getCursorPosition();\n var state = this.session.getState(cursor.row);\n var range = this.getSelectionRange();\n this.session.getMode().toggleBlockComment(state, this.session, range, cursor);\n };\n this.getNumberAt = function(row, column) {\n var _numberRx = /[\\-]?[0-9]+(?:\\.[0-9]+)?/g;\n _numberRx.lastIndex = 0;\n\n var s = this.session.getLine(row);\n while (_numberRx.lastIndex < column) {\n var m = _numberRx.exec(s);\n if(m.index <= column && m.index+m[0].length >= column){\n var number = {\n value: m[0],\n start: m.index,\n end: m.index+m[0].length\n };\n return number;\n }\n }\n return null;\n };\n this.modifyNumber = function(amount) {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n var charRange = new Range(row, column-1, row, column);\n\n var c = this.session.getTextRange(charRange);\n if (!isNaN(parseFloat(c)) && isFinite(c)) {\n var nr = this.getNumberAt(row, column);\n if (nr) {\n var fp = nr.value.indexOf(\".\") >= 0 ? nr.start + nr.value.indexOf(\".\") + 1 : nr.end;\n var decimals = nr.start + nr.value.length - fp;\n\n var t = parseFloat(nr.value);\n t *= Math.pow(10, decimals);\n\n\n if(fp !== nr.end && column < fp){\n amount *= Math.pow(10, nr.end - column - 1);\n } else {\n amount *= Math.pow(10, nr.end - column);\n }\n\n t += amount;\n t /= Math.pow(10, decimals);\n var nnr = t.toFixed(decimals);\n var replaceRange = new Range(row, nr.start, row, nr.end);\n this.session.replace(replaceRange, nnr);\n this.moveCursorTo(row, Math.max(nr.start +1, column + nnr.length - nr.value.length));\n\n }\n } else {\n this.toggleWord();\n }\n };\n\n this.$toggleWordPairs = [\n [\"first\", \"last\"],\n [\"true\", \"false\"],\n [\"yes\", \"no\"],\n [\"width\", \"height\"],\n [\"top\", \"bottom\"],\n [\"right\", \"left\"],\n [\"on\", \"off\"],\n [\"x\", \"y\"],\n [\"get\", \"set\"],\n [\"max\", \"min\"],\n [\"horizontal\", \"vertical\"],\n [\"show\", \"hide\"],\n [\"add\", \"remove\"],\n [\"up\", \"down\"],\n [\"before\", \"after\"],\n [\"even\", \"odd\"],\n [\"in\", \"out\"],\n [\"inside\", \"outside\"],\n [\"next\", \"previous\"],\n [\"increase\", \"decrease\"],\n [\"attach\", \"detach\"],\n [\"&&\", \"||\"],\n [\"==\", \"!=\"]\n ];\n\n this.toggleWord = function () {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n this.selection.selectWord();\n var currentState = this.getSelectedText();\n var currWordStart = this.selection.getWordRange().start.column;\n var wordParts = currentState.replace(/([a-z]+|[A-Z]+)(?=[A-Z_]|$)/g, '$1 ').split(/\\s/);\n var delta = column - currWordStart - 1;\n if (delta < 0) delta = 0;\n var curLength = 0, itLength = 0;\n var that = this;\n if (currentState.match(/[A-Za-z0-9_]+/)) {\n wordParts.forEach(function (item, i) {\n itLength = curLength + item.length;\n if (delta >= curLength && delta <= itLength) {\n currentState = item;\n that.selection.clearSelection();\n that.moveCursorTo(row, curLength + currWordStart);\n that.selection.selectTo(row, itLength + currWordStart);\n }\n curLength = itLength;\n });\n }\n\n var wordPairs = this.$toggleWordPairs;\n var reg;\n for (var i = 0; i < wordPairs.length; i++) {\n var item = wordPairs[i];\n for (var j = 0; j <= 1; j++) {\n var negate = +!j;\n var firstCondition = currentState.match(new RegExp('^\\\\s?_?(' + lang.escapeRegExp(item[j]) + ')\\\\s?$', 'i'));\n if (firstCondition) {\n var secondCondition = currentState.match(new RegExp('([_]|^|\\\\s)(' + lang.escapeRegExp(firstCondition[1]) + ')($|\\\\s)', 'g'));\n if (secondCondition) {\n reg = currentState.replace(new RegExp(lang.escapeRegExp(item[j]), 'i'), function (result) {\n var res = item[negate];\n if (result.toUpperCase() == result) {\n res = res.toUpperCase();\n } else if (result.charAt(0).toUpperCase() == result.charAt(0)) {\n res = res.substr(0, 0) + item[negate].charAt(0).toUpperCase() + res.substr(1);\n }\n return res;\n });\n this.insert(reg);\n reg = \"\";\n }\n }\n }\n }\n };\n this.removeLines = function() {\n var rows = this.$getSelectedRows();\n this.session.removeFullLines(rows.first, rows.last);\n this.clearSelection();\n };\n\n this.duplicateSelection = function() {\n var sel = this.selection;\n var doc = this.session;\n var range = sel.getRange();\n var reverse = sel.isBackwards();\n if (range.isEmpty()) {\n var row = range.start.row;\n doc.duplicateLines(row, row);\n } else {\n var point = reverse ? range.start : range.end;\n var endPoint = doc.insert(point, doc.getTextRange(range), false);\n range.start = point;\n range.end = endPoint;\n\n sel.setSelectionRange(range, reverse);\n }\n };\n this.moveLinesDown = function() {\n this.$moveLines(1, false);\n };\n this.moveLinesUp = function() {\n this.$moveLines(-1, false);\n };\n this.moveText = function(range, toPosition, copy) {\n return this.session.moveText(range, toPosition, copy);\n };\n this.copyLinesUp = function() {\n this.$moveLines(-1, true);\n };\n this.copyLinesDown = function() {\n this.$moveLines(1, true);\n };\n this.$moveLines = function(dir, copy) {\n var rows, moved;\n var selection = this.selection;\n if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) {\n var range = selection.toOrientedRange();\n rows = this.$getSelectedRows(range);\n moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir);\n if (copy && dir == -1) moved = 0;\n range.moveBy(moved, 0);\n selection.fromOrientedRange(range);\n } else {\n var ranges = selection.rangeList.ranges;\n selection.rangeList.detach(this.session);\n this.inVirtualSelectionMode = true;\n \n var diff = 0;\n var totalDiff = 0;\n var l = ranges.length;\n for (var i = 0; i < l; i++) {\n var rangeIndex = i;\n ranges[i].moveBy(diff, 0);\n rows = this.$getSelectedRows(ranges[i]);\n var first = rows.first;\n var last = rows.last;\n while (++i < l) {\n if (totalDiff) ranges[i].moveBy(totalDiff, 0);\n var subRows = this.$getSelectedRows(ranges[i]);\n if (copy && subRows.first != last)\n break;\n else if (!copy && subRows.first > last + 1)\n break;\n last = subRows.last;\n }\n i--;\n diff = this.session.$moveLines(first, last, copy ? 0 : dir);\n if (copy && dir == -1) rangeIndex = i + 1;\n while (rangeIndex <= i) {\n ranges[rangeIndex].moveBy(diff, 0);\n rangeIndex++;\n }\n if (!copy) diff = 0;\n totalDiff += diff;\n }\n \n selection.fromOrientedRange(selection.ranges[0]);\n selection.rangeList.attach(this.session);\n this.inVirtualSelectionMode = false;\n }\n };\n this.$getSelectedRows = function(range) {\n range = (range || this.getSelectionRange()).collapseRows();\n\n return {\n first: this.session.getRowFoldStart(range.start.row),\n last: this.session.getRowFoldEnd(range.end.row)\n };\n };\n\n this.onCompositionStart = function(compositionState) {\n this.renderer.showComposition(compositionState);\n };\n\n this.onCompositionUpdate = function(text) {\n this.renderer.setCompositionText(text);\n };\n\n this.onCompositionEnd = function() {\n this.renderer.hideComposition();\n };\n this.getFirstVisibleRow = function() {\n return this.renderer.getFirstVisibleRow();\n };\n this.getLastVisibleRow = function() {\n return this.renderer.getLastVisibleRow();\n };\n this.isRowVisible = function(row) {\n return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow());\n };\n this.isRowFullyVisible = function(row) {\n return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow());\n };\n this.$getVisibleRowCount = function() {\n return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1;\n };\n\n this.$moveByPage = function(dir, select) {\n var renderer = this.renderer;\n var config = this.renderer.layerConfig;\n var rows = dir * Math.floor(config.height / config.lineHeight);\n\n if (select === true) {\n this.selection.$moveSelection(function(){\n this.moveCursorBy(rows, 0);\n });\n } else if (select === false) {\n this.selection.moveCursorBy(rows, 0);\n this.selection.clearSelection();\n }\n\n var scrollTop = renderer.scrollTop;\n\n renderer.scrollBy(0, rows * config.lineHeight);\n if (select != null)\n renderer.scrollCursorIntoView(null, 0.5);\n\n renderer.animateScrolling(scrollTop);\n };\n this.selectPageDown = function() {\n this.$moveByPage(1, true);\n };\n this.selectPageUp = function() {\n this.$moveByPage(-1, true);\n };\n this.gotoPageDown = function() {\n this.$moveByPage(1, false);\n };\n this.gotoPageUp = function() {\n this.$moveByPage(-1, false);\n };\n this.scrollPageDown = function() {\n this.$moveByPage(1);\n };\n this.scrollPageUp = function() {\n this.$moveByPage(-1);\n };\n this.scrollToRow = function(row) {\n this.renderer.scrollToRow(row);\n };\n this.scrollToLine = function(line, center, animate, callback) {\n this.renderer.scrollToLine(line, center, animate, callback);\n };\n this.centerSelection = function() {\n var range = this.getSelectionRange();\n var pos = {\n row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2),\n column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2)\n };\n this.renderer.alignCursor(pos, 0.5);\n };\n this.getCursorPosition = function() {\n return this.selection.getCursor();\n };\n this.getCursorPositionScreen = function() {\n return this.session.documentToScreenPosition(this.getCursorPosition());\n };\n this.getSelectionRange = function() {\n return this.selection.getRange();\n };\n this.selectAll = function() {\n this.selection.selectAll();\n };\n this.clearSelection = function() {\n this.selection.clearSelection();\n };\n this.moveCursorTo = function(row, column) {\n this.selection.moveCursorTo(row, column);\n };\n this.moveCursorToPosition = function(pos) {\n this.selection.moveCursorToPosition(pos);\n };\n this.jumpToMatching = function(select, expand) {\n var cursor = this.getCursorPosition();\n var iterator = new TokenIterator(this.session, cursor.row, cursor.column);\n var prevToken = iterator.getCurrentToken();\n var token = prevToken || iterator.stepForward();\n\n if (!token) return;\n var matchType;\n var found = false;\n var depth = {};\n var i = cursor.column - token.start;\n var bracketType;\n var brackets = {\n \")\": \"(\",\n \"(\": \"(\",\n \"]\": \"[\",\n \"[\": \"[\",\n \"{\": \"{\",\n \"}\": \"{\"\n };\n \n do {\n if (token.value.match(/[{}()\\[\\]]/g)) {\n for (; i < token.value.length && !found; i++) {\n if (!brackets[token.value[i]]) {\n continue;\n }\n\n bracketType = brackets[token.value[i]] + '.' + token.type.replace(\"rparen\", \"lparen\");\n\n if (isNaN(depth[bracketType])) {\n depth[bracketType] = 0;\n }\n\n switch (token.value[i]) {\n case '(':\n case '[':\n case '{':\n depth[bracketType]++;\n break;\n case ')':\n case ']':\n case '}':\n depth[bracketType]--;\n\n if (depth[bracketType] === -1) {\n matchType = 'bracket';\n found = true;\n }\n break;\n }\n }\n }\n else if (token.type.indexOf('tag-name') !== -1) {\n if (isNaN(depth[token.value])) {\n depth[token.value] = 0;\n }\n \n if (prevToken.value === '<') {\n depth[token.value]++;\n }\n else if (prevToken.value === '= 0; --i) {\n if(this.$tryReplace(ranges[i], replacement)) {\n replaced++;\n }\n }\n\n this.selection.setSelectionRange(selection);\n\n return replaced;\n };\n\n this.$tryReplace = function(range, replacement) {\n var input = this.session.getTextRange(range);\n replacement = this.$search.replace(input, replacement);\n if (replacement !== null) {\n range.end = this.session.replace(range, replacement);\n return range;\n } else {\n return null;\n }\n };\n this.getLastSearchOptions = function() {\n return this.$search.getOptions();\n };\n this.find = function(needle, options, animate) {\n if (!options)\n options = {};\n\n if (typeof needle == \"string\" || needle instanceof RegExp)\n options.needle = needle;\n else if (typeof needle == \"object\")\n oop.mixin(options, needle);\n\n var range = this.selection.getRange();\n if (options.needle == null) {\n needle = this.session.getTextRange(range)\n || this.$search.$options.needle;\n if (!needle) {\n range = this.session.getWordRange(range.start.row, range.start.column);\n needle = this.session.getTextRange(range);\n }\n this.$search.set({needle: needle});\n }\n\n this.$search.set(options);\n if (!options.start)\n this.$search.set({start: range});\n\n var newRange = this.$search.find(this.session);\n if (options.preventScroll)\n return newRange;\n if (newRange) {\n this.revealRange(newRange, animate);\n return newRange;\n }\n if (options.backwards)\n range.start = range.end;\n else\n range.end = range.start;\n this.selection.setRange(range);\n };\n this.findNext = function(options, animate) {\n this.find({skipCurrent: true, backwards: false}, options, animate);\n };\n this.findPrevious = function(options, animate) {\n this.find(options, {skipCurrent: true, backwards: true}, animate);\n };\n\n this.revealRange = function(range, animate) {\n this.session.unfold(range);\n this.selection.setSelectionRange(range);\n\n var scrollTop = this.renderer.scrollTop;\n this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5);\n if (animate !== false)\n this.renderer.animateScrolling(scrollTop);\n };\n this.undo = function() {\n this.session.getUndoManager().undo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n this.redo = function() {\n this.session.getUndoManager().redo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n this.destroy = function() {\n if (this.$toDestroy) {\n this.$toDestroy.forEach(function(el) {\n el.destroy();\n });\n this.$toDestroy = null;\n }\n if (this.$mouseHandler)\n this.$mouseHandler.destroy();\n this.renderer.destroy();\n this._signal(\"destroy\", this);\n if (this.session)\n this.session.destroy();\n if (this._$emitInputEvent)\n this._$emitInputEvent.cancel();\n this.removeAllListeners();\n };\n this.setAutoScrollEditorIntoView = function(enable) {\n if (!enable)\n return;\n var rect;\n var self = this;\n var shouldScroll = false;\n if (!this.$scrollAnchor)\n this.$scrollAnchor = document.createElement(\"div\");\n var scrollAnchor = this.$scrollAnchor;\n scrollAnchor.style.cssText = \"position:absolute\";\n this.container.insertBefore(scrollAnchor, this.container.firstChild);\n var onChangeSelection = this.on(\"changeSelection\", function() {\n shouldScroll = true;\n });\n var onBeforeRender = this.renderer.on(\"beforeRender\", function() {\n if (shouldScroll)\n rect = self.renderer.container.getBoundingClientRect();\n });\n var onAfterRender = this.renderer.on(\"afterRender\", function() {\n if (shouldScroll && rect && (self.isFocused()\n || self.searchBox && self.searchBox.isFocused())\n ) {\n var renderer = self.renderer;\n var pos = renderer.$cursorLayer.$pixelPos;\n var config = renderer.layerConfig;\n var top = pos.top - config.offset;\n if (pos.top >= 0 && top + rect.top < 0) {\n shouldScroll = true;\n } else if (pos.top < config.height &&\n pos.top + rect.top + config.lineHeight > window.innerHeight) {\n shouldScroll = false;\n } else {\n shouldScroll = null;\n }\n if (shouldScroll != null) {\n scrollAnchor.style.top = top + \"px\";\n scrollAnchor.style.left = pos.left + \"px\";\n scrollAnchor.style.height = config.lineHeight + \"px\";\n scrollAnchor.scrollIntoView(shouldScroll);\n }\n shouldScroll = rect = null;\n }\n });\n this.setAutoScrollEditorIntoView = function(enable) {\n if (enable)\n return;\n delete this.setAutoScrollEditorIntoView;\n this.off(\"changeSelection\", onChangeSelection);\n this.renderer.off(\"afterRender\", onAfterRender);\n this.renderer.off(\"beforeRender\", onBeforeRender);\n };\n };\n\n\n this.$resetCursorStyle = function() {\n var style = this.$cursorStyle || \"ace\";\n var cursorLayer = this.renderer.$cursorLayer;\n if (!cursorLayer)\n return;\n cursorLayer.setSmoothBlinking(/smooth/.test(style));\n cursorLayer.isBlinking = !this.$readOnly && style != \"wide\";\n dom.setCssClass(cursorLayer.element, \"ace_slim-cursors\", /slim/.test(style));\n };\n this.prompt = function(message, options, callback) {\n var editor = this;\n config.loadModule(\"./ext/prompt\", function (module) {\n module.prompt(editor, message, options, callback);\n });\n };\n\n}).call(Editor.prototype);\n\n\n\nconfig.defineOptions(Editor.prototype, \"editor\", {\n selectionStyle: {\n set: function(style) {\n this.onSelectionChange();\n this._signal(\"changeSelectionStyle\", {data: style});\n },\n initialValue: \"line\"\n },\n highlightActiveLine: {\n set: function() {this.$updateHighlightActiveLine();},\n initialValue: true\n },\n highlightSelectedWord: {\n set: function(shouldHighlight) {this.$onSelectionChange();},\n initialValue: true\n },\n readOnly: {\n set: function(readOnly) {\n this.textInput.setReadOnly(readOnly);\n this.$resetCursorStyle(); \n },\n initialValue: false\n },\n copyWithEmptySelection: {\n set: function(value) {\n this.textInput.setCopyWithEmptySelection(value);\n },\n initialValue: false\n },\n cursorStyle: {\n set: function(val) { this.$resetCursorStyle(); },\n values: [\"ace\", \"slim\", \"smooth\", \"wide\"],\n initialValue: \"ace\"\n },\n mergeUndoDeltas: {\n values: [false, true, \"always\"],\n initialValue: true\n },\n behavioursEnabled: {initialValue: true},\n wrapBehavioursEnabled: {initialValue: true},\n enableAutoIndent: {initialValue: true},\n autoScrollEditorIntoView: {\n set: function(val) {this.setAutoScrollEditorIntoView(val);}\n },\n keyboardHandler: {\n set: function(val) { this.setKeyboardHandler(val); },\n get: function() { return this.$keybindingId; },\n handlesSet: true\n },\n value: {\n set: function(val) { this.session.setValue(val); },\n get: function() { return this.getValue(); },\n handlesSet: true,\n hidden: true\n },\n session: {\n set: function(val) { this.setSession(val); },\n get: function() { return this.session; },\n handlesSet: true,\n hidden: true\n },\n \n showLineNumbers: {\n set: function(show) {\n this.renderer.$gutterLayer.setShowLineNumbers(show);\n this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER);\n if (show && this.$relativeLineNumbers)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n },\n initialValue: true\n },\n relativeLineNumbers: {\n set: function(value) {\n if (this.$showLineNumbers && value)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n }\n },\n placeholder: {\n set: function(message) {\n if (!this.$updatePlaceholder) {\n this.$updatePlaceholder = function() {\n var value = this.session && (this.renderer.$composition || this.getValue());\n if (value && this.renderer.placeholderNode) {\n this.renderer.off(\"afterRender\", this.$updatePlaceholder);\n dom.removeCssClass(this.container, \"ace_hasPlaceholder\");\n this.renderer.placeholderNode.remove();\n this.renderer.placeholderNode = null;\n } else if (!value && !this.renderer.placeholderNode) {\n this.renderer.on(\"afterRender\", this.$updatePlaceholder);\n dom.addCssClass(this.container, \"ace_hasPlaceholder\");\n var el = dom.createElement(\"div\");\n el.className = \"ace_placeholder\";\n el.textContent = this.$placeholder || \"\";\n this.renderer.placeholderNode = el;\n this.renderer.content.appendChild(this.renderer.placeholderNode);\n } else if (!value && this.renderer.placeholderNode) {\n this.renderer.placeholderNode.textContent = this.$placeholder || \"\";\n }\n }.bind(this);\n this.on(\"input\", this.$updatePlaceholder);\n }\n this.$updatePlaceholder();\n }\n },\n\n hScrollBarAlwaysVisible: \"renderer\",\n vScrollBarAlwaysVisible: \"renderer\",\n highlightGutterLine: \"renderer\",\n animatedScroll: \"renderer\",\n showInvisibles: \"renderer\",\n showPrintMargin: \"renderer\",\n printMarginColumn: \"renderer\",\n printMargin: \"renderer\",\n fadeFoldWidgets: \"renderer\",\n showFoldWidgets: \"renderer\",\n displayIndentGuides: \"renderer\",\n showGutter: \"renderer\",\n fontSize: \"renderer\",\n fontFamily: \"renderer\",\n maxLines: \"renderer\",\n minLines: \"renderer\",\n scrollPastEnd: \"renderer\",\n fixedWidthGutter: \"renderer\",\n theme: \"renderer\",\n hasCssTransforms: \"renderer\",\n maxPixelHeight: \"renderer\",\n useTextareaForIME: \"renderer\",\n\n scrollSpeed: \"$mouseHandler\",\n dragDelay: \"$mouseHandler\",\n dragEnabled: \"$mouseHandler\",\n focusTimeout: \"$mouseHandler\",\n tooltipFollowsMouse: \"$mouseHandler\",\n\n firstLineNumber: \"session\",\n overwrite: \"session\",\n newLineMode: \"session\",\n useWorker: \"session\",\n useSoftTabs: \"session\",\n navigateWithinSoftTabs: \"session\",\n tabSize: \"session\",\n wrap: \"session\",\n indentedSoftWrap: \"session\",\n foldStyle: \"session\",\n mode: \"session\"\n});\n\n\nvar relativeNumberRenderer = {\n getText: function(session, row) {\n return (Math.abs(session.selection.lead.row - row) || (row + 1 + (row < 9 ? \"\\xb7\" : \"\"))) + \"\";\n },\n getWidth: function(session, lastLineNumber, config) {\n return Math.max(\n lastLineNumber.toString().length,\n (config.lastRow + 1).toString().length,\n 2\n ) * config.characterWidth;\n },\n update: function(e, editor) {\n editor.renderer.$loop.schedule(editor.renderer.CHANGE_GUTTER);\n },\n attach: function(editor) {\n editor.renderer.$gutterLayer.$renderer = this;\n editor.on(\"changeSelection\", this.update);\n this.update(null, editor);\n },\n detach: function(editor) {\n if (editor.renderer.$gutterLayer.$renderer == this)\n editor.renderer.$gutterLayer.$renderer = null;\n editor.off(\"changeSelection\", this.update);\n this.update(null, editor);\n }\n};\n\nexports.Editor = Editor;\n});\n\nace.define(\"ace/undomanager\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\nvar UndoManager = function() {\n this.$maxRev = 0;\n this.$fromUndo = false;\n this.reset();\n};\n\n(function() {\n \n this.addSession = function(session) {\n this.$session = session;\n };\n this.add = function(delta, allowMerge, session) {\n if (this.$fromUndo) return;\n if (delta == this.$lastDelta) return;\n if (!this.$keepRedoStack) this.$redoStack.length = 0;\n if (allowMerge === false || !this.lastDeltas) {\n this.lastDeltas = [];\n this.$undoStack.push(this.lastDeltas);\n delta.id = this.$rev = ++this.$maxRev;\n }\n if (delta.action == \"remove\" || delta.action == \"insert\")\n this.$lastDelta = delta;\n this.lastDeltas.push(delta);\n };\n \n this.addSelection = function(selection, rev) {\n this.selections.push({\n value: selection,\n rev: rev || this.$rev\n });\n };\n \n this.startNewGroup = function() {\n this.lastDeltas = null;\n return this.$rev;\n };\n \n this.markIgnored = function(from, to) {\n if (to == null) to = this.$rev + 1;\n var stack = this.$undoStack;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id <= from)\n break;\n if (delta.id < to)\n delta.ignore = true;\n }\n this.lastDeltas = null;\n };\n \n this.getSelection = function(rev, after) {\n var stack = this.selections;\n for (var i = stack.length; i--;) {\n var selection = stack[i];\n if (selection.rev < rev) {\n if (after)\n selection = stack[i + 1];\n return selection;\n }\n }\n };\n \n this.getRevision = function() {\n return this.$rev;\n };\n \n this.getDeltas = function(from, to) {\n if (to == null) to = this.$rev + 1;\n var stack = this.$undoStack;\n var end = null, start = 0;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id < to && !end)\n end = i+1;\n if (delta.id <= from) {\n start = i + 1;\n break;\n }\n }\n return stack.slice(start, end);\n };\n \n this.getChangedRanges = function(from, to) {\n if (to == null) to = this.$rev + 1;\n \n };\n \n this.getChangedLines = function(from, to) {\n if (to == null) to = this.$rev + 1;\n \n };\n this.undo = function(session, dontSelect) {\n this.lastDeltas = null;\n var stack = this.$undoStack;\n \n if (!rearrangeUndoStack(stack, stack.length))\n return;\n \n if (!session)\n session = this.$session;\n \n if (this.$redoStackBaseRev !== this.$rev && this.$redoStack.length)\n this.$redoStack = [];\n \n this.$fromUndo = true;\n \n var deltaSet = stack.pop();\n var undoSelectionRange = null;\n if (deltaSet) {\n undoSelectionRange = session.undoChanges(deltaSet, dontSelect);\n this.$redoStack.push(deltaSet);\n this.$syncRev();\n }\n \n this.$fromUndo = false;\n\n return undoSelectionRange;\n };\n this.redo = function(session, dontSelect) {\n this.lastDeltas = null;\n \n if (!session)\n session = this.$session;\n \n this.$fromUndo = true;\n if (this.$redoStackBaseRev != this.$rev) {\n var diff = this.getDeltas(this.$redoStackBaseRev, this.$rev + 1);\n rebaseRedoStack(this.$redoStack, diff);\n this.$redoStackBaseRev = this.$rev;\n this.$redoStack.forEach(function(x) {\n x[0].id = ++this.$maxRev;\n }, this);\n }\n var deltaSet = this.$redoStack.pop();\n var redoSelectionRange = null;\n \n if (deltaSet) {\n redoSelectionRange = session.redoChanges(deltaSet, dontSelect);\n this.$undoStack.push(deltaSet);\n this.$syncRev();\n }\n this.$fromUndo = false;\n \n return redoSelectionRange;\n };\n \n this.$syncRev = function() {\n var stack = this.$undoStack;\n var nextDelta = stack[stack.length - 1];\n var id = nextDelta && nextDelta[0].id || 0;\n this.$redoStackBaseRev = id;\n this.$rev = id;\n };\n this.reset = function() {\n this.lastDeltas = null;\n this.$lastDelta = null;\n this.$undoStack = [];\n this.$redoStack = [];\n this.$rev = 0;\n this.mark = 0;\n this.$redoStackBaseRev = this.$rev;\n this.selections = [];\n };\n this.canUndo = function() {\n return this.$undoStack.length > 0;\n };\n this.canRedo = function() {\n return this.$redoStack.length > 0;\n };\n this.bookmark = function(rev) {\n if (rev == undefined)\n rev = this.$rev;\n this.mark = rev;\n };\n this.isAtBookmark = function() {\n return this.$rev === this.mark;\n };\n \n this.toJSON = function() {\n \n };\n \n this.fromJSON = function() {\n \n };\n \n this.hasUndo = this.canUndo;\n this.hasRedo = this.canRedo;\n this.isClean = this.isAtBookmark;\n this.markClean = this.bookmark;\n \n this.$prettyPrint = function(delta) {\n if (delta) return stringifyDelta(delta);\n return stringifyDelta(this.$undoStack) + \"\\n---\\n\" + stringifyDelta(this.$redoStack);\n };\n}).call(UndoManager.prototype);\n\nfunction rearrangeUndoStack(stack, pos) {\n for (var i = pos; i--; ) {\n var deltaSet = stack[i];\n if (deltaSet && !deltaSet[0].ignore) {\n while(i < pos - 1) {\n var swapped = swapGroups(stack[i], stack[i + 1]);\n stack[i] = swapped[0];\n stack[i + 1] = swapped[1];\n i++;\n }\n return true;\n }\n }\n}\n\nvar Range = require(\"./range\").Range;\nvar cmp = Range.comparePoints;\nvar comparePoints = Range.comparePoints;\n\nfunction $updateMarkers(delta) {\n var isInsert = delta.action == \"insert\";\n var start = delta.start;\n var end = delta.end;\n var rowShift = (end.row - start.row) * (isInsert ? 1 : -1);\n var colShift = (end.column - start.column) * (isInsert ? 1 : -1);\n if (isInsert) end = start;\n\n for (var i in this.marks) {\n var point = this.marks[i];\n var cmp = comparePoints(point, start);\n if (cmp < 0) {\n continue; // delta starts after the range\n }\n if (cmp === 0) {\n if (isInsert) {\n if (point.bias == 1) {\n cmp = 1;\n }\n else {\n point.bias == -1;\n continue;\n }\n }\n }\n var cmp2 = isInsert ? cmp : comparePoints(point, end);\n if (cmp2 > 0) {\n point.row += rowShift;\n point.column += point.row == end.row ? colShift : 0;\n continue;\n }\n if (!isInsert && cmp2 <= 0) {\n point.row = start.row;\n point.column = start.column;\n if (cmp2 === 0)\n point.bias = 1;\n }\n }\n}\n\n\n\nfunction clonePos(pos) {\n return {row: pos.row,column: pos.column};\n}\nfunction cloneDelta(d) {\n return {\n start: clonePos(d.start),\n end: clonePos(d.end),\n action: d.action,\n lines: d.lines.slice()\n };\n}\nfunction stringifyDelta(d) {\n d = d || this;\n if (Array.isArray(d)) {\n return d.map(stringifyDelta).join(\"\\n\");\n }\n var type = \"\";\n if (d.action) {\n type = d.action == \"insert\" ? \"+\" : \"-\";\n type += \"[\" + d.lines + \"]\";\n } else if (d.value) {\n if (Array.isArray(d.value)) {\n type = d.value.map(stringifyRange).join(\"\\n\");\n } else {\n type = stringifyRange(d.value);\n }\n }\n if (d.start) {\n type += stringifyRange(d);\n }\n if (d.id || d.rev) {\n type += \"\\t(\" + (d.id || d.rev) + \")\";\n }\n return type;\n}\nfunction stringifyRange(r) {\n return r.start.row + \":\" + r.start.column \n + \"=>\" + r.end.row + \":\" + r.end.column;\n}\n\nfunction swap(d1, d2) {\n var i1 = d1.action == \"insert\";\n var i2 = d2.action == \"insert\";\n \n if (i1 && i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n } else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n } else {\n return null;\n }\n } else if (i1 && !i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n } else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n } else {\n return null;\n }\n } else if (!i1 && i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n } else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n } else {\n return null;\n }\n } else if (!i1 && !i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n } else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n } else {\n return null;\n }\n }\n return [d2, d1];\n}\nfunction swapGroups(ds1, ds2) {\n for (var i = ds1.length; i--; ) {\n for (var j = 0; j < ds2.length; j++) {\n if (!swap(ds1[i], ds2[j])) {\n while (i < ds1.length) {\n while (j--) {\n swap(ds2[j], ds1[i]);\n }\n j = ds2.length;\n i++;\n } \n return [ds1, ds2];\n }\n }\n }\n ds1.selectionBefore = ds2.selectionBefore = \n ds1.selectionAfter = ds2.selectionAfter = null;\n return [ds2, ds1];\n}\nfunction xform(d1, c1) {\n var i1 = d1.action == \"insert\";\n var i2 = c1.action == \"insert\";\n \n if (i1 && i2) {\n if (cmp(d1.start, c1.start) < 0) {\n shift(c1, d1, 1);\n } else {\n shift(d1, c1, 1);\n }\n } else if (i1 && !i2) {\n if (cmp(d1.start, c1.end) >= 0) {\n shift(d1, c1, -1);\n } else if (cmp(d1.start, c1.start) <= 0) {\n shift(c1, d1, +1);\n } else {\n shift(d1, Range.fromPoints(c1.start, d1.start), -1);\n shift(c1, d1, +1);\n }\n } else if (!i1 && i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n } else if (cmp(c1.start, d1.start) <= 0) {\n shift(d1, c1, +1);\n } else {\n shift(c1, Range.fromPoints(d1.start, c1.start), -1);\n shift(d1, c1, +1);\n }\n } else if (!i1 && !i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n } else if (cmp(c1.end, d1.start) <= 0) {\n shift(d1, c1, -1);\n } else {\n var before, after;\n if (cmp(d1.start, c1.start) < 0) {\n before = d1;\n d1 = splitDelta(d1, c1.start);\n }\n if (cmp(d1.end, c1.end) > 0) {\n after = splitDelta(d1, c1.end);\n }\n\n shiftPos(c1.end, d1.start, d1.end, -1);\n if (after && !before) {\n d1.lines = after.lines;\n d1.start = after.start;\n d1.end = after.end;\n after = d1;\n }\n\n return [c1, before, after].filter(Boolean);\n }\n }\n return [c1, d1];\n}\n \nfunction shift(d1, d2, dir) {\n shiftPos(d1.start, d2.start, d2.end, dir);\n shiftPos(d1.end, d2.start, d2.end, dir);\n}\nfunction shiftPos(pos, start, end, dir) {\n if (pos.row == (dir == 1 ? start : end).row) {\n pos.column += dir * (end.column - start.column);\n }\n pos.row += dir * (end.row - start.row);\n}\nfunction splitDelta(c, pos) {\n var lines = c.lines;\n var end = c.end;\n c.end = clonePos(pos); \n var rowsBefore = c.end.row - c.start.row;\n var otherLines = lines.splice(rowsBefore, lines.length);\n \n var col = rowsBefore ? pos.column : pos.column - c.start.column;\n lines.push(otherLines[0].substring(0, col));\n otherLines[0] = otherLines[0].substr(col) ; \n var rest = {\n start: clonePos(pos),\n end: end,\n lines: otherLines,\n action: c.action\n };\n return rest;\n}\n\nfunction moveDeltasByOne(redoStack, d) {\n d = cloneDelta(d);\n for (var j = redoStack.length; j--;) {\n var deltaSet = redoStack[j];\n for (var i = 0; i < deltaSet.length; i++) {\n var x = deltaSet[i];\n var xformed = xform(x, d);\n d = xformed[0];\n if (xformed.length != 2) {\n if (xformed[2]) {\n deltaSet.splice(i + 1, 1, xformed[1], xformed[2]);\n i++;\n } else if (!xformed[1]) {\n deltaSet.splice(i, 1);\n i--;\n }\n }\n }\n if (!deltaSet.length) {\n redoStack.splice(j, 1); \n }\n }\n return redoStack;\n}\nfunction rebaseRedoStack(redoStack, deltaSets) {\n for (var i = 0; i < deltaSets.length; i++) {\n var deltas = deltaSets[i];\n for (var j = 0; j < deltas.length; j++) {\n moveDeltasByOne(redoStack, deltas[j]);\n }\n }\n}\n\nexports.UndoManager = UndoManager;\n\n});\n\nace.define(\"ace/layer/lines\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nvar dom = require(\"../lib/dom\");\n\nvar Lines = function(element, canvasHeight) {\n this.element = element;\n this.canvasHeight = canvasHeight || 500000;\n this.element.style.height = (this.canvasHeight * 2) + \"px\";\n \n this.cells = [];\n this.cellCache = [];\n this.$offsetCoefficient = 0;\n};\n\n(function() {\n \n this.moveContainer = function(config) {\n dom.translate(this.element, 0, -((config.firstRowScreen * config.lineHeight) % this.canvasHeight) - config.offset * this.$offsetCoefficient);\n }; \n \n this.pageChanged = function(oldConfig, newConfig) {\n return (\n Math.floor((oldConfig.firstRowScreen * oldConfig.lineHeight) / this.canvasHeight) !==\n Math.floor((newConfig.firstRowScreen * newConfig.lineHeight) / this.canvasHeight)\n );\n };\n \n this.computeLineTop = function(row, config, session) {\n var screenTop = config.firstRowScreen * config.lineHeight;\n var screenPage = Math.floor(screenTop / this.canvasHeight);\n var lineTop = session.documentToScreenRow(row, 0) * config.lineHeight;\n return lineTop - (screenPage * this.canvasHeight);\n };\n \n this.computeLineHeight = function(row, config, session) {\n return config.lineHeight * session.getRowLineCount(row);\n };\n \n this.getLength = function() {\n return this.cells.length;\n };\n \n this.get = function(index) {\n return this.cells[index];\n };\n \n this.shift = function() {\n this.$cacheCell(this.cells.shift());\n };\n \n this.pop = function() {\n this.$cacheCell(this.cells.pop());\n };\n \n this.push = function(cell) {\n if (Array.isArray(cell)) {\n this.cells.push.apply(this.cells, cell);\n var fragment = dom.createFragment(this.element);\n for (var i=0; i foldStart) {\n row = fold.end.row + 1;\n fold = session.getNextFoldLine(row, fold);\n foldStart = fold ? fold.start.row : Infinity;\n }\n if (row > lastRow) {\n while (this.$lines.getLength() > index + 1)\n this.$lines.pop();\n \n break;\n }\n\n cell = this.$lines.get(++index);\n if (cell) {\n cell.row = row;\n } else {\n cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$lines.push(cell);\n }\n\n this.$renderCell(cell, config, fold, row);\n row++;\n }\n \n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n\n this.$updateGutterWidth = function(config) {\n var session = this.session;\n \n var gutterRenderer = session.gutterRenderer || this.$renderer;\n \n var firstLineNumber = session.$firstLineNumber;\n var lastLineText = this.$lines.last() ? this.$lines.last().text : \"\";\n \n if (this.$fixedWidth || session.$useWrapMode)\n lastLineText = session.getLength() + firstLineNumber - 1;\n\n var gutterWidth = gutterRenderer \n ? gutterRenderer.getWidth(session, lastLineText, config)\n : lastLineText.toString().length * config.characterWidth;\n \n var padding = this.$padding || this.$computePadding();\n gutterWidth += padding.left + padding.right;\n if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) {\n this.gutterWidth = gutterWidth;\n this.element.parentNode.style.width = \n this.element.style.width = Math.ceil(this.gutterWidth) + \"px\";\n this._signal(\"changeGutterWidth\", gutterWidth);\n }\n };\n \n this.$updateCursorRow = function() {\n if (!this.$highlightGutterLine)\n return;\n \n var position = this.session.selection.getCursor();\n if (this.$cursorRow === position.row)\n return;\n \n this.$cursorRow = position.row;\n };\n \n this.updateLineHighlight = function() {\n if (!this.$highlightGutterLine)\n return;\n var row = this.session.selection.cursor.row;\n this.$cursorRow = row;\n\n if (this.$cursorCell && this.$cursorCell.row == row)\n return;\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n var cells = this.$lines.cells;\n this.$cursorCell = null;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (cell.row >= this.$cursorRow) {\n if (cell.row > this.$cursorRow) {\n var fold = this.session.getFoldLine(this.$cursorRow);\n if (i > 0 && fold && fold.start.row == cells[i - 1].row)\n cell = cells[i - 1];\n else\n break;\n }\n cell.element.className = \"ace_gutter-active-line \" + cell.element.className;\n this.$cursorCell = cell;\n break;\n }\n }\n };\n \n this.scrollLines = function(config) {\n var oldConfig = this.config;\n this.config = config;\n \n this.$updateCursorRow();\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n \n this.$lines.moveContainer(config);\n\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n this.session.getLength() - 1);\n var oldLastRow = this.oldLastRow;\n this.oldLastRow = lastRow;\n \n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n\n if (oldConfig.firstRow < config.firstRow)\n for (var row=this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row>0; row--)\n this.$lines.shift();\n\n if (oldLastRow > lastRow)\n for (var row=this.session.getFoldedRowCount(lastRow + 1, oldLastRow); row>0; row--)\n this.$lines.pop();\n\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLines(config, config.firstRow, oldConfig.firstRow - 1));\n }\n\n if (lastRow > oldLastRow) {\n this.$lines.push(this.$renderLines(config, oldLastRow + 1, lastRow));\n }\n \n this.updateLineHighlight();\n \n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n\n this.$renderLines = function(config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row+1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n\n var cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$renderCell(cell, config, foldLine, row);\n fragment.push(cell);\n\n row++;\n }\n return fragment;\n };\n \n this.$renderCell = function(cell, config, fold, row) {\n var element = cell.element;\n \n var session = this.session;\n \n var textNode = element.childNodes[0];\n var foldWidget = element.childNodes[1];\n\n var firstLineNumber = session.$firstLineNumber;\n \n var breakpoints = session.$breakpoints;\n var decorations = session.$decorations;\n var gutterRenderer = session.gutterRenderer || this.$renderer;\n var foldWidgets = this.$showFoldWidgets && session.foldWidgets;\n var foldStart = fold ? fold.start.row : Number.MAX_VALUE;\n \n var className = \"ace_gutter-cell \";\n if (this.$highlightGutterLine) {\n if (row == this.$cursorRow || (fold && row < this.$cursorRow && row >= foldStart && this.$cursorRow <= fold.end.row)) {\n className += \"ace_gutter-active-line \";\n if (this.$cursorCell != cell) {\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n this.$cursorCell = cell;\n }\n }\n }\n \n if (breakpoints[row])\n className += breakpoints[row];\n if (decorations[row])\n className += decorations[row];\n if (this.$annotations[row])\n className += this.$annotations[row].className;\n if (element.className != className)\n element.className = className;\n\n if (foldWidgets) {\n var c = foldWidgets[row];\n if (c == null)\n c = foldWidgets[row] = session.getFoldWidget(row);\n }\n\n if (c) {\n var className = \"ace_fold-widget ace_\" + c;\n if (c == \"start\" && row == foldStart && row < fold.end.row)\n className += \" ace_closed\";\n else\n className += \" ace_open\";\n if (foldWidget.className != className)\n foldWidget.className = className;\n\n var foldHeight = config.lineHeight + \"px\";\n dom.setStyle(foldWidget.style, \"height\", foldHeight);\n dom.setStyle(foldWidget.style, \"display\", \"inline-block\");\n } else {\n if (foldWidget) {\n dom.setStyle(foldWidget.style, \"display\", \"none\");\n }\n }\n \n var text = (gutterRenderer\n ? gutterRenderer.getText(session, row)\n : row + firstLineNumber).toString();\n \n if (text !== textNode.data) {\n textNode.data = text;\n }\n \n dom.setStyle(cell.element.style, \"height\", this.$lines.computeLineHeight(row, config, session) + \"px\");\n dom.setStyle(cell.element.style, \"top\", this.$lines.computeLineTop(row, config, session) + \"px\");\n \n cell.text = text;\n return cell;\n };\n\n this.$fixedWidth = false;\n \n this.$highlightGutterLine = true;\n this.$renderer = \"\";\n this.setHighlightGutterLine = function(highlightGutterLine) {\n this.$highlightGutterLine = highlightGutterLine;\n };\n \n this.$showLineNumbers = true;\n this.$renderer = \"\";\n this.setShowLineNumbers = function(show) {\n this.$renderer = !show && {\n getWidth: function() {return 0;},\n getText: function() {return \"\";}\n };\n };\n \n this.getShowLineNumbers = function() {\n return this.$showLineNumbers;\n };\n \n this.$showFoldWidgets = true;\n this.setShowFoldWidgets = function(show) {\n if (show)\n dom.addCssClass(this.element, \"ace_folding-enabled\");\n else\n dom.removeCssClass(this.element, \"ace_folding-enabled\");\n\n this.$showFoldWidgets = show;\n this.$padding = null;\n };\n \n this.getShowFoldWidgets = function() {\n return this.$showFoldWidgets;\n };\n\n this.$computePadding = function() {\n if (!this.element.firstChild)\n return {left: 0, right: 0};\n var style = dom.computedStyle(this.element.firstChild);\n this.$padding = {};\n this.$padding.left = (parseInt(style.borderLeftWidth) || 0)\n + (parseInt(style.paddingLeft) || 0) + 1;\n this.$padding.right = (parseInt(style.borderRightWidth) || 0)\n + (parseInt(style.paddingRight) || 0);\n return this.$padding;\n };\n\n this.getRegion = function(point) {\n var padding = this.$padding || this.$computePadding();\n var rect = this.element.getBoundingClientRect();\n if (point.x < padding.left + rect.left)\n return \"markers\";\n if (this.$showFoldWidgets && point.x > rect.right - padding.right)\n return \"foldWidgets\";\n };\n\n}).call(Gutter.prototype);\n\nfunction onCreateCell(element) {\n var textNode = document.createTextNode('');\n element.appendChild(textNode);\n \n var foldWidget = dom.createElement(\"span\");\n element.appendChild(foldWidget);\n \n return element;\n}\n\nexports.Gutter = Gutter;\n\n});\n\nace.define(\"ace/layer/marker\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nvar Range = require(\"../range\").Range;\nvar dom = require(\"../lib/dom\");\n\nvar Marker = function(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_marker-layer\";\n parentEl.appendChild(this.element);\n};\n\n(function() {\n\n this.$padding = 0;\n\n this.setPadding = function(padding) {\n this.$padding = padding;\n };\n this.setSession = function(session) {\n this.session = session;\n };\n \n this.setMarkers = function(markers) {\n this.markers = markers;\n };\n \n this.elt = function(className, css) {\n var x = this.i != -1 && this.element.childNodes[this.i];\n if (!x) {\n x = document.createElement(\"div\");\n this.element.appendChild(x);\n this.i = -1;\n } else {\n this.i++;\n }\n x.style.cssText = css;\n x.className = className;\n };\n\n this.update = function(config) {\n if (!config) return;\n\n this.config = config;\n\n this.i = 0;\n var html;\n for (var key in this.markers) {\n var marker = this.markers[key];\n\n if (!marker.range) {\n marker.update(html, this, this.session, config);\n continue;\n }\n\n var range = marker.range.clipRows(config.firstRow, config.lastRow);\n if (range.isEmpty()) continue;\n\n range = range.toScreenRange(this.session);\n if (marker.renderer) {\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n marker.renderer(html, range, left, top, config);\n } else if (marker.type == \"fullLine\") {\n this.drawFullLineMarker(html, range, marker.clazz, config);\n } else if (marker.type == \"screenLine\") {\n this.drawScreenLineMarker(html, range, marker.clazz, config);\n } else if (range.isMultiLine()) {\n if (marker.type == \"text\")\n this.drawTextMarker(html, range, marker.clazz, config);\n else\n this.drawMultiLineMarker(html, range, marker.clazz, config);\n } else {\n this.drawSingleLineMarker(html, range, marker.clazz + \" ace_start\" + \" ace_br15\", config);\n }\n }\n if (this.i !=-1) {\n while (this.i < this.element.childElementCount)\n this.element.removeChild(this.element.lastChild);\n }\n };\n\n this.$getTop = function(row, layerConfig) {\n return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight;\n };\n\n function getBorderClass(tl, tr, br, bl) {\n return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0);\n }\n this.drawTextMarker = function(stringBuilder, range, clazz, layerConfig, extraStyle) {\n var session = this.session;\n var start = range.start.row;\n var end = range.end.row;\n var row = start;\n var prev = 0; \n var curr = 0;\n var next = session.getScreenLastRowColumn(row);\n var lineRange = new Range(row, range.start.column, row, curr);\n for (; row <= end; row++) {\n lineRange.start.row = lineRange.end.row = row;\n lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row);\n lineRange.end.column = next;\n prev = curr;\n curr = next;\n next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column;\n this.drawSingleLineMarker(stringBuilder, lineRange, \n clazz + (row == start ? \" ace_start\" : \"\") + \" ace_br\"\n + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end),\n layerConfig, row == end ? 0 : 1, extraStyle);\n }\n };\n this.drawMultiLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\n var padding = this.$padding;\n var height = config.lineHeight;\n var top = this.$getTop(range.start.row, config);\n var left = padding + range.start.column * config.characterWidth;\n extraStyle = extraStyle || \"\";\n\n if (this.session.$bidiHandler.isBidiRow(range.start.row)) {\n var range1 = range.clone();\n range1.end.row = range1.start.row;\n range1.end.column = this.session.getLine(range1.start.row).length;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br1 ace_start\", config, null, extraStyle);\n } else {\n this.elt(\n clazz + \" ace_br1 ace_start\",\n \"height:\"+ height+ \"px;\"+ \"right:0;\"+ \"top:\"+top+ \"px;left:\"+ left+ \"px;\" + (extraStyle || \"\")\n );\n }\n if (this.session.$bidiHandler.isBidiRow(range.end.row)) {\n var range1 = range.clone();\n range1.start.row = range1.end.row;\n range1.start.column = 0;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br12\", config, null, extraStyle);\n } else {\n top = this.$getTop(range.end.row, config);\n var width = range.end.column * config.characterWidth;\n\n this.elt(\n clazz + \" ace_br12\",\n \"height:\"+ height+ \"px;\"+\n \"width:\"+ width+ \"px;\"+\n \"top:\"+ top+ \"px;\"+\n \"left:\"+ padding+ \"px;\"+ (extraStyle || \"\")\n );\n }\n height = (range.end.row - range.start.row - 1) * config.lineHeight;\n if (height <= 0)\n return;\n top = this.$getTop(range.start.row + 1, config);\n \n var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8);\n\n this.elt(\n clazz + (radiusClass ? \" ace_br\" + radiusClass : \"\"),\n \"height:\"+ height+ \"px;\"+\n \"right:0;\"+\n \"top:\"+ top+ \"px;\"+\n \"left:\"+ padding+ \"px;\"+ (extraStyle || \"\")\n );\n };\n this.drawSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength, extraStyle) {\n if (this.session.$bidiHandler.isBidiRow(range.start.row))\n return this.drawBidiSingleLineMarker(stringBuilder, range, clazz, config, extraLength, extraStyle);\n var height = config.lineHeight;\n var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth;\n\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n\n this.elt(\n clazz,\n \"height:\"+ height+ \"px;\"+\n \"width:\"+ width+ \"px;\"+\n \"top:\"+ top+ \"px;\"+\n \"left:\"+ left+ \"px;\"+ (extraStyle || \"\")\n );\n };\n this.drawBidiSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength, extraStyle) {\n var height = config.lineHeight, top = this.$getTop(range.start.row, config), padding = this.$padding;\n var selections = this.session.$bidiHandler.getSelections(range.start.column, range.end.column);\n\n selections.forEach(function(selection) {\n this.elt(\n clazz,\n \"height:\" + height + \"px;\" +\n \"width:\" + selection.width + (extraLength || 0) + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + (padding + selection.left) + \"px;\" + (extraStyle || \"\")\n );\n }, this);\n };\n\n this.drawFullLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n if (range.start.row != range.end.row)\n height += this.$getTop(range.end.row, config) - top;\n\n this.elt(\n clazz,\n \"height:\"+ height+ \"px;\"+\n \"top:\"+ top+ \"px;\"+\n \"left:0;right:0;\"+ (extraStyle || \"\")\n );\n };\n \n this.drawScreenLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n\n this.elt(\n clazz,\n \"height:\"+ height+ \"px;\"+\n \"top:\"+ top+ \"px;\"+\n \"left:0;right:0;\"+ (extraStyle || \"\")\n );\n };\n\n}).call(Marker.prototype);\n\nexports.Marker = Marker;\n\n});\n\nace.define(\"ace/layer/text\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/layer/lines\",\"ace/lib/event_emitter\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar Lines = require(\"./lines\").Lines;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\n\nvar Text = function(parentEl) {\n this.dom = dom; \n this.element = this.dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_text-layer\";\n parentEl.appendChild(this.element);\n this.$updateEolChar = this.$updateEolChar.bind(this);\n this.$lines = new Lines(this.element);\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n\n this.EOF_CHAR = \"\\xB6\";\n this.EOL_CHAR_LF = \"\\xAC\";\n this.EOL_CHAR_CRLF = \"\\xa4\";\n this.EOL_CHAR = this.EOL_CHAR_LF;\n this.TAB_CHAR = \"\\u2014\"; //\"\\u21E5\";\n this.SPACE_CHAR = \"\\xB7\";\n this.$padding = 0;\n this.MAX_LINE_LENGTH = 10000;\n\n this.$updateEolChar = function() {\n var doc = this.session.doc;\n var unixMode = doc.getNewLineCharacter() == \"\\n\" && doc.getNewLineMode() != \"windows\";\n var EOL_CHAR = unixMode ? this.EOL_CHAR_LF : this.EOL_CHAR_CRLF;\n if (this.EOL_CHAR != EOL_CHAR) {\n this.EOL_CHAR = EOL_CHAR;\n return true;\n }\n };\n\n this.setPadding = function(padding) {\n this.$padding = padding;\n this.element.style.margin = \"0 \" + padding + \"px\";\n };\n\n this.getLineHeight = function() {\n return this.$fontMetrics.$characterSize.height || 0;\n };\n\n this.getCharacterWidth = function() {\n return this.$fontMetrics.$characterSize.width || 0;\n };\n \n this.$setFontMetrics = function(measure) {\n this.$fontMetrics = measure;\n this.$fontMetrics.on(\"changeCharacterSize\", function(e) {\n this._signal(\"changeCharacterSize\", e);\n }.bind(this));\n this.$pollSizeChanges();\n };\n\n this.checkForSizeChanges = function() {\n this.$fontMetrics.checkForSizeChanges();\n };\n this.$pollSizeChanges = function() {\n return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges();\n };\n this.setSession = function(session) {\n this.session = session;\n if (session)\n this.$computeTabString();\n };\n\n this.showInvisibles = false;\n this.showSpaces = false;\n this.showTabs = false;\n this.showEOL = false;\n this.setShowInvisibles = function(showInvisibles) {\n if (this.showInvisibles == showInvisibles)\n return false;\n\n this.showInvisibles = showInvisibles;\n if (typeof showInvisibles == \"string\") {\n this.showSpaces = /tab/i.test(showInvisibles);\n this.showTabs = /space/i.test(showInvisibles);\n this.showEOL = /eol/i.test(showInvisibles);\n } else {\n this.showSpaces = this.showTabs = this.showEOL = showInvisibles;\n }\n this.$computeTabString();\n return true;\n };\n\n this.displayIndentGuides = true;\n this.setDisplayIndentGuides = function(display) {\n if (this.displayIndentGuides == display)\n return false;\n\n this.displayIndentGuides = display;\n this.$computeTabString();\n return true;\n };\n\n this.$tabStrings = [];\n this.onChangeTabSize =\n this.$computeTabString = function() {\n var tabSize = this.session.getTabSize();\n this.tabSize = tabSize;\n var tabStr = this.$tabStrings = [0];\n for (var i = 1; i < tabSize + 1; i++) {\n if (this.showTabs) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_tab\";\n span.textContent = lang.stringRepeat(this.TAB_CHAR, i);\n tabStr.push(span);\n } else {\n tabStr.push(this.dom.createTextNode(lang.stringRepeat(\" \", i), this.element));\n }\n }\n if (this.displayIndentGuides) {\n this.$indentGuideRe = /\\s\\S| \\t|\\t |\\s$/;\n var className = \"ace_indent-guide\";\n var spaceClass = this.showSpaces ? \" ace_invisible ace_invisible_space\" : \"\";\n var spaceContent = this.showSpaces\n ? lang.stringRepeat(this.SPACE_CHAR, this.tabSize)\n : lang.stringRepeat(\" \", this.tabSize);\n\n var tabClass = this.showTabs ? \" ace_invisible ace_invisible_tab\" : \"\";\n var tabContent = this.showTabs \n ? lang.stringRepeat(this.TAB_CHAR, this.tabSize)\n : spaceContent;\n\n var span = this.dom.createElement(\"span\");\n span.className = className + spaceClass;\n span.textContent = spaceContent;\n this.$tabStrings[\" \"] = span;\n \n var span = this.dom.createElement(\"span\");\n span.className = className + tabClass;\n span.textContent = tabContent;\n this.$tabStrings[\"\\t\"] = span;\n }\n };\n\n this.updateLines = function(config, firstRow, lastRow) {\n if (this.config.lastRow != config.lastRow ||\n this.config.firstRow != config.firstRow) {\n return this.update(config);\n }\n \n this.config = config;\n\n var first = Math.max(firstRow, config.firstRow);\n var last = Math.min(lastRow, config.lastRow);\n\n var lineElements = this.element.childNodes;\n var lineElementsIdx = 0;\n\n for (var row = config.firstRow; row < first; row++) {\n var foldLine = this.session.getFoldLine(row);\n if (foldLine) {\n if (foldLine.containsRow(first)) {\n first = foldLine.start.row;\n break;\n } else {\n row = foldLine.end.row;\n }\n }\n lineElementsIdx ++;\n }\n\n var heightChanged = false;\n var row = first;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row+1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row :Infinity;\n }\n if (row > last)\n break;\n\n var lineElement = lineElements[lineElementsIdx++];\n if (lineElement) {\n this.dom.removeChildren(lineElement);\n this.$renderLine(\n lineElement, row, row == foldStart ? foldLine : false\n );\n\n if (heightChanged)\n lineElement.style.top = this.$lines.computeLineTop(row, config, this.session) + \"px\";\n\n var height = (config.lineHeight * this.session.getRowLength(row)) + \"px\";\n if (lineElement.style.height != height) {\n heightChanged = true;\n lineElement.style.height = height;\n }\n }\n row++;\n }\n if (heightChanged) {\n while (lineElementsIdx < this.$lines.cells.length) {\n var cell = this.$lines.cells[lineElementsIdx++];\n cell.element.style.top = this.$lines.computeLineTop(cell.row, config, this.session) + \"px\";\n }\n }\n };\n\n this.scrollLines = function(config) {\n var oldConfig = this.config;\n this.config = config;\n\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n \n this.$lines.moveContainer(config);\n \n var lastRow = config.lastRow;\n var oldLastRow = oldConfig ? oldConfig.lastRow : -1;\n\n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n\n if (!oldConfig || oldConfig.lastRow < config.firstRow)\n return this.update(config);\n\n if (config.lastRow < oldConfig.firstRow)\n return this.update(config);\n\n if (oldConfig.firstRow < config.firstRow)\n for (var row=this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row>0; row--)\n this.$lines.shift();\n\n if (oldConfig.lastRow > config.lastRow)\n for (var row=this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row>0; row--)\n this.$lines.pop();\n\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1));\n }\n\n if (config.lastRow > oldConfig.lastRow) {\n this.$lines.push(this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow));\n }\n };\n\n this.$renderLinesFragment = function(config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row+1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n\n var line = this.$lines.createCell(row, config, this.session);\n \n var lineEl = line.element;\n this.dom.removeChildren(lineEl);\n dom.setStyle(lineEl.style, \"height\", this.$lines.computeLineHeight(row, config, this.session) + \"px\");\n dom.setStyle(lineEl.style, \"top\", this.$lines.computeLineTop(row, config, this.session) + \"px\");\n this.$renderLine(lineEl, row, row == foldStart ? foldLine : false);\n\n if (this.$useLineGroups()) {\n lineEl.className = \"ace_line_group\";\n } else {\n lineEl.className = \"ace_line\";\n }\n fragment.push(line);\n\n row++;\n }\n return fragment;\n };\n\n this.update = function(config) {\n this.$lines.moveContainer(config);\n \n this.config = config;\n\n var firstRow = config.firstRow;\n var lastRow = config.lastRow;\n\n var lines = this.$lines;\n while (lines.getLength())\n lines.pop();\n \n lines.push(this.$renderLinesFragment(config, firstRow, lastRow));\n };\n\n this.$textToken = {\n \"text\": true,\n \"rparen\": true,\n \"lparen\": true\n };\n\n this.$renderToken = function(parent, screenColumn, token, value) {\n var self = this;\n var re = /(\\t)|( +)|([\\x00-\\x1f\\x80-\\xa0\\xad\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\uFEFF\\uFFF9-\\uFFFC]+)|(\\u3000)|([\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3001-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])/g;\n \n var valueFragment = this.dom.createFragment(this.element);\n\n var m;\n var i = 0;\n while (m = re.exec(value)) {\n var tab = m[1];\n var simpleSpace = m[2];\n var controlCharacter = m[3];\n var cjkSpace = m[4];\n var cjk = m[5];\n \n if (!self.showSpaces && simpleSpace)\n continue;\n\n var before = i != m.index ? value.slice(i, m.index) : \"\";\n\n i = m.index + m[0].length;\n \n if (before) {\n valueFragment.appendChild(this.dom.createTextNode(before, this.element));\n }\n \n if (tab) {\n var tabSize = self.session.getScreenTabSize(screenColumn + m.index);\n valueFragment.appendChild(self.$tabStrings[tabSize].cloneNode(true));\n screenColumn += tabSize - 1;\n } else if (simpleSpace) {\n if (self.showSpaces) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, simpleSpace.length);\n valueFragment.appendChild(span);\n } else {\n valueFragment.appendChild(this.com.createTextNode(simpleSpace, this.element));\n }\n } else if (controlCharacter) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space ace_invalid\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, controlCharacter.length);\n valueFragment.appendChild(span);\n } else if (cjkSpace) {\n screenColumn += 1;\n \n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = self.showSpaces ? \"ace_cjk ace_invisible ace_invisible_space\" : \"ace_cjk\";\n span.textContent = self.showSpaces ? self.SPACE_CHAR : cjkSpace;\n valueFragment.appendChild(span);\n } else if (cjk) {\n screenColumn += 1;\n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = \"ace_cjk\";\n span.textContent = cjk;\n valueFragment.appendChild(span);\n }\n }\n \n valueFragment.appendChild(this.dom.createTextNode(i ? value.slice(i) : value, this.element));\n\n if (!this.$textToken[token.type]) {\n var classes = \"ace_\" + token.type.replace(/\\./g, \" ace_\");\n var span = this.dom.createElement(\"span\");\n if (token.type == \"fold\")\n span.style.width = (token.value.length * this.config.characterWidth) + \"px\";\n \n span.className = classes;\n span.appendChild(valueFragment);\n \n parent.appendChild(span);\n }\n else {\n parent.appendChild(valueFragment);\n }\n \n return screenColumn + value.length;\n };\n\n this.renderIndentGuide = function(parent, value, max) {\n var cols = value.search(this.$indentGuideRe);\n if (cols <= 0 || cols >= max)\n return value;\n if (value[0] == \" \") {\n cols -= cols % this.tabSize;\n var count = cols/this.tabSize;\n for (var i=0; i= splitChars) {\n screenColumn = this.$renderToken(\n lineEl, screenColumn,\n token, value.substring(0, splitChars - chars)\n );\n value = value.substring(splitChars - chars);\n chars = splitChars;\n\n lineEl = this.$createLineElement();\n parent.appendChild(lineEl);\n\n lineEl.appendChild(this.dom.createTextNode(lang.stringRepeat(\"\\xa0\", splits.indent), this.element));\n\n split ++;\n screenColumn = 0;\n splitChars = splits[split] || Number.MAX_VALUE;\n }\n if (value.length != 0) {\n chars += value.length;\n screenColumn = this.$renderToken(\n lineEl, screenColumn, token, value\n );\n }\n }\n }\n \n if (splits[splits.length - 1] > this.MAX_LINE_LENGTH)\n this.$renderOverflowMessage(lineEl, screenColumn, null, \"\", true);\n };\n\n this.$renderSimpleLine = function(parent, tokens) {\n var screenColumn = 0;\n var token = tokens[0];\n var value = token.value;\n if (this.displayIndentGuides)\n value = this.renderIndentGuide(parent, value);\n if (value)\n screenColumn = this.$renderToken(parent, screenColumn, token, value);\n for (var i = 1; i < tokens.length; i++) {\n token = tokens[i];\n value = token.value;\n if (screenColumn + value.length > this.MAX_LINE_LENGTH)\n return this.$renderOverflowMessage(parent, screenColumn, token, value);\n screenColumn = this.$renderToken(parent, screenColumn, token, value);\n }\n };\n \n this.$renderOverflowMessage = function(parent, screenColumn, token, value, hide) {\n token && this.$renderToken(parent, screenColumn, token,\n value.slice(0, this.MAX_LINE_LENGTH - screenColumn));\n \n var overflowEl = this.dom.createElement(\"span\");\n overflowEl.className = \"ace_inline_button ace_keyword ace_toggle_wrap\";\n overflowEl.textContent = hide ? \"\" : \"\";\n \n parent.appendChild(overflowEl); \n };\n this.$renderLine = function(parent, row, foldLine) {\n if (!foldLine && foldLine != false)\n foldLine = this.session.getFoldLine(row);\n\n if (foldLine)\n var tokens = this.$getFoldLineTokens(row, foldLine);\n else\n var tokens = this.session.getTokens(row);\n\n var lastLineEl = parent;\n if (tokens.length) {\n var splits = this.session.getRowSplitData(row);\n if (splits && splits.length) {\n this.$renderWrappedLine(parent, tokens, splits);\n var lastLineEl = parent.lastChild;\n } else {\n var lastLineEl = parent;\n if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n this.$renderSimpleLine(lastLineEl, tokens);\n }\n } else if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n\n if (this.showEOL && lastLineEl) {\n if (foldLine)\n row = foldLine.end.row;\n\n var invisibleEl = this.dom.createElement(\"span\");\n invisibleEl.className = \"ace_invisible ace_invisible_eol\";\n invisibleEl.textContent = row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR;\n \n lastLineEl.appendChild(invisibleEl);\n }\n };\n\n this.$getFoldLineTokens = function(row, foldLine) {\n var session = this.session;\n var renderTokens = [];\n\n function addTokens(tokens, from, to) {\n var idx = 0, col = 0;\n while ((col + tokens[idx].value.length) < from) {\n col += tokens[idx].value.length;\n idx++;\n\n if (idx == tokens.length)\n return;\n }\n if (col != from) {\n var value = tokens[idx].value.substring(from - col);\n if (value.length > (to - from))\n value = value.substring(0, to - from);\n\n renderTokens.push({\n type: tokens[idx].type,\n value: value\n });\n\n col = from + value.length;\n idx += 1;\n }\n\n while (col < to && idx < tokens.length) {\n var value = tokens[idx].value;\n if (value.length + col > to) {\n renderTokens.push({\n type: tokens[idx].type,\n value: value.substring(0, to - col)\n });\n } else\n renderTokens.push(tokens[idx]);\n col += value.length;\n idx += 1;\n }\n }\n\n var tokens = session.getTokens(row);\n foldLine.walk(function(placeholder, row, column, lastColumn, isNewRow) {\n if (placeholder != null) {\n renderTokens.push({\n type: \"fold\",\n value: placeholder\n });\n } else {\n if (isNewRow)\n tokens = session.getTokens(row);\n\n if (tokens.length)\n addTokens(tokens, lastColumn, column);\n }\n }, foldLine.end.row, this.session.getLine(foldLine.end.row).length);\n\n return renderTokens;\n };\n\n this.$useLineGroups = function() {\n return this.session.getUseWrapMode();\n };\n\n this.destroy = function() {};\n}).call(Text.prototype);\n\nexports.Text = Text;\n\n});\n\nace.define(\"ace/layer/cursor\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nvar dom = require(\"../lib/dom\");\n\nvar Cursor = function(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_cursor-layer\";\n parentEl.appendChild(this.element);\n \n this.isVisible = false;\n this.isBlinking = true;\n this.blinkInterval = 1000;\n this.smoothBlinking = false;\n\n this.cursors = [];\n this.cursor = this.addCursor();\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.$updateCursors = this.$updateOpacity.bind(this);\n};\n\n(function() {\n \n this.$updateOpacity = function(val) {\n var cursors = this.cursors;\n for (var i = cursors.length; i--; )\n dom.setStyle(cursors[i].style, \"opacity\", val ? \"\" : \"0\");\n };\n\n this.$startCssAnimation = function() {\n var cursors = this.cursors;\n for (var i = cursors.length; i--; )\n cursors[i].style.animationDuration = this.blinkInterval + \"ms\";\n\n this.$isAnimating = true;\n setTimeout(function() {\n if (this.$isAnimating) {\n dom.addCssClass(this.element, \"ace_animate-blinking\");\n }\n }.bind(this));\n };\n \n this.$stopCssAnimation = function() {\n this.$isAnimating = false;\n dom.removeCssClass(this.element, \"ace_animate-blinking\");\n };\n\n this.$padding = 0;\n this.setPadding = function(padding) {\n this.$padding = padding;\n };\n\n this.setSession = function(session) {\n this.session = session;\n };\n\n this.setBlinking = function(blinking) {\n if (blinking != this.isBlinking) {\n this.isBlinking = blinking;\n this.restartTimer();\n }\n };\n\n this.setBlinkInterval = function(blinkInterval) {\n if (blinkInterval != this.blinkInterval) {\n this.blinkInterval = blinkInterval;\n this.restartTimer();\n }\n };\n\n this.setSmoothBlinking = function(smoothBlinking) {\n if (smoothBlinking != this.smoothBlinking) {\n this.smoothBlinking = smoothBlinking;\n dom.setCssClass(this.element, \"ace_smooth-blinking\", smoothBlinking);\n this.$updateCursors(true);\n this.restartTimer();\n }\n };\n\n this.addCursor = function() {\n var el = dom.createElement(\"div\");\n el.className = \"ace_cursor\";\n this.element.appendChild(el);\n this.cursors.push(el);\n return el;\n };\n\n this.removeCursor = function() {\n if (this.cursors.length > 1) {\n var el = this.cursors.pop();\n el.parentNode.removeChild(el);\n return el;\n }\n };\n\n this.hideCursor = function() {\n this.isVisible = false;\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n\n this.showCursor = function() {\n this.isVisible = true;\n dom.removeCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n\n this.restartTimer = function() {\n var update = this.$updateCursors;\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n this.$stopCssAnimation();\n\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = false;\n dom.removeCssClass(this.element, \"ace_smooth-blinking\");\n }\n \n update(true);\n\n if (!this.isBlinking || !this.blinkInterval || !this.isVisible) {\n this.$stopCssAnimation();\n return;\n }\n\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = true;\n setTimeout(function() {\n if (this.$isSmoothBlinking) {\n dom.addCssClass(this.element, \"ace_smooth-blinking\");\n }\n }.bind(this));\n }\n \n if (dom.HAS_CSS_ANIMATION) {\n this.$startCssAnimation();\n } else {\n var blink = function(){\n this.timeoutId = setTimeout(function() {\n update(false);\n }, 0.6 * this.blinkInterval);\n }.bind(this);\n \n this.intervalId = setInterval(function() {\n update(true);\n blink();\n }, this.blinkInterval);\n blink();\n }\n };\n\n this.getPixelPosition = function(position, onScreen) {\n if (!this.config || !this.session)\n return {left : 0, top : 0};\n\n if (!position)\n position = this.session.selection.getCursor();\n var pos = this.session.documentToScreenPosition(position);\n var cursorLeft = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, position.row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : pos.column * this.config.characterWidth);\n\n var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) *\n this.config.lineHeight;\n\n return {left : cursorLeft, top : cursorTop};\n };\n\n this.isCursorInView = function(pixelPos, config) {\n return pixelPos.top >= 0 && pixelPos.top < config.maxHeight;\n };\n\n this.update = function(config) {\n this.config = config;\n\n var selections = this.session.$selectionMarkers;\n var i = 0, cursorIndex = 0;\n\n if (selections === undefined || selections.length === 0){\n selections = [{cursor: null}];\n }\n\n for (var i = 0, n = selections.length; i < n; i++) {\n var pixelPos = this.getPixelPosition(selections[i].cursor, true);\n if ((pixelPos.top > config.height + config.offset ||\n pixelPos.top < 0) && i > 1) {\n continue;\n }\n\n var element = this.cursors[cursorIndex++] || this.addCursor();\n var style = element.style;\n \n if (!this.drawCursor) {\n if (!this.isCursorInView(pixelPos, config)) {\n dom.setStyle(style, \"display\", \"none\");\n } else {\n dom.setStyle(style, \"display\", \"block\");\n dom.translate(element, pixelPos.left, pixelPos.top);\n dom.setStyle(style, \"width\", Math.round(config.characterWidth) + \"px\");\n dom.setStyle(style, \"height\", config.lineHeight + \"px\");\n }\n } else {\n this.drawCursor(element, pixelPos, config, selections[i], this.session);\n }\n }\n while (this.cursors.length > cursorIndex)\n this.removeCursor();\n\n var overwrite = this.session.getOverwrite();\n this.$setOverwrite(overwrite);\n this.$pixelPos = pixelPos;\n this.restartTimer();\n };\n \n this.drawCursor = null;\n\n this.$setOverwrite = function(overwrite) {\n if (overwrite != this.overwrite) {\n this.overwrite = overwrite;\n if (overwrite)\n dom.addCssClass(this.element, \"ace_overwrite-cursors\");\n else\n dom.removeCssClass(this.element, \"ace_overwrite-cursors\");\n }\n };\n\n this.destroy = function() {\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n };\n\n}).call(Cursor.prototype);\n\nexports.Cursor = Cursor;\n\n});\n\nace.define(\"ace/scrollbar\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar MAX_SCROLL_H = 0x8000;\nvar ScrollBar = function(parent) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_scrollbar ace_scrollbar\" + this.classSuffix;\n\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"ace_scrollbar-inner\";\n this.inner.textContent = \"\\xa0\";\n this.element.appendChild(this.inner);\n\n parent.appendChild(this.element);\n\n this.setVisible(false);\n this.skipEvent = false;\n\n event.addListener(this.element, \"scroll\", this.onScroll.bind(this));\n event.addListener(this.element, \"mousedown\", event.preventDefault);\n};\n\n(function() {\n oop.implement(this, EventEmitter);\n\n this.setVisible = function(isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n}).call(ScrollBar.prototype);\nvar VScrollBar = function(parent, renderer) {\n ScrollBar.call(this, parent);\n this.scrollTop = 0;\n this.scrollHeight = 0;\n renderer.$scrollbarWidth = \n this.width = dom.scrollbarWidth(parent.ownerDocument);\n this.inner.style.width =\n this.element.style.width = (this.width || 15) + 5 + \"px\";\n this.$minWidth = 0;\n};\n\noop.inherits(VScrollBar, ScrollBar);\n\n(function() {\n\n this.classSuffix = '-v';\n this.onScroll = function() {\n if (!this.skipEvent) {\n this.scrollTop = this.element.scrollTop;\n if (this.coeff != 1) {\n var h = this.element.clientHeight / this.scrollHeight;\n this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h);\n }\n this._emit(\"scroll\", {data: this.scrollTop});\n }\n this.skipEvent = false;\n };\n this.getWidth = function() {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n this.setHeight = function(height) {\n this.element.style.height = height + \"px\";\n };\n this.setInnerHeight = \n this.setScrollHeight = function(height) {\n this.scrollHeight = height;\n if (height > MAX_SCROLL_H) {\n this.coeff = MAX_SCROLL_H / height;\n height = MAX_SCROLL_H;\n } else if (this.coeff != 1) {\n this.coeff = 1;\n }\n this.inner.style.height = height + \"px\";\n };\n this.setScrollTop = function(scrollTop) {\n if (this.scrollTop != scrollTop) {\n this.skipEvent = true;\n this.scrollTop = scrollTop;\n this.element.scrollTop = scrollTop * this.coeff;\n }\n };\n\n}).call(VScrollBar.prototype);\nvar HScrollBar = function(parent, renderer) {\n ScrollBar.call(this, parent);\n this.scrollLeft = 0;\n this.height = renderer.$scrollbarWidth;\n this.inner.style.height =\n this.element.style.height = (this.height || 15) + 5 + \"px\";\n};\n\noop.inherits(HScrollBar, ScrollBar);\n\n(function() {\n\n this.classSuffix = '-h';\n this.onScroll = function() {\n if (!this.skipEvent) {\n this.scrollLeft = this.element.scrollLeft;\n this._emit(\"scroll\", {data: this.scrollLeft});\n }\n this.skipEvent = false;\n };\n this.getHeight = function() {\n return this.isVisible ? this.height : 0;\n };\n this.setWidth = function(width) {\n this.element.style.width = width + \"px\";\n };\n this.setInnerWidth = function(width) {\n this.inner.style.width = width + \"px\";\n };\n this.setScrollWidth = function(width) {\n this.inner.style.width = width + \"px\";\n };\n this.setScrollLeft = function(scrollLeft) {\n if (this.scrollLeft != scrollLeft) {\n this.skipEvent = true;\n this.scrollLeft = this.element.scrollLeft = scrollLeft;\n }\n };\n\n}).call(HScrollBar.prototype);\n\n\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\n\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n});\n\nace.define(\"ace/renderloop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"], function(require, exports, module) {\n\"use strict\";\n\nvar event = require(\"./lib/event\");\n\n\nvar RenderLoop = function(onRender, win) {\n this.onRender = onRender;\n this.pending = false;\n this.changes = 0;\n this.$recursionLimit = 2;\n this.window = win || window;\n var _self = this;\n this._flush = function(ts) {\n _self.pending = false;\n var changes = _self.changes;\n\n if (changes) {\n event.blockIdle(100);\n _self.changes = 0;\n _self.onRender(changes);\n }\n \n if (_self.changes) {\n if (_self.$recursionLimit-- < 0) return;\n _self.schedule();\n } else {\n _self.$recursionLimit = 2;\n }\n };\n};\n\n(function() {\n\n this.schedule = function(change) {\n this.changes = this.changes | change;\n if (this.changes && !this.pending) {\n event.nextFrame(this._flush);\n this.pending = true;\n }\n };\n\n this.clear = function(change) {\n var changes = this.changes;\n this.changes = 0;\n return changes;\n };\n\n}).call(RenderLoop.prototype);\n\nexports.RenderLoop = RenderLoop;\n});\n\nace.define(\"ace/layer/font_metrics\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"], function(require, exports, module) {\n\nvar oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\n\nvar CHAR_COUNT = 256;\nvar USE_OBSERVER = typeof ResizeObserver == \"function\";\nvar L = 200;\n\nvar FontMetrics = exports.FontMetrics = function(parentEl) {\n this.el = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.el.style, true);\n \n this.$main = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$main.style);\n \n this.$measureNode = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$measureNode.style);\n \n \n this.el.appendChild(this.$main);\n this.el.appendChild(this.$measureNode);\n parentEl.appendChild(this.el);\n \n this.$measureNode.textContent = lang.stringRepeat(\"X\", CHAR_COUNT);\n \n this.$characterSize = {width: 0, height: 0};\n \n \n if (USE_OBSERVER)\n this.$addObserver();\n else\n this.checkForSizeChanges();\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n \n this.$characterSize = {width: 0, height: 0};\n \n this.$setMeasureNodeStyles = function(style, isRoot) {\n style.width = style.height = \"auto\";\n style.left = style.top = \"0px\";\n style.visibility = \"hidden\";\n style.position = \"absolute\";\n style.whiteSpace = \"pre\";\n\n if (useragent.isIE < 8) {\n style[\"font-family\"] = \"inherit\";\n } else {\n style.font = \"inherit\";\n }\n style.overflow = isRoot ? \"hidden\" : \"visible\";\n };\n\n this.checkForSizeChanges = function(size) {\n if (size === undefined)\n size = this.$measureSizes();\n if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) {\n this.$measureNode.style.fontWeight = \"bold\";\n var boldSize = this.$measureSizes();\n this.$measureNode.style.fontWeight = \"\";\n this.$characterSize = size;\n this.charSizes = Object.create(null);\n this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height;\n this._emit(\"changeCharacterSize\", {data: size});\n }\n };\n \n this.$addObserver = function() {\n var self = this;\n this.$observer = new window.ResizeObserver(function(e) {\n self.checkForSizeChanges();\n });\n this.$observer.observe(this.$measureNode);\n };\n\n this.$pollSizeChanges = function() {\n if (this.$pollSizeChangesTimer || this.$observer)\n return this.$pollSizeChangesTimer;\n var self = this;\n \n return this.$pollSizeChangesTimer = event.onIdle(function cb() {\n self.checkForSizeChanges();\n event.onIdle(cb, 500);\n }, 500);\n };\n \n this.setPolling = function(val) {\n if (val) {\n this.$pollSizeChanges();\n } else if (this.$pollSizeChangesTimer) {\n clearInterval(this.$pollSizeChangesTimer);\n this.$pollSizeChangesTimer = 0;\n }\n };\n\n this.$measureSizes = function(node) {\n var size = {\n height: (node || this.$measureNode).clientHeight,\n width: (node || this.$measureNode).clientWidth / CHAR_COUNT\n };\n if (size.width === 0 || size.height === 0)\n return null;\n return size;\n };\n\n this.$measureCharWidth = function(ch) {\n this.$main.textContent = lang.stringRepeat(ch, CHAR_COUNT);\n var rect = this.$main.getBoundingClientRect();\n return rect.width / CHAR_COUNT;\n };\n \n this.getCharacterWidth = function(ch) {\n var w = this.charSizes[ch];\n if (w === undefined) {\n w = this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width;\n }\n return w;\n };\n\n this.destroy = function() {\n clearInterval(this.$pollSizeChangesTimer);\n if (this.$observer)\n this.$observer.disconnect();\n if (this.el && this.el.parentNode)\n this.el.parentNode.removeChild(this.el);\n };\n\n \n this.$getZoom = function getZoom(element) {\n if (!element || !element.parentElement) return 1;\n return (window.getComputedStyle(element).zoom || 1) * getZoom(element.parentElement);\n };\n this.$initTransformMeasureNodes = function() {\n var t = function(t, l) {\n return [\"div\", {\n style: \"position: absolute;top:\" + t + \"px;left:\" + l + \"px;\"\n }];\n };\n this.els = dom.buildDom([t(0, 0), t(L, 0), t(0, L), t(L, L)], this.el);\n };\n this.transformCoordinates = function(clientPos, elPos) {\n if (clientPos) {\n var zoom = this.$getZoom(this.el);\n clientPos = mul(1 / zoom, clientPos);\n }\n function solve(l1, l2, r) {\n var det = l1[1] * l2[0] - l1[0] * l2[1];\n return [\n (-l2[1] * r[0] + l2[0] * r[1]) / det,\n (+l1[1] * r[0] - l1[0] * r[1]) / det\n ];\n }\n function sub(a, b) { return [a[0] - b[0], a[1] - b[1]]; }\n function add(a, b) { return [a[0] + b[0], a[1] + b[1]]; }\n function mul(a, b) { return [a * b[0], a * b[1]]; }\n\n if (!this.els)\n this.$initTransformMeasureNodes();\n \n function p(el) {\n var r = el.getBoundingClientRect();\n return [r.left, r.top];\n }\n\n var a = p(this.els[0]);\n var b = p(this.els[1]);\n var c = p(this.els[2]);\n var d = p(this.els[3]);\n\n var h = solve(sub(d, b), sub(d, c), sub(add(b, c), add(d, a)));\n\n var m1 = mul(1 + h[0], sub(b, a));\n var m2 = mul(1 + h[1], sub(c, a));\n \n if (elPos) {\n var x = elPos;\n var k = h[0] * x[0] / L + h[1] * x[1] / L + 1;\n var ut = add(mul(x[0], m1), mul(x[1], m2));\n return add(mul(1 / k / L, ut), a);\n }\n var u = sub(clientPos, a);\n var f = solve(sub(m1, mul(h[0], u)), sub(m2, mul(h[1], u)), u);\n return mul(L, f);\n };\n \n}).call(FontMetrics.prototype);\n\n});\n\nace.define(\"ace/virtual_renderer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/config\",\"ace/layer/gutter\",\"ace/layer/marker\",\"ace/layer/text\",\"ace/layer/cursor\",\"ace/scrollbar\",\"ace/scrollbar\",\"ace/renderloop\",\"ace/layer/font_metrics\",\"ace/lib/event_emitter\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar config = require(\"./config\");\nvar GutterLayer = require(\"./layer/gutter\").Gutter;\nvar MarkerLayer = require(\"./layer/marker\").Marker;\nvar TextLayer = require(\"./layer/text\").Text;\nvar CursorLayer = require(\"./layer/cursor\").Cursor;\nvar HScrollBar = require(\"./scrollbar\").HScrollBar;\nvar VScrollBar = require(\"./scrollbar\").VScrollBar;\nvar RenderLoop = require(\"./renderloop\").RenderLoop;\nvar FontMetrics = require(\"./layer/font_metrics\").FontMetrics;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar editorCss = \"\\\n.ace_br1 {border-top-left-radius : 3px;}\\\n.ace_br2 {border-top-right-radius : 3px;}\\\n.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}\\\n.ace_br4 {border-bottom-right-radius: 3px;}\\\n.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}\\\n.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}\\\n.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}\\\n.ace_br8 {border-bottom-left-radius : 3px;}\\\n.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}\\\n.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}\\\n.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_editor {\\\nposition: relative;\\\noverflow: hidden;\\\npadding: 0;\\\nfont: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;\\\ndirection: ltr;\\\ntext-align: left;\\\n-webkit-tap-highlight-color: rgba(0, 0, 0, 0);\\\n}\\\n.ace_scroller {\\\nposition: absolute;\\\noverflow: hidden;\\\ntop: 0;\\\nbottom: 0;\\\nbackground-color: inherit;\\\n-ms-user-select: none;\\\n-moz-user-select: none;\\\n-webkit-user-select: none;\\\nuser-select: none;\\\ncursor: text;\\\n}\\\n.ace_content {\\\nposition: absolute;\\\nbox-sizing: border-box;\\\nmin-width: 100%;\\\ncontain: style size layout;\\\nfont-variant-ligatures: no-common-ligatures;\\\n}\\\n.ace_dragging .ace_scroller:before{\\\nposition: absolute;\\\ntop: 0;\\\nleft: 0;\\\nright: 0;\\\nbottom: 0;\\\ncontent: '';\\\nbackground: rgba(250, 250, 250, 0.01);\\\nz-index: 1000;\\\n}\\\n.ace_dragging.ace_dark .ace_scroller:before{\\\nbackground: rgba(0, 0, 0, 0.01);\\\n}\\\n.ace_selecting, .ace_selecting * {\\\ncursor: text !important;\\\n}\\\n.ace_gutter {\\\nposition: absolute;\\\noverflow : hidden;\\\nwidth: auto;\\\ntop: 0;\\\nbottom: 0;\\\nleft: 0;\\\ncursor: default;\\\nz-index: 4;\\\n-ms-user-select: none;\\\n-moz-user-select: none;\\\n-webkit-user-select: none;\\\nuser-select: none;\\\ncontain: style size layout;\\\n}\\\n.ace_gutter-active-line {\\\nposition: absolute;\\\nleft: 0;\\\nright: 0;\\\n}\\\n.ace_scroller.ace_scroll-left {\\\nbox-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;\\\n}\\\n.ace_gutter-cell {\\\nposition: absolute;\\\ntop: 0;\\\nleft: 0;\\\nright: 0;\\\npadding-left: 19px;\\\npadding-right: 6px;\\\nbackground-repeat: no-repeat;\\\n}\\\n.ace_gutter-cell.ace_error {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==\\\");\\\nbackground-repeat: no-repeat;\\\nbackground-position: 2px center;\\\n}\\\n.ace_gutter-cell.ace_warning {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==\\\");\\\nbackground-position: 2px center;\\\n}\\\n.ace_gutter-cell.ace_info {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=\\\");\\\nbackground-position: 2px center;\\\n}\\\n.ace_dark .ace_gutter-cell.ace_info {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC\\\");\\\n}\\\n.ace_scrollbar {\\\ncontain: strict;\\\nposition: absolute;\\\nright: 0;\\\nbottom: 0;\\\nz-index: 6;\\\n}\\\n.ace_scrollbar-inner {\\\nposition: absolute;\\\ncursor: text;\\\nleft: 0;\\\ntop: 0;\\\n}\\\n.ace_scrollbar-v{\\\noverflow-x: hidden;\\\noverflow-y: scroll;\\\ntop: 0;\\\n}\\\n.ace_scrollbar-h {\\\noverflow-x: scroll;\\\noverflow-y: hidden;\\\nleft: 0;\\\n}\\\n.ace_print-margin {\\\nposition: absolute;\\\nheight: 100%;\\\n}\\\n.ace_text-input {\\\nposition: absolute;\\\nz-index: 0;\\\nwidth: 0.5em;\\\nheight: 1em;\\\nopacity: 0;\\\nbackground: transparent;\\\n-moz-appearance: none;\\\nappearance: none;\\\nborder: none;\\\nresize: none;\\\noutline: none;\\\noverflow: hidden;\\\nfont: inherit;\\\npadding: 0 1px;\\\nmargin: 0 -1px;\\\ncontain: strict;\\\n-ms-user-select: text;\\\n-moz-user-select: text;\\\n-webkit-user-select: text;\\\nuser-select: text;\\\nwhite-space: pre!important;\\\n}\\\n.ace_text-input.ace_composition {\\\nbackground: transparent;\\\ncolor: inherit;\\\nz-index: 1000;\\\nopacity: 1;\\\n}\\\n.ace_composition_placeholder { color: transparent }\\\n.ace_composition_marker { \\\nborder-bottom: 1px solid;\\\nposition: absolute;\\\nborder-radius: 0;\\\nmargin-top: 1px;\\\n}\\\n[ace_nocontext=true] {\\\ntransform: none!important;\\\nfilter: none!important;\\\nclip-path: none!important;\\\nmask : none!important;\\\ncontain: none!important;\\\nperspective: none!important;\\\nmix-blend-mode: initial!important;\\\nz-index: auto;\\\n}\\\n.ace_layer {\\\nz-index: 1;\\\nposition: absolute;\\\noverflow: hidden;\\\nword-wrap: normal;\\\nwhite-space: pre;\\\nheight: 100%;\\\nwidth: 100%;\\\nbox-sizing: border-box;\\\npointer-events: none;\\\n}\\\n.ace_gutter-layer {\\\nposition: relative;\\\nwidth: auto;\\\ntext-align: right;\\\npointer-events: auto;\\\nheight: 1000000px;\\\ncontain: style size layout;\\\n}\\\n.ace_text-layer {\\\nfont: inherit !important;\\\nposition: absolute;\\\nheight: 1000000px;\\\nwidth: 1000000px;\\\ncontain: style size layout;\\\n}\\\n.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group {\\\ncontain: style size layout;\\\nposition: absolute;\\\ntop: 0;\\\nleft: 0;\\\nright: 0;\\\n}\\\n.ace_hidpi .ace_text-layer,\\\n.ace_hidpi .ace_gutter-layer,\\\n.ace_hidpi .ace_content,\\\n.ace_hidpi .ace_gutter {\\\ncontain: strict;\\\nwill-change: transform;\\\n}\\\n.ace_hidpi .ace_text-layer > .ace_line, \\\n.ace_hidpi .ace_text-layer > .ace_line_group {\\\ncontain: strict;\\\n}\\\n.ace_cjk {\\\ndisplay: inline-block;\\\ntext-align: center;\\\n}\\\n.ace_cursor-layer {\\\nz-index: 4;\\\n}\\\n.ace_cursor {\\\nz-index: 4;\\\nposition: absolute;\\\nbox-sizing: border-box;\\\nborder-left: 2px solid;\\\ntransform: translatez(0);\\\n}\\\n.ace_multiselect .ace_cursor {\\\nborder-left-width: 1px;\\\n}\\\n.ace_slim-cursors .ace_cursor {\\\nborder-left-width: 1px;\\\n}\\\n.ace_overwrite-cursors .ace_cursor {\\\nborder-left-width: 0;\\\nborder-bottom: 1px solid;\\\n}\\\n.ace_hidden-cursors .ace_cursor {\\\nopacity: 0.2;\\\n}\\\n.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {\\\nopacity: 0;\\\n}\\\n.ace_smooth-blinking .ace_cursor {\\\ntransition: opacity 0.18s;\\\n}\\\n.ace_animate-blinking .ace_cursor {\\\nanimation-duration: 1000ms;\\\nanimation-timing-function: step-end;\\\nanimation-name: blink-ace-animate;\\\nanimation-iteration-count: infinite;\\\n}\\\n.ace_animate-blinking.ace_smooth-blinking .ace_cursor {\\\nanimation-duration: 1000ms;\\\nanimation-timing-function: ease-in-out;\\\nanimation-name: blink-ace-animate-smooth;\\\n}\\\n@keyframes blink-ace-animate {\\\nfrom, to { opacity: 1; }\\\n60% { opacity: 0; }\\\n}\\\n@keyframes blink-ace-animate-smooth {\\\nfrom, to { opacity: 1; }\\\n45% { opacity: 1; }\\\n60% { opacity: 0; }\\\n85% { opacity: 0; }\\\n}\\\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\\\nposition: absolute;\\\nz-index: 3;\\\n}\\\n.ace_marker-layer .ace_selection {\\\nposition: absolute;\\\nz-index: 5;\\\n}\\\n.ace_marker-layer .ace_bracket {\\\nposition: absolute;\\\nz-index: 6;\\\n}\\\n.ace_marker-layer .ace_error_bracket {\\\nposition: absolute;\\\nborder-bottom: 1px solid #DE5555;\\\nborder-radius: 0;\\\n}\\\n.ace_marker-layer .ace_active-line {\\\nposition: absolute;\\\nz-index: 2;\\\n}\\\n.ace_marker-layer .ace_selected-word {\\\nposition: absolute;\\\nz-index: 4;\\\nbox-sizing: border-box;\\\n}\\\n.ace_line .ace_fold {\\\nbox-sizing: border-box;\\\ndisplay: inline-block;\\\nheight: 11px;\\\nmargin-top: -2px;\\\nvertical-align: middle;\\\nbackground-image:\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\\\");\\\nbackground-repeat: no-repeat, repeat-x;\\\nbackground-position: center center, top left;\\\ncolor: transparent;\\\nborder: 1px solid black;\\\nborder-radius: 2px;\\\ncursor: pointer;\\\npointer-events: auto;\\\n}\\\n.ace_dark .ace_fold {\\\n}\\\n.ace_fold:hover{\\\nbackground-image:\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\\\");\\\n}\\\n.ace_tooltip {\\\nbackground-color: #FFF;\\\nbackground-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));\\\nborder: 1px solid gray;\\\nborder-radius: 1px;\\\nbox-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\\\ncolor: black;\\\nmax-width: 100%;\\\npadding: 3px 4px;\\\nposition: fixed;\\\nz-index: 999999;\\\nbox-sizing: border-box;\\\ncursor: default;\\\nwhite-space: pre;\\\nword-wrap: break-word;\\\nline-height: normal;\\\nfont-style: normal;\\\nfont-weight: normal;\\\nletter-spacing: normal;\\\npointer-events: none;\\\n}\\\n.ace_folding-enabled > .ace_gutter-cell {\\\npadding-right: 13px;\\\n}\\\n.ace_fold-widget {\\\nbox-sizing: border-box;\\\nmargin: 0 -12px 0 1px;\\\ndisplay: none;\\\nwidth: 11px;\\\nvertical-align: top;\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\\\");\\\nbackground-repeat: no-repeat;\\\nbackground-position: center;\\\nborder-radius: 3px;\\\nborder: 1px solid transparent;\\\ncursor: pointer;\\\n}\\\n.ace_folding-enabled .ace_fold-widget {\\\ndisplay: inline-block; \\\n}\\\n.ace_fold-widget.ace_end {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\\\");\\\n}\\\n.ace_fold-widget.ace_closed {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\\\");\\\n}\\\n.ace_fold-widget:hover {\\\nborder: 1px solid rgba(0, 0, 0, 0.3);\\\nbackground-color: rgba(255, 255, 255, 0.2);\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\\\n}\\\n.ace_fold-widget:active {\\\nborder: 1px solid rgba(0, 0, 0, 0.4);\\\nbackground-color: rgba(0, 0, 0, 0.05);\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\\\n}\\\n.ace_dark .ace_fold-widget {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\\\");\\\n}\\\n.ace_dark .ace_fold-widget.ace_end {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\\\");\\\n}\\\n.ace_dark .ace_fold-widget.ace_closed {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\\\");\\\n}\\\n.ace_dark .ace_fold-widget:hover {\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\\nbackground-color: rgba(255, 255, 255, 0.1);\\\n}\\\n.ace_dark .ace_fold-widget:active {\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\\n}\\\n.ace_inline_button {\\\nborder: 1px solid lightgray;\\\ndisplay: inline-block;\\\nmargin: -1px 8px;\\\npadding: 0 5px;\\\npointer-events: auto;\\\ncursor: pointer;\\\n}\\\n.ace_inline_button:hover {\\\nborder-color: gray;\\\nbackground: rgba(200,200,200,0.2);\\\ndisplay: inline-block;\\\npointer-events: auto;\\\n}\\\n.ace_fold-widget.ace_invalid {\\\nbackground-color: #FFB4B4;\\\nborder-color: #DE5555;\\\n}\\\n.ace_fade-fold-widgets .ace_fold-widget {\\\ntransition: opacity 0.4s ease 0.05s;\\\nopacity: 0;\\\n}\\\n.ace_fade-fold-widgets:hover .ace_fold-widget {\\\ntransition: opacity 0.05s ease 0.05s;\\\nopacity:1;\\\n}\\\n.ace_underline {\\\ntext-decoration: underline;\\\n}\\\n.ace_bold {\\\nfont-weight: bold;\\\n}\\\n.ace_nobold .ace_bold {\\\nfont-weight: normal;\\\n}\\\n.ace_italic {\\\nfont-style: italic;\\\n}\\\n.ace_error-marker {\\\nbackground-color: rgba(255, 0, 0,0.2);\\\nposition: absolute;\\\nz-index: 9;\\\n}\\\n.ace_highlight-marker {\\\nbackground-color: rgba(255, 255, 0,0.2);\\\nposition: absolute;\\\nz-index: 8;\\\n}\\\n.ace_mobile-menu {\\\nposition: absolute;\\\nline-height: 1.5;\\\nborder-radius: 4px;\\\n-ms-user-select: none;\\\n-moz-user-select: none;\\\n-webkit-user-select: none;\\\nuser-select: none;\\\nbackground: white;\\\nbox-shadow: 1px 3px 2px grey;\\\nborder: 1px solid #dcdcdc;\\\ncolor: black;\\\n}\\\n.ace_dark > .ace_mobile-menu {\\\nbackground: #333;\\\ncolor: #ccc;\\\nbox-shadow: 1px 3px 2px grey;\\\nborder: 1px solid #444;\\\n}\\\n.ace_mobile-button {\\\npadding: 2px;\\\ncursor: pointer;\\\noverflow: hidden;\\\n}\\\n.ace_mobile-button:hover {\\\nbackground-color: #eee;\\\nopacity:1;\\\n}\\\n.ace_mobile-button:active {\\\nbackground-color: #ddd;\\\n}\\\n.ace_placeholder {\\\nfont-family: arial;\\\ntransform: scale(0.9);\\\ntransform-origin: left;\\\nwhite-space: pre;\\\nopacity: 0.7;\\\nmargin: 0 10px;\\\n}\";\n\nvar useragent = require(\"./lib/useragent\");\nvar HIDE_TEXTAREA = useragent.isIE;\n\ndom.importCssString(editorCss, \"ace_editor.css\", false);\n\nvar VirtualRenderer = function(container, theme) {\n var _self = this;\n\n this.container = container || dom.createElement(\"div\");\n\n dom.addCssClass(this.container, \"ace_editor\");\n if (dom.HI_DPI) dom.addCssClass(this.container, \"ace_hidpi\");\n\n this.setTheme(theme);\n if (config.get(\"useStrictCSP\") == null) \n config.set(\"useStrictCSP\", false);\n\n this.$gutter = dom.createElement(\"div\");\n this.$gutter.className = \"ace_gutter\";\n this.container.appendChild(this.$gutter);\n this.$gutter.setAttribute(\"aria-hidden\", true);\n\n this.scroller = dom.createElement(\"div\");\n this.scroller.className = \"ace_scroller\";\n \n this.container.appendChild(this.scroller);\n\n this.content = dom.createElement(\"div\");\n this.content.className = \"ace_content\";\n this.scroller.appendChild(this.content);\n\n this.$gutterLayer = new GutterLayer(this.$gutter);\n this.$gutterLayer.on(\"changeGutterWidth\", this.onGutterResize.bind(this));\n\n this.$markerBack = new MarkerLayer(this.content);\n\n var textLayer = this.$textLayer = new TextLayer(this.content);\n this.canvas = textLayer.element;\n\n this.$markerFront = new MarkerLayer(this.content);\n\n this.$cursorLayer = new CursorLayer(this.content);\n this.$horizScroll = false;\n this.$vScroll = false;\n\n this.scrollBar = \n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.on(\"scroll\", function(e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.on(\"scroll\", function(e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n\n this.scrollTop = 0;\n this.scrollLeft = 0;\n\n this.cursorPos = {\n row : 0,\n column : 0\n };\n\n this.$fontMetrics = new FontMetrics(this.container);\n this.$textLayer.$setFontMetrics(this.$fontMetrics);\n this.$textLayer.on(\"changeCharacterSize\", function(e) {\n _self.updateCharacterSize();\n _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height);\n _self._signal(\"changeCharacterSize\", e);\n });\n\n this.$size = {\n width: 0,\n height: 0,\n scrollerHeight: 0,\n scrollerWidth: 0,\n $dirty: true\n };\n\n this.layerConfig = {\n width : 1,\n padding : 0,\n firstRow : 0,\n firstRowScreen: 0,\n lastRow : 0,\n lineHeight : 0,\n characterWidth : 0,\n minHeight : 1,\n maxHeight : 1,\n offset : 0,\n height : 1,\n gutterOffset: 1\n };\n \n this.scrollMargin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n \n this.margin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n \n this.$keepTextAreaAtCursor = !useragent.isIOS;\n\n this.$loop = new RenderLoop(\n this.$renderChanges.bind(this),\n this.container.ownerDocument.defaultView\n );\n this.$loop.schedule(this.CHANGE_FULL);\n\n this.updateCharacterSize();\n this.setPadding(4);\n config.resetOptions(this);\n config._signal(\"renderer\", this);\n};\n\n(function() {\n\n this.CHANGE_CURSOR = 1;\n this.CHANGE_MARKER = 2;\n this.CHANGE_GUTTER = 4;\n this.CHANGE_SCROLL = 8;\n this.CHANGE_LINES = 16;\n this.CHANGE_TEXT = 32;\n this.CHANGE_SIZE = 64;\n this.CHANGE_MARKER_BACK = 128;\n this.CHANGE_MARKER_FRONT = 256;\n this.CHANGE_FULL = 512;\n this.CHANGE_H_SCROLL = 1024;\n\n oop.implement(this, EventEmitter);\n\n this.updateCharacterSize = function() {\n if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) {\n this.$allowBoldFonts = this.$textLayer.allowBoldFonts;\n this.setStyle(\"ace_nobold\", !this.$allowBoldFonts);\n }\n\n this.layerConfig.characterWidth =\n this.characterWidth = this.$textLayer.getCharacterWidth();\n this.layerConfig.lineHeight =\n this.lineHeight = this.$textLayer.getLineHeight();\n this.$updatePrintMargin();\n dom.setStyle(this.scroller.style, \"line-height\", this.lineHeight + \"px\");\n };\n this.setSession = function(session) {\n if (this.session)\n this.session.doc.off(\"changeNewLineMode\", this.onChangeNewLineMode);\n \n this.session = session;\n if (session && this.scrollMargin.top && session.getScrollTop() <= 0)\n session.setScrollTop(-this.scrollMargin.top);\n\n this.$cursorLayer.setSession(session);\n this.$markerBack.setSession(session);\n this.$markerFront.setSession(session);\n this.$gutterLayer.setSession(session);\n this.$textLayer.setSession(session);\n if (!session)\n return;\n \n this.$loop.schedule(this.CHANGE_FULL);\n this.session.$setFontMetrics(this.$fontMetrics);\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n \n this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this);\n this.onChangeNewLineMode();\n this.session.doc.on(\"changeNewLineMode\", this.onChangeNewLineMode);\n };\n this.updateLines = function(firstRow, lastRow, force) {\n if (lastRow === undefined)\n lastRow = Infinity;\n\n if (!this.$changedLines) {\n this.$changedLines = {\n firstRow: firstRow,\n lastRow: lastRow\n };\n }\n else {\n if (this.$changedLines.firstRow > firstRow)\n this.$changedLines.firstRow = firstRow;\n\n if (this.$changedLines.lastRow < lastRow)\n this.$changedLines.lastRow = lastRow;\n }\n if (this.$changedLines.lastRow < this.layerConfig.firstRow) {\n if (force)\n this.$changedLines.lastRow = this.layerConfig.lastRow;\n else\n return;\n }\n if (this.$changedLines.firstRow > this.layerConfig.lastRow)\n return;\n this.$loop.schedule(this.CHANGE_LINES);\n };\n\n this.onChangeNewLineMode = function() {\n this.$loop.schedule(this.CHANGE_TEXT);\n this.$textLayer.$updateEolChar();\n this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR);\n };\n \n this.onChangeTabSize = function() {\n this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER);\n this.$textLayer.onChangeTabSize();\n };\n this.updateText = function() {\n this.$loop.schedule(this.CHANGE_TEXT);\n };\n this.updateFull = function(force) {\n if (force)\n this.$renderChanges(this.CHANGE_FULL, true);\n else\n this.$loop.schedule(this.CHANGE_FULL);\n };\n this.updateFontSize = function() {\n this.$textLayer.checkForSizeChanges();\n };\n\n this.$changes = 0;\n this.$updateSizeAsync = function() {\n if (this.$loop.pending)\n this.$size.$dirty = true;\n else\n this.onResize();\n };\n this.onResize = function(force, gutterWidth, width, height) {\n if (this.resizing > 2)\n return;\n else if (this.resizing > 0)\n this.resizing++;\n else\n this.resizing = force ? 1 : 0;\n var el = this.container;\n if (!height)\n height = el.clientHeight || el.scrollHeight;\n if (!width)\n width = el.clientWidth || el.scrollWidth;\n var changes = this.$updateCachedSize(force, gutterWidth, width, height);\n\n \n if (!this.$size.scrollerHeight || (!width && !height))\n return this.resizing = 0;\n\n if (force)\n this.$gutterLayer.$padding = null;\n\n if (force)\n this.$renderChanges(changes | this.$changes, true);\n else\n this.$loop.schedule(changes | this.$changes);\n\n if (this.resizing)\n this.resizing = 0;\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n };\n \n this.$updateCachedSize = function(force, gutterWidth, width, height) {\n height -= (this.$extraHeight || 0);\n var changes = 0;\n var size = this.$size;\n var oldSize = {\n width: size.width,\n height: size.height,\n scrollerHeight: size.scrollerHeight,\n scrollerWidth: size.scrollerWidth\n };\n if (height && (force || size.height != height)) {\n size.height = height;\n changes |= this.CHANGE_SIZE;\n\n size.scrollerHeight = size.height;\n if (this.$horizScroll)\n size.scrollerHeight -= this.scrollBarH.getHeight();\n this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + \"px\";\n\n changes = changes | this.CHANGE_SCROLL;\n }\n\n if (width && (force || size.width != width)) {\n changes |= this.CHANGE_SIZE;\n size.width = width;\n \n if (gutterWidth == null)\n gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0;\n \n this.gutterWidth = gutterWidth;\n \n dom.setStyle(this.scrollBarH.element.style, \"left\", gutterWidth + \"px\");\n dom.setStyle(this.scroller.style, \"left\", gutterWidth + this.margin.left + \"px\");\n size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth() - this.margin.h);\n dom.setStyle(this.$gutter.style, \"left\", this.margin.left + \"px\");\n \n var right = this.scrollBarV.getWidth() + \"px\";\n dom.setStyle(this.scrollBarH.element.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"bottom\", this.scrollBarH.getHeight());\n\n if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force) {\n changes |= this.CHANGE_FULL;\n }\n }\n \n size.$dirty = !width || !height;\n\n if (changes)\n this._signal(\"resize\", oldSize);\n\n return changes;\n };\n\n this.onGutterResize = function(width) {\n var gutterWidth = this.$showGutter ? width : 0;\n if (gutterWidth != this.gutterWidth)\n this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height);\n\n if (this.session.getUseWrapMode() && this.adjustWrapLimit()) {\n this.$loop.schedule(this.CHANGE_FULL);\n } else if (this.$size.$dirty) {\n this.$loop.schedule(this.CHANGE_FULL);\n } else {\n this.$computeLayerConfig();\n }\n };\n this.adjustWrapLimit = function() {\n var availableWidth = this.$size.scrollerWidth - this.$padding * 2;\n var limit = Math.floor(availableWidth / this.characterWidth);\n return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn);\n };\n this.setAnimatedScroll = function(shouldAnimate){\n this.setOption(\"animatedScroll\", shouldAnimate);\n };\n this.getAnimatedScroll = function() {\n return this.$animatedScroll;\n };\n this.setShowInvisibles = function(showInvisibles) {\n this.setOption(\"showInvisibles\", showInvisibles);\n this.session.$bidiHandler.setShowInvisibles(showInvisibles);\n };\n this.getShowInvisibles = function() {\n return this.getOption(\"showInvisibles\");\n };\n this.getDisplayIndentGuides = function() {\n return this.getOption(\"displayIndentGuides\");\n };\n\n this.setDisplayIndentGuides = function(display) {\n this.setOption(\"displayIndentGuides\", display);\n };\n this.setShowPrintMargin = function(showPrintMargin) {\n this.setOption(\"showPrintMargin\", showPrintMargin);\n };\n this.getShowPrintMargin = function() {\n return this.getOption(\"showPrintMargin\");\n };\n this.setPrintMarginColumn = function(showPrintMargin) {\n this.setOption(\"printMarginColumn\", showPrintMargin);\n };\n this.getPrintMarginColumn = function() {\n return this.getOption(\"printMarginColumn\");\n };\n this.getShowGutter = function(){\n return this.getOption(\"showGutter\");\n };\n this.setShowGutter = function(show){\n return this.setOption(\"showGutter\", show);\n };\n\n this.getFadeFoldWidgets = function(){\n return this.getOption(\"fadeFoldWidgets\");\n };\n\n this.setFadeFoldWidgets = function(show) {\n this.setOption(\"fadeFoldWidgets\", show);\n };\n\n this.setHighlightGutterLine = function(shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n\n this.getHighlightGutterLine = function() {\n return this.getOption(\"highlightGutterLine\");\n };\n\n this.$updatePrintMargin = function() {\n if (!this.$showPrintMargin && !this.$printMarginEl)\n return;\n\n if (!this.$printMarginEl) {\n var containerEl = dom.createElement(\"div\");\n containerEl.className = \"ace_layer ace_print-margin-layer\";\n this.$printMarginEl = dom.createElement(\"div\");\n this.$printMarginEl.className = \"ace_print-margin\";\n containerEl.appendChild(this.$printMarginEl);\n this.content.insertBefore(containerEl, this.content.firstChild);\n }\n\n var style = this.$printMarginEl.style;\n style.left = Math.round(this.characterWidth * this.$printMarginColumn + this.$padding) + \"px\";\n style.visibility = this.$showPrintMargin ? \"visible\" : \"hidden\";\n \n if (this.session && this.session.$wrap == -1)\n this.adjustWrapLimit();\n };\n this.getContainerElement = function() {\n return this.container;\n };\n this.getMouseEventTarget = function() {\n return this.scroller;\n };\n this.getTextAreaContainer = function() {\n return this.container;\n };\n this.$moveTextAreaToCursor = function() {\n if (this.$isMousePressed) return;\n var style = this.textarea.style;\n var composition = this.$composition;\n if (!this.$keepTextAreaAtCursor && !composition) {\n dom.translate(this.textarea, -100, 0);\n return;\n }\n var pixelPos = this.$cursorLayer.$pixelPos;\n if (!pixelPos)\n return;\n if (composition && composition.markerRange)\n pixelPos = this.$cursorLayer.getPixelPosition(composition.markerRange.start, true);\n \n var config = this.layerConfig;\n var posTop = pixelPos.top;\n var posLeft = pixelPos.left;\n posTop -= config.offset;\n\n var h = composition && composition.useTextareaForIME ? this.lineHeight : HIDE_TEXTAREA ? 0 : 1;\n if (posTop < 0 || posTop > config.height - h) {\n dom.translate(this.textarea, 0, 0);\n return;\n }\n\n var w = 1;\n var maxTop = this.$size.height - h;\n if (!composition) {\n posTop += this.lineHeight;\n }\n else {\n if (composition.useTextareaForIME) {\n var val = this.textarea.value;\n w = this.characterWidth * (this.session.$getStringScreenWidth(val)[0]);\n }\n else {\n posTop += this.lineHeight + 2;\n }\n }\n \n posLeft -= this.scrollLeft;\n if (posLeft > this.$size.scrollerWidth - w)\n posLeft = this.$size.scrollerWidth - w;\n\n posLeft += this.gutterWidth + this.margin.left;\n\n dom.setStyle(style, \"height\", h + \"px\");\n dom.setStyle(style, \"width\", w + \"px\");\n dom.translate(this.textarea, Math.min(posLeft, this.$size.scrollerWidth - w), Math.min(posTop, maxTop));\n };\n this.getFirstVisibleRow = function() {\n return this.layerConfig.firstRow;\n };\n this.getFirstFullyVisibleRow = function() {\n return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1);\n };\n this.getLastFullyVisibleRow = function() {\n var config = this.layerConfig;\n var lastRow = config.lastRow;\n var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight;\n if (top - this.session.getScrollTop() > config.height - config.lineHeight)\n return lastRow - 1;\n return lastRow;\n };\n this.getLastVisibleRow = function() {\n return this.layerConfig.lastRow;\n };\n\n this.$padding = null;\n this.setPadding = function(padding) {\n this.$padding = padding;\n this.$textLayer.setPadding(padding);\n this.$cursorLayer.setPadding(padding);\n this.$markerFront.setPadding(padding);\n this.$markerBack.setPadding(padding);\n this.$loop.schedule(this.CHANGE_FULL);\n this.$updatePrintMargin();\n };\n \n this.setScrollMargin = function(top, bottom, left, right) {\n var sm = this.scrollMargin;\n sm.top = top|0;\n sm.bottom = bottom|0;\n sm.right = right|0;\n sm.left = left|0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n if (sm.top && this.scrollTop <= 0 && this.session)\n this.session.setScrollTop(-sm.top);\n this.updateFull();\n };\n \n this.setMargin = function(top, bottom, left, right) {\n var sm = this.margin;\n sm.top = top|0;\n sm.bottom = bottom|0;\n sm.right = right|0;\n sm.left = left|0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n this.$updateCachedSize(true, this.gutterWidth, this.$size.width, this.$size.height);\n this.updateFull();\n };\n this.getHScrollBarAlwaysVisible = function() {\n return this.$hScrollBarAlwaysVisible;\n };\n this.setHScrollBarAlwaysVisible = function(alwaysVisible) {\n this.setOption(\"hScrollBarAlwaysVisible\", alwaysVisible);\n };\n this.getVScrollBarAlwaysVisible = function() {\n return this.$vScrollBarAlwaysVisible;\n };\n this.setVScrollBarAlwaysVisible = function(alwaysVisible) {\n this.setOption(\"vScrollBarAlwaysVisible\", alwaysVisible);\n };\n\n this.$updateScrollBarV = function() {\n var scrollHeight = this.layerConfig.maxHeight;\n var scrollerHeight = this.$size.scrollerHeight;\n if (!this.$maxLines && this.$scrollPastEnd) {\n scrollHeight -= (scrollerHeight - this.lineHeight) * this.$scrollPastEnd;\n if (this.scrollTop > scrollHeight - scrollerHeight) {\n scrollHeight = this.scrollTop + scrollerHeight;\n this.scrollBarV.scrollTop = null;\n }\n }\n this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v);\n this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top);\n };\n this.$updateScrollBarH = function() {\n this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h);\n this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left);\n };\n \n this.$frozen = false;\n this.freeze = function() {\n this.$frozen = true;\n };\n \n this.unfreeze = function() {\n this.$frozen = false;\n };\n\n this.$renderChanges = function(changes, force) {\n if (this.$changes) {\n changes |= this.$changes;\n this.$changes = 0;\n }\n if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) {\n this.$changes |= changes;\n return; \n } \n if (this.$size.$dirty) {\n this.$changes |= changes;\n return this.onResize(true);\n }\n if (!this.lineHeight) {\n this.$textLayer.checkForSizeChanges();\n }\n \n this._signal(\"beforeRender\", changes);\n \n if (this.session && this.session.$bidiHandler)\n this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);\n\n var config = this.layerConfig;\n if (changes & this.CHANGE_FULL ||\n changes & this.CHANGE_SIZE ||\n changes & this.CHANGE_TEXT ||\n changes & this.CHANGE_LINES ||\n changes & this.CHANGE_SCROLL ||\n changes & this.CHANGE_H_SCROLL\n ) {\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) {\n var st = this.scrollTop + (config.firstRow - this.layerConfig.firstRow) * this.lineHeight;\n if (st > 0) {\n this.scrollTop = st;\n changes = changes | this.CHANGE_SCROLL;\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n }\n }\n config = this.layerConfig;\n this.$updateScrollBarV();\n if (changes & this.CHANGE_H_SCROLL)\n this.$updateScrollBarH();\n \n dom.translate(this.content, -this.scrollLeft, -config.offset);\n \n var width = config.width + 2 * this.$padding + \"px\";\n var height = config.minHeight + \"px\";\n \n dom.setStyle(this.content.style, \"width\", width);\n dom.setStyle(this.content.style, \"height\", height);\n }\n if (changes & this.CHANGE_H_SCROLL) {\n dom.translate(this.content, -this.scrollLeft, -config.offset);\n this.scroller.className = this.scrollLeft <= 0 ? \"ace_scroller\" : \"ace_scroller ace_scroll-left\";\n }\n if (changes & this.CHANGE_FULL) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n if (changes & this.CHANGE_SCROLL) {\n this.$changedLines = null;\n if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES)\n this.$textLayer.update(config);\n else\n this.$textLayer.scrollLines(config);\n\n if (this.$showGutter) {\n if (changes & this.CHANGE_GUTTER || changes & this.CHANGE_LINES)\n this.$gutterLayer.update(config);\n else\n this.$gutterLayer.scrollLines(config);\n }\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n\n if (changes & this.CHANGE_TEXT) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n }\n else if (changes & this.CHANGE_LINES) {\n if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter)\n this.$gutterLayer.update(config);\n }\n else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) {\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n }\n else if (changes & this.CHANGE_CURSOR) {\n if (this.$highlightGutterLine)\n this.$gutterLayer.updateLineHighlight(config);\n }\n\n if (changes & this.CHANGE_CURSOR) {\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n }\n\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) {\n this.$markerFront.update(config);\n }\n\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) {\n this.$markerBack.update(config);\n }\n\n this._signal(\"afterRender\", changes);\n };\n\n \n this.$autosize = function() {\n var height = this.session.getScreenLength() * this.lineHeight;\n var maxHeight = this.$maxLines * this.lineHeight;\n var desiredHeight = Math.min(maxHeight, \n Math.max((this.$minLines || 1) * this.lineHeight, height)\n ) + this.scrollMargin.v + (this.$extraHeight || 0);\n if (this.$horizScroll)\n desiredHeight += this.scrollBarH.getHeight();\n if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight)\n desiredHeight = this.$maxPixelHeight;\n \n var hideScrollbars = desiredHeight <= 2 * this.lineHeight;\n var vScroll = !hideScrollbars && height > maxHeight;\n \n if (desiredHeight != this.desiredHeight ||\n this.$size.height != this.desiredHeight || vScroll != this.$vScroll) {\n if (vScroll != this.$vScroll) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n \n var w = this.container.clientWidth;\n this.container.style.height = desiredHeight + \"px\";\n this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight);\n this.desiredHeight = desiredHeight;\n \n this._signal(\"autosize\");\n }\n };\n \n this.$computeLayerConfig = function() {\n var session = this.session;\n var size = this.$size;\n \n var hideScrollbars = size.height <= 2 * this.lineHeight;\n var screenLines = this.session.getScreenLength();\n var maxHeight = screenLines * this.lineHeight;\n\n var longestLine = this.$getLongestLine();\n \n var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible ||\n size.scrollerWidth - longestLine - 2 * this.$padding < 0);\n\n var hScrollChanged = this.$horizScroll !== horizScroll;\n if (hScrollChanged) {\n this.$horizScroll = horizScroll;\n this.scrollBarH.setVisible(horizScroll);\n }\n var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine\n if (this.$maxLines && this.lineHeight > 1)\n this.$autosize();\n\n var minHeight = size.scrollerHeight + this.lineHeight;\n \n var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd\n ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd\n : 0;\n maxHeight += scrollPastEnd;\n \n var sm = this.scrollMargin;\n this.session.setScrollTop(Math.max(-sm.top,\n Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom)));\n\n this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, \n longestLine + 2 * this.$padding - size.scrollerWidth + sm.right)));\n \n var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible ||\n size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top);\n var vScrollChanged = vScrollBefore !== vScroll;\n if (vScrollChanged) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n\n var offset = this.scrollTop % this.lineHeight;\n var lineCount = Math.ceil(minHeight / this.lineHeight) - 1;\n var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight));\n var lastRow = firstRow + lineCount;\n var firstRowScreen, firstRowHeight;\n var lineHeight = this.lineHeight;\n firstRow = session.screenToDocumentRow(firstRow, 0);\n var foldLine = session.getFoldLine(firstRow);\n if (foldLine) {\n firstRow = foldLine.start.row;\n }\n\n firstRowScreen = session.documentToScreenRow(firstRow, 0);\n firstRowHeight = session.getRowLength(firstRow) * lineHeight;\n\n lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1);\n minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight +\n firstRowHeight;\n\n offset = this.scrollTop - firstRowScreen * lineHeight;\n\n var changes = 0;\n if (this.layerConfig.width != longestLine || hScrollChanged) \n changes = this.CHANGE_H_SCROLL;\n if (hScrollChanged || vScrollChanged) {\n changes |= this.$updateCachedSize(true, this.gutterWidth, size.width, size.height);\n this._signal(\"scrollbarVisibilityChanged\");\n if (vScrollChanged)\n longestLine = this.$getLongestLine();\n }\n \n this.layerConfig = {\n width : longestLine,\n padding : this.$padding,\n firstRow : firstRow,\n firstRowScreen: firstRowScreen,\n lastRow : lastRow,\n lineHeight : lineHeight,\n characterWidth : this.characterWidth,\n minHeight : minHeight,\n maxHeight : maxHeight,\n offset : offset,\n gutterOffset : lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0,\n height : this.$size.scrollerHeight\n };\n\n if (this.session.$bidiHandler)\n this.session.$bidiHandler.setContentWidth(longestLine - this.$padding);\n\n return changes;\n };\n\n this.$updateLines = function() {\n if (!this.$changedLines) return;\n var firstRow = this.$changedLines.firstRow;\n var lastRow = this.$changedLines.lastRow;\n this.$changedLines = null;\n\n var layerConfig = this.layerConfig;\n\n if (firstRow > layerConfig.lastRow + 1) { return; }\n if (lastRow < layerConfig.firstRow) { return; }\n if (lastRow === Infinity) {\n if (this.$showGutter)\n this.$gutterLayer.update(layerConfig);\n this.$textLayer.update(layerConfig);\n return;\n }\n this.$textLayer.updateLines(layerConfig, firstRow, lastRow);\n return true;\n };\n\n this.$getLongestLine = function() {\n var charCount = this.session.getScreenWidth();\n if (this.showInvisibles && !this.session.$useWrapMode)\n charCount += 1;\n \n if (this.$textLayer && charCount > this.$textLayer.MAX_LINE_LENGTH)\n charCount = this.$textLayer.MAX_LINE_LENGTH + 30;\n\n return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth));\n };\n this.updateFrontMarkers = function() {\n this.$markerFront.setMarkers(this.session.getMarkers(true));\n this.$loop.schedule(this.CHANGE_MARKER_FRONT);\n };\n this.updateBackMarkers = function() {\n this.$markerBack.setMarkers(this.session.getMarkers());\n this.$loop.schedule(this.CHANGE_MARKER_BACK);\n };\n this.addGutterDecoration = function(row, className){\n this.$gutterLayer.addGutterDecoration(row, className);\n };\n this.removeGutterDecoration = function(row, className){\n this.$gutterLayer.removeGutterDecoration(row, className);\n };\n this.updateBreakpoints = function(rows) {\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n this.setAnnotations = function(annotations) {\n this.$gutterLayer.setAnnotations(annotations);\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n this.updateCursor = function() {\n this.$loop.schedule(this.CHANGE_CURSOR);\n };\n this.hideCursor = function() {\n this.$cursorLayer.hideCursor();\n };\n this.showCursor = function() {\n this.$cursorLayer.showCursor();\n };\n\n this.scrollSelectionIntoView = function(anchor, lead, offset) {\n this.scrollCursorIntoView(anchor, offset);\n this.scrollCursorIntoView(lead, offset);\n };\n this.scrollCursorIntoView = function(cursor, offset, $viewMargin) {\n if (this.$size.scrollerHeight === 0)\n return;\n\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n\n var left = pos.left;\n var top = pos.top;\n \n var topMargin = $viewMargin && $viewMargin.top || 0;\n var bottomMargin = $viewMargin && $viewMargin.bottom || 0;\n \n var scrollTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop;\n \n if (scrollTop + topMargin > top) {\n if (offset && scrollTop + topMargin > top + this.lineHeight)\n top -= offset * this.$size.scrollerHeight;\n if (top === 0)\n top = -this.scrollMargin.top;\n this.session.setScrollTop(top);\n } else if (scrollTop + this.$size.scrollerHeight - bottomMargin < top + this.lineHeight) {\n if (offset && scrollTop + this.$size.scrollerHeight - bottomMargin < top - this.lineHeight)\n top += offset * this.$size.scrollerHeight;\n this.session.setScrollTop(top + this.lineHeight + bottomMargin - this.$size.scrollerHeight);\n }\n\n var scrollLeft = this.scrollLeft;\n\n if (scrollLeft > left) {\n if (left < this.$padding + 2 * this.layerConfig.characterWidth)\n left = -this.scrollMargin.left;\n this.session.setScrollLeft(left);\n } else if (scrollLeft + this.$size.scrollerWidth < left + this.characterWidth) {\n this.session.setScrollLeft(Math.round(left + this.characterWidth - this.$size.scrollerWidth));\n } else if (scrollLeft <= this.$padding && left - scrollLeft < this.characterWidth) {\n this.session.setScrollLeft(0);\n }\n };\n this.getScrollTop = function() {\n return this.session.getScrollTop();\n };\n this.getScrollLeft = function() {\n return this.session.getScrollLeft();\n };\n this.getScrollTopRow = function() {\n return this.scrollTop / this.lineHeight;\n };\n this.getScrollBottomRow = function() {\n return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1);\n };\n this.scrollToRow = function(row) {\n this.session.setScrollTop(row * this.lineHeight);\n };\n\n this.alignCursor = function(cursor, alignment) {\n if (typeof cursor == \"number\")\n cursor = {row: cursor, column: 0};\n\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var h = this.$size.scrollerHeight - this.lineHeight;\n var offset = pos.top - h * (alignment || 0);\n\n this.session.setScrollTop(offset);\n return offset;\n };\n\n this.STEPS = 8;\n this.$calcSteps = function(fromValue, toValue){\n var i = 0;\n var l = this.STEPS;\n var steps = [];\n\n var func = function(t, x_min, dx) {\n return dx * (Math.pow(t - 1, 3) + 1) + x_min;\n };\n\n for (i = 0; i < l; ++i)\n steps.push(func(i / this.STEPS, fromValue, toValue - fromValue));\n\n return steps;\n };\n this.scrollToLine = function(line, center, animate, callback) {\n var pos = this.$cursorLayer.getPixelPosition({row: line, column: 0});\n var offset = pos.top;\n if (center)\n offset -= this.$size.scrollerHeight / 2;\n\n var initialScroll = this.scrollTop;\n this.session.setScrollTop(offset);\n if (animate !== false)\n this.animateScrolling(initialScroll, callback);\n };\n\n this.animateScrolling = function(fromValue, callback) {\n var toValue = this.scrollTop;\n if (!this.$animatedScroll)\n return;\n var _self = this;\n \n if (fromValue == toValue)\n return;\n \n if (this.$scrollAnimation) {\n var oldSteps = this.$scrollAnimation.steps;\n if (oldSteps.length) {\n fromValue = oldSteps[0];\n if (fromValue == toValue)\n return;\n }\n }\n \n var steps = _self.$calcSteps(fromValue, toValue);\n this.$scrollAnimation = {from: fromValue, to: toValue, steps: steps};\n\n clearInterval(this.$timer);\n\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n this.$timer = setInterval(function() {\n if (!_self.session) \n return clearInterval(_self.$timer);\n if (steps.length) {\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n } else if (toValue != null) {\n _self.session.$scrollTop = -1;\n _self.session.setScrollTop(toValue);\n toValue = null;\n } else {\n _self.$timer = clearInterval(_self.$timer);\n _self.$scrollAnimation = null;\n callback && callback();\n }\n }, 10);\n };\n this.scrollToY = function(scrollTop) {\n if (this.scrollTop !== scrollTop) {\n this.$loop.schedule(this.CHANGE_SCROLL);\n this.scrollTop = scrollTop;\n }\n };\n this.scrollToX = function(scrollLeft) {\n if (this.scrollLeft !== scrollLeft)\n this.scrollLeft = scrollLeft;\n this.$loop.schedule(this.CHANGE_H_SCROLL);\n };\n this.scrollTo = function(x, y) {\n this.session.setScrollTop(y);\n this.session.setScrollLeft(x);\n };\n this.scrollBy = function(deltaX, deltaY) {\n deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY);\n deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX);\n };\n this.isScrollableBy = function(deltaX, deltaY) {\n if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top)\n return true;\n if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight\n - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom)\n return true;\n if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left)\n return true;\n if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth\n - this.layerConfig.width < -1 + this.scrollMargin.right)\n return true;\n };\n\n this.pixelToScreenCoordinates = function(x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = {top:0, left: 0};\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n } else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n \n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n\n return {row: row, column: col, side: offset - col > 0 ? 1 : -1, offsetX: offsetX};\n };\n\n this.screenToTextCoordinates = function(x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = {top:0, left: 0};\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n } else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n\n return this.session.screenToDocumentPosition(row, Math.max(col, 0), offsetX);\n };\n this.textToScreenCoordinates = function(row, column) {\n var canvasPos = this.scroller.getBoundingClientRect();\n var pos = this.session.documentToScreenPosition(row, column);\n\n var x = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : Math.round(pos.column * this.characterWidth));\n \n var y = pos.row * this.lineHeight;\n\n return {\n pageX: canvasPos.left + x - this.scrollLeft,\n pageY: canvasPos.top + y - this.scrollTop\n };\n };\n this.visualizeFocus = function() {\n dom.addCssClass(this.container, \"ace_focus\");\n };\n this.visualizeBlur = function() {\n dom.removeCssClass(this.container, \"ace_focus\");\n };\n this.showComposition = function(composition) {\n this.$composition = composition;\n if (!composition.cssText) {\n composition.cssText = this.textarea.style.cssText;\n }\n if (composition.useTextareaForIME == undefined)\n composition.useTextareaForIME = this.$useTextareaForIME;\n \n if (this.$useTextareaForIME) {\n dom.addCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = \"\";\n this.$moveTextAreaToCursor();\n this.$cursorLayer.element.style.display = \"none\";\n }\n else {\n composition.markerId = this.session.addMarker(composition.markerRange, \"ace_composition_marker\", \"text\");\n }\n };\n this.setCompositionText = function(text) {\n var cursor = this.session.selection.cursor;\n this.addToken(text, \"composition_placeholder\", cursor.row, cursor.column);\n this.$moveTextAreaToCursor();\n };\n this.hideComposition = function() {\n if (!this.$composition)\n return;\n \n if (this.$composition.markerId)\n this.session.removeMarker(this.$composition.markerId);\n\n dom.removeCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = this.$composition.cssText;\n var cursor = this.session.selection.cursor;\n this.removeExtraToken(cursor.row, cursor.column);\n this.$composition = null;\n this.$cursorLayer.element.style.display = \"\";\n };\n \n this.addToken = function(text, type, row, column) {\n var session = this.session;\n session.bgTokenizer.lines[row] = null;\n var newToken = {type: type, value: text};\n var tokens = session.getTokens(row);\n if (column == null) {\n tokens.push(newToken);\n } else {\n var l = 0;\n for (var i =0; i < tokens.length; i++) {\n var token = tokens[i];\n l += token.value.length;\n if (column <= l) {\n var diff = token.value.length - (l - column);\n var before = token.value.slice(0, diff);\n var after = token.value.slice(diff);\n \n tokens.splice(i, 1, {type: token.type, value: before}, newToken, {type: token.type, value: after});\n break;\n }\n }\n }\n this.updateLines(row, row);\n };\n\n this.removeExtraToken = function(row, column) {\n this.updateLines(row, row);\n };\n this.setTheme = function(theme, cb) {\n var _self = this;\n this.$themeId = theme;\n _self._dispatchEvent('themeChange',{theme:theme});\n\n if (!theme || typeof theme == \"string\") {\n var moduleName = theme || this.$options.theme.initialValue;\n config.loadModule([\"theme\", moduleName], afterLoad);\n } else {\n afterLoad(theme);\n }\n\n function afterLoad(module) {\n if (_self.$themeId != theme)\n return cb && cb();\n if (!module || !module.cssClass)\n throw new Error(\"couldn't load module \" + theme + \" or it didn't call define\");\n if (module.$id)\n _self.$themeId = module.$id;\n dom.importCssString(\n module.cssText,\n module.cssClass,\n _self.container\n );\n\n if (_self.theme)\n dom.removeCssClass(_self.container, _self.theme.cssClass);\n\n var padding = \"padding\" in module ? module.padding \n : \"padding\" in (_self.theme || {}) ? 4 : _self.$padding;\n if (_self.$padding && padding != _self.$padding)\n _self.setPadding(padding);\n _self.$theme = module.cssClass;\n\n _self.theme = module;\n dom.addCssClass(_self.container, module.cssClass);\n dom.setCssClass(_self.container, \"ace_dark\", module.isDark);\n if (_self.$size) {\n _self.$size.width = 0;\n _self.$updateSizeAsync();\n }\n\n _self._dispatchEvent('themeLoaded', {theme:module});\n cb && cb();\n }\n };\n this.getTheme = function() {\n return this.$themeId;\n };\n this.setStyle = function(style, include) {\n dom.setCssClass(this.container, style, include !== false);\n };\n this.unsetStyle = function(style) {\n dom.removeCssClass(this.container, style);\n };\n \n this.setCursorStyle = function(style) {\n dom.setStyle(this.scroller.style, \"cursor\", style);\n };\n this.setMouseCursor = function(cursorStyle) {\n dom.setStyle(this.scroller.style, \"cursor\", cursorStyle);\n };\n \n this.attachToShadowRoot = function() {\n dom.importCssString(editorCss, \"ace_editor.css\", this.container);\n };\n this.destroy = function() {\n this.freeze();\n this.$fontMetrics.destroy();\n this.$cursorLayer.destroy();\n this.removeAllListeners();\n this.container.textContent = \"\";\n };\n\n}).call(VirtualRenderer.prototype);\n\n\nconfig.defineOptions(VirtualRenderer.prototype, \"renderer\", {\n animatedScroll: {initialValue: false},\n showInvisibles: {\n set: function(value) {\n if (this.$textLayer.setShowInvisibles(value))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: false\n },\n showPrintMargin: {\n set: function() { this.$updatePrintMargin(); },\n initialValue: true\n },\n printMarginColumn: {\n set: function() { this.$updatePrintMargin(); },\n initialValue: 80\n },\n printMargin: {\n set: function(val) {\n if (typeof val == \"number\")\n this.$printMarginColumn = val;\n this.$showPrintMargin = !!val;\n this.$updatePrintMargin();\n },\n get: function() {\n return this.$showPrintMargin && this.$printMarginColumn; \n }\n },\n showGutter: {\n set: function(show){\n this.$gutter.style.display = show ? \"block\" : \"none\";\n this.$loop.schedule(this.CHANGE_FULL);\n this.onGutterResize();\n },\n initialValue: true\n },\n fadeFoldWidgets: {\n set: function(show) {\n dom.setCssClass(this.$gutter, \"ace_fade-fold-widgets\", show);\n },\n initialValue: false\n },\n showFoldWidgets: {\n set: function(show) {\n this.$gutterLayer.setShowFoldWidgets(show);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n displayIndentGuides: {\n set: function(show) {\n if (this.$textLayer.setDisplayIndentGuides(show))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: true\n },\n highlightGutterLine: {\n set: function(shouldHighlight) {\n this.$gutterLayer.setHighlightGutterLine(shouldHighlight);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n hScrollBarAlwaysVisible: {\n set: function(val) {\n if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n vScrollBarAlwaysVisible: {\n set: function(val) {\n if (!this.$vScrollBarAlwaysVisible || !this.$vScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n fontSize: {\n set: function(size) {\n if (typeof size == \"number\")\n size = size + \"px\";\n this.container.style.fontSize = size;\n this.updateFontSize();\n },\n initialValue: 12\n },\n fontFamily: {\n set: function(name) {\n this.container.style.fontFamily = name;\n this.updateFontSize();\n }\n },\n maxLines: {\n set: function(val) {\n this.updateFull();\n }\n },\n minLines: {\n set: function(val) {\n if (!(this.$minLines < 0x1ffffffffffff))\n this.$minLines = 0;\n this.updateFull();\n }\n },\n maxPixelHeight: {\n set: function(val) {\n this.updateFull();\n },\n initialValue: 0\n },\n scrollPastEnd: {\n set: function(val) {\n val = +val || 0;\n if (this.$scrollPastEnd == val)\n return;\n this.$scrollPastEnd = val;\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: 0,\n handlesSet: true\n },\n fixedWidthGutter: {\n set: function(val) {\n this.$gutterLayer.$fixedWidth = !!val;\n this.$loop.schedule(this.CHANGE_GUTTER);\n }\n },\n theme: {\n set: function(val) { this.setTheme(val); },\n get: function() { return this.$themeId || this.theme; },\n initialValue: \"./theme/textmate\",\n handlesSet: true\n },\n hasCssTransforms: {\n },\n useTextareaForIME: {\n initialValue: !useragent.isMobile && !useragent.isIE\n }\n});\n\nexports.VirtualRenderer = VirtualRenderer;\n});\n\nace.define(\"ace/worker/worker_client\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/net\",\"ace/lib/event_emitter\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar net = require(\"../lib/net\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar config = require(\"../config\");\n\nfunction $workerBlob(workerUrl) {\n var script = \"importScripts('\" + net.qualifyURL(workerUrl) + \"');\";\n try {\n return new Blob([script], {\"type\": \"application/javascript\"});\n } catch (e) { // Backwards-compatibility\n var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;\n var blobBuilder = new BlobBuilder();\n blobBuilder.append(script);\n return blobBuilder.getBlob(\"application/javascript\");\n }\n}\n\nfunction createWorker(workerUrl) {\n if (typeof Worker == \"undefined\")\n return { postMessage: function() {}, terminate: function() {} };\n if (config.get(\"loadWorkerFromBlob\")) {\n var blob = $workerBlob(workerUrl);\n var URL = window.URL || window.webkitURL;\n var blobURL = URL.createObjectURL(blob);\n return new Worker(blobURL);\n }\n return new Worker(workerUrl);\n}\n\nvar WorkerClient = function(worker) {\n if (!worker.postMessage)\n worker = this.$createWorkerFromOldConfig.apply(this, arguments);\n\n this.$worker = worker;\n this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.onMessage = this.onMessage.bind(this);\n\n this.callbackId = 1;\n this.callbacks = {};\n\n this.$worker.onmessage = this.onMessage;\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$createWorkerFromOldConfig = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) {\n if (require.nameToUrl && !require.toUrl)\n require.toUrl = require.nameToUrl;\n\n if (config.get(\"packaged\") || !require.toUrl) {\n workerUrl = workerUrl || config.moduleUrl(mod, \"worker\");\n } else {\n var normalizePath = this.$normalizePath;\n workerUrl = workerUrl || normalizePath(require.toUrl(\"ace/worker/worker.js\", null, \"_\"));\n\n var tlns = {};\n topLevelNamespaces.forEach(function(ns) {\n tlns[ns] = normalizePath(require.toUrl(ns, null, \"_\").replace(/(\\.js)?(\\?.*)?$/, \"\"));\n });\n }\n\n this.$worker = createWorker(workerUrl);\n if (importScripts) {\n this.send(\"importScripts\", importScripts);\n }\n this.$worker.postMessage({\n init : true,\n tlns : tlns,\n module : mod,\n classname : classname\n });\n return this.$worker;\n };\n\n this.onMessage = function(e) {\n var msg = e.data;\n switch (msg.type) {\n case \"event\":\n this._signal(msg.name, {data: msg.data});\n break;\n case \"call\":\n var callback = this.callbacks[msg.id];\n if (callback) {\n callback(msg.data);\n delete this.callbacks[msg.id];\n }\n break;\n case \"error\":\n this.reportError(msg.data);\n break;\n case \"log\":\n window.console && console.log && console.log.apply(console, msg.data);\n break;\n }\n };\n \n this.reportError = function(err) {\n window.console && console.error && console.error(err);\n };\n\n this.$normalizePath = function(path) {\n return net.qualifyURL(path);\n };\n\n this.terminate = function() {\n this._signal(\"terminate\", {});\n this.deltaQueue = null;\n this.$worker.terminate();\n this.$worker = null;\n if (this.$doc)\n this.$doc.off(\"change\", this.changeListener);\n this.$doc = null;\n };\n\n this.send = function(cmd, args) {\n this.$worker.postMessage({command: cmd, args: args});\n };\n\n this.call = function(cmd, args, callback) {\n if (callback) {\n var id = this.callbackId++;\n this.callbacks[id] = callback;\n args.push(id);\n }\n this.send(cmd, args);\n };\n\n this.emit = function(event, data) {\n try {\n if (data.data && data.data.err)\n data.data.err = {message: data.data.err.message, stack: data.data.err.stack, code: data.data.err.code};\n this.$worker.postMessage({event: event, data: {data: data.data}});\n }\n catch(ex) {\n console.error(ex.stack);\n }\n };\n\n this.attachToDocument = function(doc) {\n if (this.$doc)\n this.terminate();\n\n this.$doc = doc;\n this.call(\"setValue\", [doc.getValue()]);\n doc.on(\"change\", this.changeListener);\n };\n\n this.changeListener = function(delta) {\n if (!this.deltaQueue) {\n this.deltaQueue = [];\n setTimeout(this.$sendDeltaQueue, 0);\n }\n if (delta.action == \"insert\")\n this.deltaQueue.push(delta.start, delta.lines);\n else\n this.deltaQueue.push(delta.start, delta.end);\n };\n\n this.$sendDeltaQueue = function() {\n var q = this.deltaQueue;\n if (!q) return;\n this.deltaQueue = null;\n if (q.length > 50 && q.length > this.$doc.getLength() >> 1) {\n this.call(\"setValue\", [this.$doc.getValue()]);\n } else\n this.emit(\"change\", {data: q});\n };\n\n}).call(WorkerClient.prototype);\n\n\nvar UIWorkerClient = function(topLevelNamespaces, mod, classname) {\n var main = null;\n var emitSync = false;\n var sender = Object.create(EventEmitter);\n\n var messageBuffer = [];\n var workerClient = new WorkerClient({\n messageBuffer: messageBuffer,\n terminate: function() {},\n postMessage: function(e) {\n messageBuffer.push(e);\n if (!main) return;\n if (emitSync)\n setTimeout(processNext);\n else\n processNext();\n }\n });\n\n workerClient.setEmitSync = function(val) { emitSync = val; };\n\n var processNext = function() {\n var msg = messageBuffer.shift();\n if (msg.command)\n main[msg.command].apply(main, msg.args);\n else if (msg.event)\n sender._signal(msg.event, msg.data);\n };\n\n sender.postMessage = function(msg) {\n workerClient.onMessage({data: msg});\n };\n sender.callback = function(data, callbackId) {\n this.postMessage({type: \"call\", id: callbackId, data: data});\n };\n sender.emit = function(name, data) {\n this.postMessage({type: \"event\", name: name, data: data});\n };\n\n config.loadModule([\"worker\", mod], function(Main) {\n main = new Main[classname](sender);\n while (messageBuffer.length)\n processNext();\n });\n\n return workerClient;\n};\n\nexports.UIWorkerClient = UIWorkerClient;\nexports.WorkerClient = WorkerClient;\nexports.createWorker = createWorker;\n\n\n});\n\nace.define(\"ace/placeholder\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/lib/oop\"], function(require, exports, module) {\n\"use strict\";\n\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar oop = require(\"./lib/oop\");\n\nvar PlaceHolder = function(session, length, pos, others, mainClass, othersClass) {\n var _self = this;\n this.length = length;\n this.session = session;\n this.doc = session.getDocument();\n this.mainClass = mainClass;\n this.othersClass = othersClass;\n this.$onUpdate = this.onUpdate.bind(this);\n this.doc.on(\"change\", this.$onUpdate);\n this.$others = others;\n \n this.$onCursorChange = function() {\n setTimeout(function() {\n _self.onCursorChange();\n });\n };\n \n this.$pos = pos;\n var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || {length: -1};\n this.$undoStackDepth = undoStack.length;\n this.setup();\n\n session.selection.on(\"changeCursor\", this.$onCursorChange);\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.setup = function() {\n var _self = this;\n var doc = this.doc;\n var session = this.session;\n \n this.selectionBefore = session.selection.toJSON();\n if (session.selection.inMultiSelectMode)\n session.selection.toSingleRange();\n\n this.pos = doc.createAnchor(this.$pos.row, this.$pos.column);\n var pos = this.pos;\n pos.$insertRight = true;\n pos.detach();\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false);\n this.others = [];\n this.$others.forEach(function(other) {\n var anchor = doc.createAnchor(other.row, other.column);\n anchor.$insertRight = true;\n anchor.detach();\n _self.others.push(anchor);\n });\n session.setUndoSelect(false);\n };\n this.showOtherMarkers = function() {\n if (this.othersActive) return;\n var session = this.session;\n var _self = this;\n this.othersActive = true;\n this.others.forEach(function(anchor) {\n anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column+_self.length), _self.othersClass, null, false);\n });\n };\n this.hideOtherMarkers = function() {\n if (!this.othersActive) return;\n this.othersActive = false;\n for (var i = 0; i < this.others.length; i++) {\n this.session.removeMarker(this.others[i].markerId);\n }\n };\n this.onUpdate = function(delta) {\n if (this.$updating)\n return this.updateAnchors(delta);\n \n var range = delta;\n if (range.start.row !== range.end.row) return;\n if (range.start.row !== this.pos.row) return;\n this.$updating = true;\n var lengthDiff = delta.action === \"insert\" ? range.end.column - range.start.column : range.start.column - range.end.column;\n var inMainRange = range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1;\n var distanceFromStart = range.start.column - this.pos.column;\n \n this.updateAnchors(delta);\n \n if (inMainRange)\n this.length += lengthDiff;\n\n if (inMainRange && !this.session.$fromUndo) {\n if (delta.action === 'insert') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart};\n this.doc.insertMergedLines(newPos, delta.lines);\n }\n } else if (delta.action === 'remove') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart};\n this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff));\n }\n }\n }\n \n this.$updating = false;\n this.updateMarkers();\n };\n \n this.updateAnchors = function(delta) {\n this.pos.onChange(delta);\n for (var i = this.others.length; i--;)\n this.others[i].onChange(delta);\n this.updateMarkers();\n };\n \n this.updateMarkers = function() {\n if (this.$updating)\n return;\n var _self = this;\n var session = this.session;\n var updateMarker = function(pos, className) {\n session.removeMarker(pos.markerId);\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column+_self.length), className, null, false);\n };\n updateMarker(this.pos, this.mainClass);\n for (var i = this.others.length; i--;)\n updateMarker(this.others[i], this.othersClass);\n };\n\n this.onCursorChange = function(event) {\n if (this.$updating || !this.session) return;\n var pos = this.session.selection.getCursor();\n if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) {\n this.showOtherMarkers();\n this._emit(\"cursorEnter\", event);\n } else {\n this.hideOtherMarkers();\n this._emit(\"cursorLeave\", event);\n }\n }; \n this.detach = function() {\n this.session.removeMarker(this.pos && this.pos.markerId);\n this.hideOtherMarkers();\n this.doc.off(\"change\", this.$onUpdate);\n this.session.selection.off(\"changeCursor\", this.$onCursorChange);\n this.session.setUndoSelect(true);\n this.session = null;\n };\n this.cancel = function() {\n if (this.$undoStackDepth === -1)\n return;\n var undoManager = this.session.getUndoManager();\n var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth;\n for (var i = 0; i < undosRequired; i++) {\n undoManager.undo(this.session, true);\n }\n if (this.selectionBefore)\n this.session.selection.fromJSON(this.selectionBefore);\n };\n}).call(PlaceHolder.prototype);\n\n\nexports.PlaceHolder = PlaceHolder;\n});\n\nace.define(\"ace/mouse/multi_select_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module) {\n\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\n\nfunction onMouseDown(e) {\n var ev = e.domEvent;\n var alt = ev.altKey;\n var shift = ev.shiftKey;\n var ctrl = ev.ctrlKey;\n var accel = e.getAccelKey();\n var button = e.getButton();\n \n if (ctrl && useragent.isMac)\n button = ev.button;\n\n if (e.editor.inMultiSelectMode && button == 2) {\n e.editor.textInput.onContextMenu(e.domEvent);\n return;\n }\n \n if (!ctrl && !alt && !accel) {\n if (button === 0 && e.editor.inMultiSelectMode)\n e.editor.exitMultiSelectMode();\n return;\n }\n \n if (button !== 0)\n return;\n\n var editor = e.editor;\n var selection = editor.selection;\n var isMultiSelect = editor.inMultiSelectMode;\n var pos = e.getDocumentPosition();\n var cursor = selection.getCursor();\n var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor));\n\n var mouseX = e.x, mouseY = e.y;\n var onMouseSelection = function(e) {\n mouseX = e.clientX;\n mouseY = e.clientY;\n };\n \n var session = editor.session;\n var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var screenCursor = screenAnchor;\n \n var selectionMode;\n if (editor.$mouseHandler.$enableJumpToDef) {\n if (ctrl && alt || accel && alt)\n selectionMode = shift ? \"block\" : \"add\";\n else if (alt && editor.$blockSelectEnabled)\n selectionMode = \"block\";\n } else {\n if (accel && !alt) {\n selectionMode = \"add\";\n if (!isMultiSelect && shift)\n return;\n } else if (alt && editor.$blockSelectEnabled) {\n selectionMode = \"block\";\n }\n }\n \n if (selectionMode && useragent.isMac && ev.ctrlKey) {\n editor.$mouseHandler.cancelContextMenu();\n }\n\n if (selectionMode == \"add\") {\n if (!isMultiSelect && inSelection)\n return; // dragging\n\n if (!isMultiSelect) {\n var range = selection.toOrientedRange();\n editor.addSelectionMarker(range);\n }\n\n var oldRange = selection.rangeList.rangeAtPoint(pos);\n \n editor.inVirtualSelectionMode = true;\n \n if (shift) {\n oldRange = null;\n range = selection.ranges[0] || range;\n editor.removeSelectionMarker(range);\n }\n editor.once(\"mouseup\", function() {\n var tmpSel = selection.toOrientedRange();\n\n if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor))\n selection.substractPoint(tmpSel.cursor);\n else {\n if (shift) {\n selection.substractPoint(range.cursor);\n } else if (range) {\n editor.removeSelectionMarker(range);\n selection.addRange(range);\n }\n selection.addRange(tmpSel);\n }\n editor.inVirtualSelectionMode = false;\n });\n\n } else if (selectionMode == \"block\") {\n e.stop();\n editor.inVirtualSelectionMode = true; \n var initialRange;\n var rectSel = [];\n var blockSelect = function() {\n var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column, newCursor.offsetX);\n\n if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead))\n return;\n screenCursor = newCursor;\n \n editor.selection.moveToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n\n editor.removeSelectionMarkers(rectSel);\n rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor);\n if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty())\n rectSel[0] = editor.$mouseHandler.$clickSelection.clone();\n rectSel.forEach(editor.addSelectionMarker, editor);\n editor.updateSelectionMarkers();\n };\n if (isMultiSelect && !accel) {\n selection.toSingleRange();\n } else if (!isMultiSelect && accel) {\n initialRange = selection.toOrientedRange();\n editor.addSelectionMarker(initialRange);\n }\n \n if (shift)\n screenAnchor = session.documentToScreenPosition(selection.lead); \n else\n selection.moveToPosition(pos);\n \n screenCursor = {row: -1, column: -1};\n\n var onMouseSelectionEnd = function(e) {\n blockSelect();\n clearInterval(timerId);\n editor.removeSelectionMarkers(rectSel);\n if (!rectSel.length)\n rectSel = [selection.toOrientedRange()];\n if (initialRange) {\n editor.removeSelectionMarker(initialRange);\n selection.toSingleRange(initialRange);\n }\n for (var i = 0; i < rectSel.length; i++)\n selection.addRange(rectSel[i]);\n editor.inVirtualSelectionMode = false;\n editor.$mouseHandler.$clickSelection = null;\n };\n\n var onSelectionInterval = blockSelect;\n\n event.capture(editor.container, onMouseSelection, onMouseSelectionEnd);\n var timerId = setInterval(function() {onSelectionInterval();}, 20);\n\n return e.preventDefault();\n }\n}\n\n\nexports.onMouseDown = onMouseDown;\n\n});\n\nace.define(\"ace/commands/multi_select_commands\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\"], function(require, exports, module) {\nexports.defaultCommands = [{\n name: \"addCursorAbove\",\n description: \"Add cursor above\",\n exec: function(editor) { editor.selectMoreLines(-1); },\n bindKey: {win: \"Ctrl-Alt-Up\", mac: \"Ctrl-Alt-Up\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"addCursorBelow\",\n description: \"Add cursor below\",\n exec: function(editor) { editor.selectMoreLines(1); },\n bindKey: {win: \"Ctrl-Alt-Down\", mac: \"Ctrl-Alt-Down\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"addCursorAboveSkipCurrent\",\n description: \"Add cursor above (skip current)\",\n exec: function(editor) { editor.selectMoreLines(-1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Up\", mac: \"Ctrl-Alt-Shift-Up\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"addCursorBelowSkipCurrent\",\n description: \"Add cursor below (skip current)\",\n exec: function(editor) { editor.selectMoreLines(1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Down\", mac: \"Ctrl-Alt-Shift-Down\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectMoreBefore\",\n description: \"Select more before\",\n exec: function(editor) { editor.selectMore(-1); },\n bindKey: {win: \"Ctrl-Alt-Left\", mac: \"Ctrl-Alt-Left\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectMoreAfter\",\n description: \"Select more after\",\n exec: function(editor) { editor.selectMore(1); },\n bindKey: {win: \"Ctrl-Alt-Right\", mac: \"Ctrl-Alt-Right\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectNextBefore\",\n description: \"Select next before\",\n exec: function(editor) { editor.selectMore(-1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Left\", mac: \"Ctrl-Alt-Shift-Left\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectNextAfter\",\n description: \"Select next after\",\n exec: function(editor) { editor.selectMore(1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Right\", mac: \"Ctrl-Alt-Shift-Right\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"toggleSplitSelectionIntoLines\",\n description: \"Split into lines\",\n exec: function(editor) {\n if (editor.multiSelect.rangeCount > 1)\n editor.multiSelect.joinSelections();\n else\n editor.multiSelect.splitIntoLines();\n },\n bindKey: {win: \"Ctrl-Alt-L\", mac: \"Ctrl-Alt-L\"},\n readOnly: true\n}, {\n name: \"splitSelectionIntoLines\",\n description: \"Split into lines\",\n exec: function(editor) { editor.multiSelect.splitIntoLines(); },\n readOnly: true\n}, {\n name: \"alignCursors\",\n description: \"Align cursors\",\n exec: function(editor) { editor.alignCursors(); },\n bindKey: {win: \"Ctrl-Alt-A\", mac: \"Ctrl-Alt-A\"},\n scrollIntoView: \"cursor\"\n}, {\n name: \"findAll\",\n description: \"Find all\",\n exec: function(editor) { editor.findAll(); },\n bindKey: {win: \"Ctrl-Alt-K\", mac: \"Ctrl-Alt-G\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}];\nexports.multiSelectCommands = [{\n name: \"singleSelection\",\n description: \"Single selection\",\n bindKey: \"esc\",\n exec: function(editor) { editor.exitMultiSelectMode(); },\n scrollIntoView: \"cursor\",\n readOnly: true,\n isAvailable: function(editor) {return editor && editor.inMultiSelectMode;}\n}];\n\nvar HashHandler = require(\"../keyboard/hash_handler\").HashHandler;\nexports.keyboardHandler = new HashHandler(exports.multiSelectCommands);\n\n});\n\nace.define(\"ace/multi_select\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/range\",\"ace/selection\",\"ace/mouse/multi_select_handler\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/commands/multi_select_commands\",\"ace/search\",\"ace/edit_session\",\"ace/editor\",\"ace/config\"], function(require, exports, module) {\n\nvar RangeList = require(\"./range_list\").RangeList;\nvar Range = require(\"./range\").Range;\nvar Selection = require(\"./selection\").Selection;\nvar onMouseDown = require(\"./mouse/multi_select_handler\").onMouseDown;\nvar event = require(\"./lib/event\");\nvar lang = require(\"./lib/lang\");\nvar commands = require(\"./commands/multi_select_commands\");\nexports.commands = commands.defaultCommands.concat(commands.multiSelectCommands);\nvar Search = require(\"./search\").Search;\nvar search = new Search();\n\nfunction find(session, needle, dir) {\n search.$options.wrap = true;\n search.$options.needle = needle;\n search.$options.backwards = dir == -1;\n return search.find(session);\n}\nvar EditSession = require(\"./edit_session\").EditSession;\n(function() {\n this.getSelectionMarkers = function() {\n return this.$selectionMarkers;\n };\n}).call(EditSession.prototype);\n(function() {\n this.ranges = null;\n this.rangeList = null;\n this.addRange = function(range, $blockChangeEvents) {\n if (!range)\n return;\n\n if (!this.inMultiSelectMode && this.rangeCount === 0) {\n var oldRange = this.toOrientedRange();\n this.rangeList.add(oldRange);\n this.rangeList.add(range);\n if (this.rangeList.ranges.length != 2) {\n this.rangeList.removeAll();\n return $blockChangeEvents || this.fromOrientedRange(range);\n }\n this.rangeList.removeAll();\n this.rangeList.add(oldRange);\n this.$onAddRange(oldRange);\n }\n\n if (!range.cursor)\n range.cursor = range.end;\n\n var removed = this.rangeList.add(range);\n\n this.$onAddRange(range);\n\n if (removed.length)\n this.$onRemoveRange(removed);\n\n if (this.rangeCount > 1 && !this.inMultiSelectMode) {\n this._signal(\"multiSelect\");\n this.inMultiSelectMode = true;\n this.session.$undoSelect = false;\n this.rangeList.attach(this.session);\n }\n\n return $blockChangeEvents || this.fromOrientedRange(range);\n };\n this.toSingleRange = function(range) {\n range = range || this.ranges[0];\n var removed = this.rangeList.removeAll();\n if (removed.length)\n this.$onRemoveRange(removed);\n\n range && this.fromOrientedRange(range);\n };\n this.substractPoint = function(pos) {\n var removed = this.rangeList.substractPoint(pos);\n if (removed) {\n this.$onRemoveRange(removed);\n return removed[0];\n }\n };\n this.mergeOverlappingRanges = function() {\n var removed = this.rangeList.merge();\n if (removed.length)\n this.$onRemoveRange(removed);\n };\n\n this.$onAddRange = function(range) {\n this.rangeCount = this.rangeList.ranges.length;\n this.ranges.unshift(range);\n this._signal(\"addRange\", {range: range});\n };\n\n this.$onRemoveRange = function(removed) {\n this.rangeCount = this.rangeList.ranges.length;\n if (this.rangeCount == 1 && this.inMultiSelectMode) {\n var lastRange = this.rangeList.ranges.pop();\n removed.push(lastRange);\n this.rangeCount = 0;\n }\n\n for (var i = removed.length; i--; ) {\n var index = this.ranges.indexOf(removed[i]);\n this.ranges.splice(index, 1);\n }\n\n this._signal(\"removeRange\", {ranges: removed});\n\n if (this.rangeCount === 0 && this.inMultiSelectMode) {\n this.inMultiSelectMode = false;\n this._signal(\"singleSelect\");\n this.session.$undoSelect = true;\n this.rangeList.detach(this.session);\n }\n\n lastRange = lastRange || this.ranges[0];\n if (lastRange && !lastRange.isEqual(this.getRange()))\n this.fromOrientedRange(lastRange);\n };\n this.$initRangeList = function() {\n if (this.rangeList)\n return;\n\n this.rangeList = new RangeList();\n this.ranges = [];\n this.rangeCount = 0;\n };\n this.getAllRanges = function() {\n return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()];\n };\n this.splitIntoLines = function () {\n var ranges = this.ranges.length ? this.ranges : [this.getRange()];\n var newRanges = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var row = range.start.row;\n var endRow = range.end.row;\n if (row === endRow) {\n newRanges.push(range.clone());\n } else {\n newRanges.push(new Range(row, range.start.column, row, this.session.getLine(row).length));\n while (++row < endRow)\n newRanges.push(this.getLineRange(row, true));\n newRanges.push(new Range(endRow, 0, endRow, range.end.column));\n }\n if (i == 0 && !this.isBackwards())\n newRanges = newRanges.reverse();\n }\n this.toSingleRange();\n for (var i = newRanges.length; i--;)\n this.addRange(newRanges[i]);\n };\n \n this.joinSelections = function () {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n };\n this.toggleBlockSelection = function () {\n if (this.rangeCount > 1) {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n } else {\n var cursor = this.session.documentToScreenPosition(this.cursor);\n var anchor = this.session.documentToScreenPosition(this.anchor);\n\n var rectSel = this.rectangularRangeBlock(cursor, anchor);\n rectSel.forEach(this.addRange, this);\n }\n };\n this.rectangularRangeBlock = function(screenCursor, screenAnchor, includeEmptyLines) {\n var rectSel = [];\n\n var xBackwards = screenCursor.column < screenAnchor.column;\n if (xBackwards) {\n var startColumn = screenCursor.column;\n var endColumn = screenAnchor.column;\n var startOffsetX = screenCursor.offsetX;\n var endOffsetX = screenAnchor.offsetX;\n } else {\n var startColumn = screenAnchor.column;\n var endColumn = screenCursor.column;\n var startOffsetX = screenAnchor.offsetX;\n var endOffsetX = screenCursor.offsetX;\n }\n\n var yBackwards = screenCursor.row < screenAnchor.row;\n if (yBackwards) {\n var startRow = screenCursor.row;\n var endRow = screenAnchor.row;\n } else {\n var startRow = screenAnchor.row;\n var endRow = screenCursor.row;\n }\n\n if (startColumn < 0)\n startColumn = 0;\n if (startRow < 0)\n startRow = 0;\n\n if (startRow == endRow)\n includeEmptyLines = true;\n\n var docEnd;\n for (var row = startRow; row <= endRow; row++) {\n var range = Range.fromPoints(\n this.session.screenToDocumentPosition(row, startColumn, startOffsetX),\n this.session.screenToDocumentPosition(row, endColumn, endOffsetX)\n );\n if (range.isEmpty()) {\n if (docEnd && isSamePoint(range.end, docEnd))\n break;\n docEnd = range.end;\n }\n range.cursor = xBackwards ? range.start : range.end;\n rectSel.push(range);\n }\n\n if (yBackwards)\n rectSel.reverse();\n\n if (!includeEmptyLines) {\n var end = rectSel.length - 1;\n while (rectSel[end].isEmpty() && end > 0)\n end--;\n if (end > 0) {\n var start = 0;\n while (rectSel[start].isEmpty())\n start++;\n }\n for (var i = end; i >= start; i--) {\n if (rectSel[i].isEmpty())\n rectSel.splice(i, 1);\n }\n }\n\n return rectSel;\n };\n}).call(Selection.prototype);\nvar Editor = require(\"./editor\").Editor;\n(function() {\n this.updateSelectionMarkers = function() {\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.addSelectionMarker = function(orientedRange) {\n if (!orientedRange.cursor)\n orientedRange.cursor = orientedRange.end;\n\n var style = this.getSelectionStyle();\n orientedRange.marker = this.session.addMarker(orientedRange, \"ace_selection\", style);\n\n this.session.$selectionMarkers.push(orientedRange);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n return orientedRange;\n };\n this.removeSelectionMarker = function(range) {\n if (!range.marker)\n return;\n this.session.removeMarker(range.marker);\n var index = this.session.$selectionMarkers.indexOf(range);\n if (index != -1)\n this.session.$selectionMarkers.splice(index, 1);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n };\n\n this.removeSelectionMarkers = function(ranges) {\n var markerList = this.session.$selectionMarkers;\n for (var i = ranges.length; i--; ) {\n var range = ranges[i];\n if (!range.marker)\n continue;\n this.session.removeMarker(range.marker);\n var index = markerList.indexOf(range);\n if (index != -1)\n markerList.splice(index, 1);\n }\n this.session.selectionMarkerCount = markerList.length;\n };\n\n this.$onAddRange = function(e) {\n this.addSelectionMarker(e.range);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n\n this.$onRemoveRange = function(e) {\n this.removeSelectionMarkers(e.ranges);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n\n this.$onMultiSelect = function(e) {\n if (this.inMultiSelectMode)\n return;\n this.inMultiSelectMode = true;\n\n this.setStyle(\"ace_multiselect\");\n this.keyBinding.addKeyboardHandler(commands.keyboardHandler);\n this.commands.setDefaultHandler(\"exec\", this.$onMultiSelectExec);\n\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n\n this.$onSingleSelect = function(e) {\n if (this.session.multiSelect.inVirtualMode)\n return;\n this.inMultiSelectMode = false;\n\n this.unsetStyle(\"ace_multiselect\");\n this.keyBinding.removeKeyboardHandler(commands.keyboardHandler);\n\n this.commands.removeDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n this._emit(\"changeSelection\");\n };\n\n this.$onMultiSelectExec = function(e) {\n var command = e.command;\n var editor = e.editor;\n if (!editor.multiSelect)\n return;\n if (!command.multiSelectAction) {\n var result = command.exec(editor, e.args || {});\n editor.multiSelect.addRange(editor.multiSelect.toOrientedRange());\n editor.multiSelect.mergeOverlappingRanges();\n } else if (command.multiSelectAction == \"forEach\") {\n result = editor.forEachSelection(command, e.args);\n } else if (command.multiSelectAction == \"forEachLine\") {\n result = editor.forEachSelection(command, e.args, true);\n } else if (command.multiSelectAction == \"single\") {\n editor.exitMultiSelectMode();\n result = command.exec(editor, e.args || {});\n } else {\n result = command.multiSelectAction(editor, e.args || {});\n }\n return result;\n }; \n this.forEachSelection = function(cmd, args, options) {\n if (this.inVirtualSelectionMode)\n return;\n var keepOrder = options && options.keepOrder;\n var $byLines = options == true || options && options.$byLines;\n var session = this.session;\n var selection = this.selection;\n var rangeList = selection.rangeList;\n var ranges = (keepOrder ? selection : rangeList).ranges;\n var result;\n \n if (!ranges.length)\n return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n \n var reg = selection._eventRegistry;\n selection._eventRegistry = {};\n\n var tmpSel = new Selection(session);\n this.inVirtualSelectionMode = true;\n for (var i = ranges.length; i--;) {\n if ($byLines) {\n while (i > 0 && ranges[i].start.row == ranges[i - 1].end.row)\n i--;\n }\n tmpSel.fromOrientedRange(ranges[i]);\n tmpSel.index = i;\n this.selection = session.selection = tmpSel;\n var cmdResult = cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n if (!result && cmdResult !== undefined)\n result = cmdResult;\n tmpSel.toOrientedRange(ranges[i]);\n }\n tmpSel.detach();\n\n this.selection = session.selection = selection;\n this.inVirtualSelectionMode = false;\n selection._eventRegistry = reg;\n selection.mergeOverlappingRanges();\n if (selection.ranges[0])\n selection.fromOrientedRange(selection.ranges[0]);\n \n var anim = this.renderer.$scrollAnimation;\n this.onCursorChange();\n this.onSelectionChange();\n if (anim && anim.from == anim.to)\n this.renderer.animateScrolling(anim.from);\n \n return result;\n };\n this.exitMultiSelectMode = function() {\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode)\n return;\n this.multiSelect.toSingleRange();\n };\n\n this.getSelectedText = function() {\n var text = \"\";\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var ranges = this.multiSelect.rangeList.ranges;\n var buf = [];\n for (var i = 0; i < ranges.length; i++) {\n buf.push(this.session.getTextRange(ranges[i]));\n }\n var nl = this.session.getDocument().getNewLineCharacter();\n text = buf.join(nl);\n if (text.length == (buf.length - 1) * nl.length)\n text = \"\";\n } else if (!this.selection.isEmpty()) {\n text = this.session.getTextRange(this.getSelectionRange());\n }\n return text;\n };\n \n this.$checkMultiselectChange = function(e, anchor) {\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var range = this.multiSelect.ranges[0];\n if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor)\n return;\n var pos = anchor == this.multiSelect.anchor\n ? range.cursor == range.start ? range.end : range.start\n : range.cursor;\n if (pos.row != anchor.row \n || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column)\n this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange());\n else\n this.multiSelect.mergeOverlappingRanges();\n }\n };\n this.findAll = function(needle, options, additive) {\n options = options || {};\n options.needle = needle || options.needle;\n if (options.needle == undefined) {\n var range = this.selection.isEmpty()\n ? this.selection.getWordRange()\n : this.selection.getRange();\n options.needle = this.session.getTextRange(range);\n } \n this.$search.set(options);\n \n var ranges = this.$search.findAll(this.session);\n if (!ranges.length)\n return 0;\n\n var selection = this.multiSelect;\n\n if (!additive)\n selection.toSingleRange(ranges[0]);\n\n for (var i = ranges.length; i--; )\n selection.addRange(ranges[i], true);\n if (range && selection.rangeList.rangeAtPoint(range.start))\n selection.addRange(range, true);\n \n return ranges.length;\n };\n this.selectMoreLines = function(dir, skip) {\n var range = this.selection.toOrientedRange();\n var isBackwards = range.cursor == range.end;\n\n var screenLead = this.session.documentToScreenPosition(range.cursor);\n if (this.selection.$desiredColumn)\n screenLead.column = this.selection.$desiredColumn;\n\n var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column);\n\n if (!range.isEmpty()) {\n var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start);\n var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column);\n } else {\n var anchor = lead;\n }\n\n if (isBackwards) {\n var newRange = Range.fromPoints(lead, anchor);\n newRange.cursor = newRange.start;\n } else {\n var newRange = Range.fromPoints(anchor, lead);\n newRange.cursor = newRange.end;\n }\n\n newRange.desiredColumn = screenLead.column;\n if (!this.selection.inMultiSelectMode) {\n this.selection.addRange(range);\n } else {\n if (skip)\n var toRemove = range.cursor;\n }\n\n this.selection.addRange(newRange);\n if (toRemove)\n this.selection.substractPoint(toRemove);\n };\n this.transposeSelections = function(dir) {\n var session = this.session;\n var sel = session.multiSelect;\n var all = sel.ranges;\n\n for (var i = all.length; i--; ) {\n var range = all[i];\n if (range.isEmpty()) {\n var tmp = session.getWordRange(range.start.row, range.start.column);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n range.end.row = tmp.end.row;\n range.end.column = tmp.end.column;\n }\n }\n sel.mergeOverlappingRanges();\n\n var words = [];\n for (var i = all.length; i--; ) {\n var range = all[i];\n words.unshift(session.getTextRange(range));\n }\n\n if (dir < 0)\n words.unshift(words.pop());\n else\n words.push(words.shift());\n\n for (var i = all.length; i--; ) {\n var range = all[i];\n var tmp = range.clone();\n session.replace(range, words[i]);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n }\n sel.fromOrientedRange(sel.ranges[0]);\n };\n this.selectMore = function(dir, skip, stopAtFirst) {\n var session = this.session;\n var sel = session.multiSelect;\n\n var range = sel.toOrientedRange();\n if (range.isEmpty()) {\n range = session.getWordRange(range.start.row, range.start.column);\n range.cursor = dir == -1 ? range.start : range.end;\n this.multiSelect.addRange(range);\n if (stopAtFirst)\n return;\n }\n var needle = session.getTextRange(range);\n\n var newRange = find(session, needle, dir);\n if (newRange) {\n newRange.cursor = dir == -1 ? newRange.start : newRange.end;\n this.session.unfold(newRange);\n this.multiSelect.addRange(newRange);\n this.renderer.scrollCursorIntoView(null, 0.5);\n }\n if (skip)\n this.multiSelect.substractPoint(range.cursor);\n };\n this.alignCursors = function() {\n var session = this.session;\n var sel = session.multiSelect;\n var ranges = sel.ranges;\n var row = -1;\n var sameRowRanges = ranges.filter(function(r) {\n if (r.cursor.row == row)\n return true;\n row = r.cursor.row;\n });\n \n if (!ranges.length || sameRowRanges.length == ranges.length - 1) {\n var range = this.selection.getRange();\n var fr = range.start.row, lr = range.end.row;\n var guessRange = fr == lr;\n if (guessRange) {\n var max = this.session.getLength();\n var line;\n do {\n line = this.session.getLine(lr);\n } while (/[=:]/.test(line) && ++lr < max);\n do {\n line = this.session.getLine(fr);\n } while (/[=:]/.test(line) && --fr > 0);\n \n if (fr < 0) fr = 0;\n if (lr >= max) lr = max - 1;\n }\n var lines = this.session.removeFullLines(fr, lr);\n lines = this.$reAlignText(lines, guessRange);\n this.session.insert({row: fr, column: 0}, lines.join(\"\\n\") + \"\\n\");\n if (!guessRange) {\n range.start.column = 0;\n range.end.column = lines[lines.length - 1].length;\n }\n this.selection.setRange(range);\n } else {\n sameRowRanges.forEach(function(r) {\n sel.substractPoint(r.cursor);\n });\n\n var maxCol = 0;\n var minSpace = Infinity;\n var spaceOffsets = ranges.map(function(r) {\n var p = r.cursor;\n var line = session.getLine(p.row);\n var spaceOffset = line.substr(p.column).search(/\\S/g);\n if (spaceOffset == -1)\n spaceOffset = 0;\n\n if (p.column > maxCol)\n maxCol = p.column;\n if (spaceOffset < minSpace)\n minSpace = spaceOffset;\n return spaceOffset;\n });\n ranges.forEach(function(r, i) {\n var p = r.cursor;\n var l = maxCol - p.column;\n var d = spaceOffsets[i] - minSpace;\n if (l > d)\n session.insert(p, lang.stringRepeat(\" \", l - d));\n else\n session.remove(new Range(p.row, p.column, p.row, p.column - l + d));\n\n r.start.column = r.end.column = maxCol;\n r.start.row = r.end.row = p.row;\n r.cursor = r.end;\n });\n sel.fromOrientedRange(ranges[0]);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n }\n };\n\n this.$reAlignText = function(lines, forceLeft) {\n var isLeftAligned = true, isRightAligned = true;\n var startW, textW, endW;\n\n return lines.map(function(line) {\n var m = line.match(/(\\s*)(.*?)(\\s*)([=:].*)/);\n if (!m)\n return [line];\n\n if (startW == null) {\n startW = m[1].length;\n textW = m[2].length;\n endW = m[3].length;\n return m;\n }\n\n if (startW + textW + endW != m[1].length + m[2].length + m[3].length)\n isRightAligned = false;\n if (startW != m[1].length)\n isLeftAligned = false;\n\n if (startW > m[1].length)\n startW = m[1].length;\n if (textW < m[2].length)\n textW = m[2].length;\n if (endW > m[3].length)\n endW = m[3].length;\n\n return m;\n }).map(forceLeft ? alignLeft :\n isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign);\n\n function spaces(n) {\n return lang.stringRepeat(\" \", n);\n }\n\n function alignLeft(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(textW - m[2].length + endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function alignRight(m) {\n return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function unAlign(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n };\n}).call(Editor.prototype);\n\n\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nexports.onSessionChange = function(e) {\n var session = e.session;\n if (session && !session.multiSelect) {\n session.$selectionMarkers = [];\n session.selection.$initRangeList();\n session.multiSelect = session.selection;\n }\n this.multiSelect = session && session.multiSelect;\n\n var oldSession = e.oldSession;\n if (oldSession) {\n oldSession.multiSelect.off(\"addRange\", this.$onAddRange);\n oldSession.multiSelect.off(\"removeRange\", this.$onRemoveRange);\n oldSession.multiSelect.off(\"multiSelect\", this.$onMultiSelect);\n oldSession.multiSelect.off(\"singleSelect\", this.$onSingleSelect);\n oldSession.multiSelect.lead.off(\"change\", this.$checkMultiselectChange);\n oldSession.multiSelect.anchor.off(\"change\", this.$checkMultiselectChange);\n }\n\n if (session) {\n session.multiSelect.on(\"addRange\", this.$onAddRange);\n session.multiSelect.on(\"removeRange\", this.$onRemoveRange);\n session.multiSelect.on(\"multiSelect\", this.$onMultiSelect);\n session.multiSelect.on(\"singleSelect\", this.$onSingleSelect);\n session.multiSelect.lead.on(\"change\", this.$checkMultiselectChange);\n session.multiSelect.anchor.on(\"change\", this.$checkMultiselectChange);\n }\n\n if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) {\n if (session.selection.inMultiSelectMode)\n this.$onMultiSelect();\n else\n this.$onSingleSelect();\n }\n};\nfunction MultiSelect(editor) {\n if (editor.$multiselectOnSessionChange)\n return;\n editor.$onAddRange = editor.$onAddRange.bind(editor);\n editor.$onRemoveRange = editor.$onRemoveRange.bind(editor);\n editor.$onMultiSelect = editor.$onMultiSelect.bind(editor);\n editor.$onSingleSelect = editor.$onSingleSelect.bind(editor);\n editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor);\n editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor);\n\n editor.$multiselectOnSessionChange(editor);\n editor.on(\"changeSession\", editor.$multiselectOnSessionChange);\n\n editor.on(\"mousedown\", onMouseDown);\n editor.commands.addCommands(commands.defaultCommands);\n\n addAltCursorListeners(editor);\n}\n\nfunction addAltCursorListeners(editor){\n if (!editor.textInput) return;\n var el = editor.textInput.getElement();\n var altCursor = false;\n event.addListener(el, \"keydown\", function(e) {\n var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey);\n if (editor.$blockSelectEnabled && altDown) {\n if (!altCursor) {\n editor.renderer.setMouseCursor(\"crosshair\");\n altCursor = true;\n }\n } else if (altCursor) {\n reset();\n }\n }, editor);\n\n event.addListener(el, \"keyup\", reset, editor);\n event.addListener(el, \"blur\", reset, editor);\n function reset(e) {\n if (altCursor) {\n editor.renderer.setMouseCursor(\"\");\n altCursor = false;\n }\n }\n}\n\nexports.MultiSelect = MultiSelect;\n\n\nrequire(\"./config\").defineOptions(Editor.prototype, \"editor\", {\n enableMultiselect: {\n set: function(val) {\n MultiSelect(this);\n if (val) {\n this.on(\"changeSession\", this.$multiselectOnSessionChange);\n this.on(\"mousedown\", onMouseDown);\n } else {\n this.off(\"changeSession\", this.$multiselectOnSessionChange);\n this.off(\"mousedown\", onMouseDown);\n }\n },\n value: true\n },\n enableBlockSelect: {\n set: function(val) {\n this.$blockSelectEnabled = val;\n },\n value: true\n }\n});\n\n\n\n});\n\nace.define(\"ace/mode/folding/fold_mode\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar Range = require(\"../../range\").Range;\n\nvar FoldMode = exports.FoldMode = function() {};\n\n(function() {\n\n this.foldingStartMarker = null;\n this.foldingStopMarker = null;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.foldingStartMarker.test(line))\n return \"start\";\n if (foldStyle == \"markbeginend\"\n && this.foldingStopMarker\n && this.foldingStopMarker.test(line))\n return \"end\";\n return \"\";\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n return null;\n };\n\n this.indentationBlock = function(session, row, column) {\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1)\n return;\n\n var startColumn = column || line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n\n while (++row < maxRow) {\n var level = session.getLine(row).search(re);\n\n if (level == -1)\n continue;\n\n if (level <= startLevel) {\n var token = session.getTokenAt(row, 0);\n if (!token || token.type !== \"string\")\n break;\n }\n\n endRow = row;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n\n this.openingBracketBlock = function(session, bracket, row, column, typeRe) {\n var start = {row: row, column: column + 1};\n var end = session.$findClosingBracket(bracket, start, typeRe);\n if (!end)\n return;\n\n var fw = session.foldWidgets[end.row];\n if (fw == null)\n fw = session.getFoldWidget(end.row);\n\n if (fw == \"start\" && end.row > start.row) {\n end.row --;\n end.column = session.getLine(end.row).length;\n }\n return Range.fromPoints(start, end);\n };\n\n this.closingBracketBlock = function(session, bracket, row, column, typeRe) {\n var end = {row: row, column: column};\n var start = session.$findOpeningBracket(bracket, end);\n\n if (!start)\n return;\n\n start.column++;\n end.column--;\n\n return Range.fromPoints(start, end);\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/theme/textmate\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nexports.isDark = false;\nexports.cssClass = \"ace-tm\";\nexports.cssText = \".ace-tm .ace_gutter {\\\nbackground: #f0f0f0;\\\ncolor: #333;\\\n}\\\n.ace-tm .ace_print-margin {\\\nwidth: 1px;\\\nbackground: #e8e8e8;\\\n}\\\n.ace-tm .ace_fold {\\\nbackground-color: #6B72E6;\\\n}\\\n.ace-tm {\\\nbackground-color: #FFFFFF;\\\ncolor: black;\\\n}\\\n.ace-tm .ace_cursor {\\\ncolor: black;\\\n}\\\n.ace-tm .ace_invisible {\\\ncolor: rgb(191, 191, 191);\\\n}\\\n.ace-tm .ace_storage,\\\n.ace-tm .ace_keyword {\\\ncolor: blue;\\\n}\\\n.ace-tm .ace_constant {\\\ncolor: rgb(197, 6, 11);\\\n}\\\n.ace-tm .ace_constant.ace_buildin {\\\ncolor: rgb(88, 72, 246);\\\n}\\\n.ace-tm .ace_constant.ace_language {\\\ncolor: rgb(88, 92, 246);\\\n}\\\n.ace-tm .ace_constant.ace_library {\\\ncolor: rgb(6, 150, 14);\\\n}\\\n.ace-tm .ace_invalid {\\\nbackground-color: rgba(255, 0, 0, 0.1);\\\ncolor: red;\\\n}\\\n.ace-tm .ace_support.ace_function {\\\ncolor: rgb(60, 76, 114);\\\n}\\\n.ace-tm .ace_support.ace_constant {\\\ncolor: rgb(6, 150, 14);\\\n}\\\n.ace-tm .ace_support.ace_type,\\\n.ace-tm .ace_support.ace_class {\\\ncolor: rgb(109, 121, 222);\\\n}\\\n.ace-tm .ace_keyword.ace_operator {\\\ncolor: rgb(104, 118, 135);\\\n}\\\n.ace-tm .ace_string {\\\ncolor: rgb(3, 106, 7);\\\n}\\\n.ace-tm .ace_comment {\\\ncolor: rgb(76, 136, 107);\\\n}\\\n.ace-tm .ace_comment.ace_doc {\\\ncolor: rgb(0, 102, 255);\\\n}\\\n.ace-tm .ace_comment.ace_doc.ace_tag {\\\ncolor: rgb(128, 159, 191);\\\n}\\\n.ace-tm .ace_constant.ace_numeric {\\\ncolor: rgb(0, 0, 205);\\\n}\\\n.ace-tm .ace_variable {\\\ncolor: rgb(49, 132, 149);\\\n}\\\n.ace-tm .ace_xml-pe {\\\ncolor: rgb(104, 104, 91);\\\n}\\\n.ace-tm .ace_entity.ace_name.ace_function {\\\ncolor: #0000A2;\\\n}\\\n.ace-tm .ace_heading {\\\ncolor: rgb(12, 7, 255);\\\n}\\\n.ace-tm .ace_list {\\\ncolor:rgb(185, 6, 144);\\\n}\\\n.ace-tm .ace_meta.ace_tag {\\\ncolor:rgb(0, 22, 142);\\\n}\\\n.ace-tm .ace_string.ace_regex {\\\ncolor: rgb(255, 0, 0)\\\n}\\\n.ace-tm .ace_marker-layer .ace_selection {\\\nbackground: rgb(181, 213, 255);\\\n}\\\n.ace-tm.ace_multiselect .ace_selection.ace_start {\\\nbox-shadow: 0 0 3px 0px white;\\\n}\\\n.ace-tm .ace_marker-layer .ace_step {\\\nbackground: rgb(252, 255, 0);\\\n}\\\n.ace-tm .ace_marker-layer .ace_stack {\\\nbackground: rgb(164, 229, 101);\\\n}\\\n.ace-tm .ace_marker-layer .ace_bracket {\\\nmargin: -1px 0 0 -1px;\\\nborder: 1px solid rgb(192, 192, 192);\\\n}\\\n.ace-tm .ace_marker-layer .ace_active-line {\\\nbackground: rgba(0, 0, 0, 0.07);\\\n}\\\n.ace-tm .ace_gutter-active-line {\\\nbackground-color : #dcdcdc;\\\n}\\\n.ace-tm .ace_marker-layer .ace_selected-word {\\\nbackground: rgb(250, 250, 255);\\\nborder: 1px solid rgb(200, 200, 250);\\\n}\\\n.ace-tm .ace_indent-guide {\\\nbackground: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\\n}\\\n\";\nexports.$id = \"ace/theme/textmate\";\n\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n});\n\nace.define(\"ace/line_widgets\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nvar dom = require(\"./lib/dom\");\n\nfunction LineWidgets(session) {\n this.session = session;\n this.session.widgetManager = this;\n this.session.getRowLength = this.getRowLength;\n this.session.$getWidgetScreenLength = this.$getWidgetScreenLength;\n this.updateOnChange = this.updateOnChange.bind(this);\n this.renderWidgets = this.renderWidgets.bind(this);\n this.measureWidgets = this.measureWidgets.bind(this);\n this.session._changedWidgets = [];\n this.$onChangeEditor = this.$onChangeEditor.bind(this);\n \n this.session.on(\"change\", this.updateOnChange);\n this.session.on(\"changeFold\", this.updateOnFold);\n this.session.on(\"changeEditor\", this.$onChangeEditor);\n}\n\n(function() {\n this.getRowLength = function(row) {\n var h;\n if (this.lineWidgets)\n h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n else \n h = 0;\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1 + h;\n } else {\n return this.$wrapData[row].length + 1 + h;\n }\n };\n\n this.$getWidgetScreenLength = function() {\n var screenRows = 0;\n this.lineWidgets.forEach(function(w){\n if (w && w.rowCount && !w.hidden)\n screenRows += w.rowCount;\n });\n return screenRows;\n }; \n \n this.$onChangeEditor = function(e) {\n this.attach(e.editor);\n };\n \n this.attach = function(editor) {\n if (editor && editor.widgetManager && editor.widgetManager != this)\n editor.widgetManager.detach();\n\n if (this.editor == editor)\n return;\n\n this.detach();\n this.editor = editor;\n \n if (editor) {\n editor.widgetManager = this;\n editor.renderer.on(\"beforeRender\", this.measureWidgets);\n editor.renderer.on(\"afterRender\", this.renderWidgets);\n }\n };\n this.detach = function(e) {\n var editor = this.editor;\n if (!editor)\n return;\n \n this.editor = null;\n editor.widgetManager = null;\n \n editor.renderer.off(\"beforeRender\", this.measureWidgets);\n editor.renderer.off(\"afterRender\", this.renderWidgets);\n var lineWidgets = this.session.lineWidgets;\n lineWidgets && lineWidgets.forEach(function(w) {\n if (w && w.el && w.el.parentNode) {\n w._inDocument = false;\n w.el.parentNode.removeChild(w.el);\n }\n });\n };\n\n this.updateOnFold = function(e, session) {\n var lineWidgets = session.lineWidgets;\n if (!lineWidgets || !e.action)\n return;\n var fold = e.data;\n var start = fold.start.row;\n var end = fold.end.row;\n var hide = e.action == \"add\";\n for (var i = start + 1; i < end; i++) {\n if (lineWidgets[i])\n lineWidgets[i].hidden = hide;\n }\n if (lineWidgets[end]) {\n if (hide) {\n if (!lineWidgets[start])\n lineWidgets[start] = lineWidgets[end];\n else\n lineWidgets[end].hidden = hide;\n } else {\n if (lineWidgets[start] == lineWidgets[end])\n lineWidgets[start] = undefined;\n lineWidgets[end].hidden = hide;\n }\n }\n };\n \n this.updateOnChange = function(delta) {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets) return;\n \n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n\n if (len === 0) {\n } else if (delta.action == \"remove\") {\n var removed = lineWidgets.splice(startRow + 1, len);\n if (!lineWidgets[startRow] && removed[removed.length - 1]) {\n lineWidgets[startRow] = removed.pop();\n }\n removed.forEach(function(w) {\n w && this.removeLineWidget(w);\n }, this);\n this.$updateRows();\n } else {\n var args = new Array(len);\n if (lineWidgets[startRow] && lineWidgets[startRow].column != null) {\n if (delta.start.column > lineWidgets[startRow].column)\n startRow++;\n }\n args.unshift(startRow, 0);\n lineWidgets.splice.apply(lineWidgets, args);\n this.$updateRows();\n }\n };\n \n this.$updateRows = function() {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets) return;\n var noWidgets = true;\n lineWidgets.forEach(function(w, i) {\n if (w) {\n noWidgets = false;\n w.row = i;\n while (w.$oldWidget) {\n w.$oldWidget.row = i;\n w = w.$oldWidget;\n }\n }\n });\n if (noWidgets)\n this.session.lineWidgets = null;\n };\n\n this.$registerLineWidget = function(w) {\n if (!this.session.lineWidgets)\n this.session.lineWidgets = new Array(this.session.getLength());\n \n var old = this.session.lineWidgets[w.row];\n if (old) {\n w.$oldWidget = old;\n if (old.el && old.el.parentNode) {\n old.el.parentNode.removeChild(old.el);\n old._inDocument = false;\n }\n }\n \n this.session.lineWidgets[w.row] = w;\n return w;\n };\n \n this.addLineWidget = function(w) {\n this.$registerLineWidget(w);\n w.session = this.session;\n \n if (!this.editor) return w;\n \n var renderer = this.editor.renderer;\n if (w.html && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.innerHTML = w.html;\n }\n if (w.el) {\n dom.addCssClass(w.el, \"ace_lineWidgetContainer\");\n w.el.style.position = \"absolute\";\n w.el.style.zIndex = 5;\n renderer.container.appendChild(w.el);\n w._inDocument = true;\n \n if (!w.coverGutter) {\n w.el.style.zIndex = 3;\n }\n if (w.pixelHeight == null) {\n w.pixelHeight = w.el.offsetHeight;\n }\n }\n if (w.rowCount == null) {\n w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight;\n }\n \n var fold = this.session.getFoldAt(w.row, 0);\n w.$fold = fold;\n if (fold) {\n var lineWidgets = this.session.lineWidgets;\n if (w.row == fold.end.row && !lineWidgets[fold.start.row])\n lineWidgets[fold.start.row] = w;\n else\n w.hidden = true;\n }\n \n this.session._emit(\"changeFold\", {data:{start:{row: w.row}}});\n \n this.$updateRows();\n this.renderWidgets(null, renderer);\n this.onWidgetChanged(w);\n return w;\n };\n \n this.removeLineWidget = function(w) {\n w._inDocument = false;\n w.session = null;\n if (w.el && w.el.parentNode)\n w.el.parentNode.removeChild(w.el);\n if (w.editor && w.editor.destroy) try {\n w.editor.destroy();\n } catch(e){}\n if (this.session.lineWidgets) {\n var w1 = this.session.lineWidgets[w.row];\n if (w1 == w) {\n this.session.lineWidgets[w.row] = w.$oldWidget;\n if (w.$oldWidget)\n this.onWidgetChanged(w.$oldWidget);\n } else {\n while (w1) {\n if (w1.$oldWidget == w) {\n w1.$oldWidget = w.$oldWidget;\n break;\n }\n w1 = w1.$oldWidget;\n }\n }\n }\n this.session._emit(\"changeFold\", {data:{start:{row: w.row}}});\n this.$updateRows();\n };\n \n this.getWidgetsAtRow = function(row) {\n var lineWidgets = this.session.lineWidgets;\n var w = lineWidgets && lineWidgets[row];\n var list = [];\n while (w) {\n list.push(w);\n w = w.$oldWidget;\n }\n return list;\n };\n \n this.onWidgetChanged = function(w) {\n this.session._changedWidgets.push(w);\n this.editor && this.editor.renderer.updateFull();\n };\n \n this.measureWidgets = function(e, renderer) {\n var changedWidgets = this.session._changedWidgets;\n var config = renderer.layerConfig;\n \n if (!changedWidgets || !changedWidgets.length) return;\n var min = Infinity;\n for (var i = 0; i < changedWidgets.length; i++) {\n var w = changedWidgets[i];\n if (!w || !w.el) continue;\n if (w.session != this.session) continue;\n if (!w._inDocument) {\n if (this.session.lineWidgets[w.row] != w)\n continue;\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n \n w.h = w.el.offsetHeight;\n \n if (!w.fixedWidth) {\n w.w = w.el.offsetWidth;\n w.screenWidth = Math.ceil(w.w / config.characterWidth);\n }\n \n var rowCount = w.h / config.lineHeight;\n if (w.coverLine) {\n rowCount -= this.session.getRowLineCount(w.row);\n if (rowCount < 0)\n rowCount = 0;\n }\n if (w.rowCount != rowCount) {\n w.rowCount = rowCount;\n if (w.row < min)\n min = w.row;\n }\n }\n if (min != Infinity) {\n this.session._emit(\"changeFold\", {data:{start:{row: min}}});\n this.session.lineWidgetWidth = null;\n }\n this.session._changedWidgets = [];\n };\n \n this.renderWidgets = function(e, renderer) {\n var config = renderer.layerConfig;\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var first = Math.min(this.firstRow, config.firstRow);\n var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length);\n \n while (first > 0 && !lineWidgets[first])\n first--;\n \n this.firstRow = config.firstRow;\n this.lastRow = config.lastRow;\n\n renderer.$cursorLayer.config = config;\n for (var i = first; i <= last; i++) {\n var w = lineWidgets[i];\n if (!w || !w.el) continue;\n if (w.hidden) {\n w.el.style.top = -100 - (w.pixelHeight || 0) + \"px\";\n continue;\n }\n if (!w._inDocument) {\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n var top = renderer.$cursorLayer.getPixelPosition({row: i, column:0}, true).top;\n if (!w.coverLine)\n top += config.lineHeight * this.session.getRowLineCount(w.row);\n w.el.style.top = top - config.offset + \"px\";\n \n var left = w.coverGutter ? 0 : renderer.gutterWidth;\n if (!w.fixedWidth)\n left -= renderer.scrollLeft;\n w.el.style.left = left + \"px\";\n \n if (w.fullWidth && w.screenWidth) {\n w.el.style.minWidth = config.width + 2 * config.padding + \"px\";\n }\n \n if (w.fixedWidth) {\n w.el.style.right = renderer.scrollBar.getWidth() + \"px\";\n } else {\n w.el.style.right = \"\";\n }\n }\n };\n \n}).call(LineWidgets.prototype);\n\n\nexports.LineWidgets = LineWidgets;\n\n});\n\nace.define(\"ace/ext/error_marker\",[\"require\",\"exports\",\"module\",\"ace/line_widgets\",\"ace/lib/dom\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\nvar LineWidgets = require(\"../line_widgets\").LineWidgets;\nvar dom = require(\"../lib/dom\");\nvar Range = require(\"../range\").Range;\n\nfunction binarySearch(array, needle, comparator) {\n var first = 0;\n var last = array.length - 1;\n\n while (first <= last) {\n var mid = (first + last) >> 1;\n var c = comparator(needle, array[mid]);\n if (c > 0)\n first = mid + 1;\n else if (c < 0)\n last = mid - 1;\n else\n return mid;\n }\n return -(first + 1);\n}\n\nfunction findAnnotations(session, row, dir) {\n var annotations = session.getAnnotations().sort(Range.comparePoints);\n if (!annotations.length)\n return;\n \n var i = binarySearch(annotations, {row: row, column: -1}, Range.comparePoints);\n if (i < 0)\n i = -i - 1;\n \n if (i >= annotations.length)\n i = dir > 0 ? 0 : annotations.length - 1;\n else if (i === 0 && dir < 0)\n i = annotations.length - 1;\n \n var annotation = annotations[i];\n if (!annotation || !dir)\n return;\n\n if (annotation.row === row) {\n do {\n annotation = annotations[i += dir];\n } while (annotation && annotation.row === row);\n if (!annotation)\n return annotations.slice();\n }\n \n \n var matched = [];\n row = annotation.row;\n do {\n matched[dir < 0 ? \"unshift\" : \"push\"](annotation);\n annotation = annotations[i += dir];\n } while (annotation && annotation.row == row);\n return matched.length && matched;\n}\n\nexports.showErrorMarker = function(editor, dir) {\n var session = editor.session;\n if (!session.widgetManager) {\n session.widgetManager = new LineWidgets(session);\n session.widgetManager.attach(editor);\n }\n \n var pos = editor.getCursorPosition();\n var row = pos.row;\n var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function(w) {\n return w.type == \"errorMarker\";\n })[0];\n if (oldWidget) {\n oldWidget.destroy();\n } else {\n row -= dir;\n }\n var annotations = findAnnotations(session, row, dir);\n var gutterAnno;\n if (annotations) {\n var annotation = annotations[0];\n pos.column = (annotation.pos && typeof annotation.column != \"number\"\n ? annotation.pos.sc\n : annotation.column) || 0;\n pos.row = annotation.row;\n gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row];\n } else if (oldWidget) {\n return;\n } else {\n gutterAnno = {\n text: [\"Looks good!\"],\n className: \"ace_ok\"\n };\n }\n editor.session.unfold(pos.row);\n editor.selection.moveToPosition(pos);\n \n var w = {\n row: pos.row, \n fixedWidth: true,\n coverGutter: true,\n el: dom.createElement(\"div\"),\n type: \"errorMarker\"\n };\n var el = w.el.appendChild(dom.createElement(\"div\"));\n var arrow = w.el.appendChild(dom.createElement(\"div\"));\n arrow.className = \"error_widget_arrow \" + gutterAnno.className;\n \n var left = editor.renderer.$cursorLayer\n .getPixelPosition(pos).left;\n arrow.style.left = left + editor.renderer.gutterWidth - 5 + \"px\";\n \n w.el.className = \"error_widget_wrapper\";\n el.className = \"error_widget \" + gutterAnno.className;\n el.innerHTML = gutterAnno.text.join(\"
\");\n \n el.appendChild(dom.createElement(\"div\"));\n \n var kb = function(_, hashId, keyString) {\n if (hashId === 0 && (keyString === \"esc\" || keyString === \"return\")) {\n w.destroy();\n return {command: \"null\"};\n }\n };\n \n w.destroy = function() {\n if (editor.$mouseHandler.isMousePressed)\n return;\n editor.keyBinding.removeKeyboardHandler(kb);\n session.widgetManager.removeLineWidget(w);\n editor.off(\"changeSelection\", w.destroy);\n editor.off(\"changeSession\", w.destroy);\n editor.off(\"mouseup\", w.destroy);\n editor.off(\"change\", w.destroy);\n };\n \n editor.keyBinding.addKeyboardHandler(kb);\n editor.on(\"changeSelection\", w.destroy);\n editor.on(\"changeSession\", w.destroy);\n editor.on(\"mouseup\", w.destroy);\n editor.on(\"change\", w.destroy);\n \n editor.session.widgetManager.addLineWidget(w);\n \n w.el.onmousedown = editor.focus.bind(editor);\n \n editor.renderer.scrollCursorIntoView(null, 0.5, {bottom: w.el.offsetHeight});\n};\n\n\ndom.importCssString(\"\\\n .error_widget_wrapper {\\\n background: inherit;\\\n color: inherit;\\\n border:none\\\n }\\\n .error_widget {\\\n border-top: solid 2px;\\\n border-bottom: solid 2px;\\\n margin: 5px 0;\\\n padding: 10px 40px;\\\n white-space: pre-wrap;\\\n }\\\n .error_widget.ace_error, .error_widget_arrow.ace_error{\\\n border-color: #ff5a5a\\\n }\\\n .error_widget.ace_warning, .error_widget_arrow.ace_warning{\\\n border-color: #F1D817\\\n }\\\n .error_widget.ace_info, .error_widget_arrow.ace_info{\\\n border-color: #5a5a5a\\\n }\\\n .error_widget.ace_ok, .error_widget_arrow.ace_ok{\\\n border-color: #5aaa5a\\\n }\\\n .error_widget_arrow {\\\n position: absolute;\\\n border: solid 5px;\\\n border-top-color: transparent!important;\\\n border-right-color: transparent!important;\\\n border-left-color: transparent!important;\\\n top: -5px;\\\n }\\\n\", \"error_marker.css\", false);\n\n});\n\nace.define(\"ace/ace\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/range\",\"ace/editor\",\"ace/edit_session\",\"ace/undomanager\",\"ace/virtual_renderer\",\"ace/worker/worker_client\",\"ace/keyboard/hash_handler\",\"ace/placeholder\",\"ace/multi_select\",\"ace/mode/folding/fold_mode\",\"ace/theme/textmate\",\"ace/ext/error_marker\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nrequire(\"./lib/fixoldbrowsers\");\n\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\n\nvar Range = require(\"./range\").Range;\nvar Editor = require(\"./editor\").Editor;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar UndoManager = require(\"./undomanager\").UndoManager;\nvar Renderer = require(\"./virtual_renderer\").VirtualRenderer;\nrequire(\"./worker/worker_client\");\nrequire(\"./keyboard/hash_handler\");\nrequire(\"./placeholder\");\nrequire(\"./multi_select\");\nrequire(\"./mode/folding/fold_mode\");\nrequire(\"./theme/textmate\");\nrequire(\"./ext/error_marker\");\n\nexports.config = require(\"./config\");\nexports.require = require;\n\nif (typeof define === \"function\")\n exports.define = define;\nexports.edit = function(el, options) {\n if (typeof el == \"string\") {\n var _id = el;\n el = document.getElementById(_id);\n if (!el)\n throw new Error(\"ace.edit can't find div #\" + _id);\n }\n\n if (el && el.env && el.env.editor instanceof Editor)\n return el.env.editor;\n\n var value = \"\";\n if (el && /input|textarea/i.test(el.tagName)) {\n var oldNode = el;\n value = oldNode.value;\n el = dom.createElement(\"pre\");\n oldNode.parentNode.replaceChild(el, oldNode);\n } else if (el) {\n value = el.textContent;\n el.innerHTML = \"\";\n }\n\n var doc = exports.createEditSession(value);\n\n var editor = new Editor(new Renderer(el), doc, options);\n\n var env = {\n document: doc,\n editor: editor,\n onResize: editor.resize.bind(editor, null)\n };\n if (oldNode) env.textarea = oldNode;\n event.addListener(window, \"resize\", env.onResize);\n editor.on(\"destroy\", function() {\n event.removeListener(window, \"resize\", env.onResize);\n env.editor.container.env = null; // prevent memory leak on old ie\n });\n editor.container.env = editor.env = env;\n return editor;\n};\nexports.createEditSession = function(text, mode) {\n var doc = new EditSession(text, mode);\n doc.setUndoManager(new UndoManager());\n return doc;\n};\nexports.Range = Range;\nexports.Editor = Editor;\nexports.EditSession = EditSession;\nexports.UndoManager = UndoManager;\nexports.VirtualRenderer = Renderer;\nexports.version = exports.config.version;\n}); (function() {\n ace.require([\"ace/ace\"], function(a) {\n if (a) {\n a.config.init(true);\n a.define = ace.define;\n }\n if (!window.ace)\n window.ace = a;\n for (var key in a) if (a.hasOwnProperty(key))\n window.ace[key] = a[key];\n window.ace[\"default\"] = window.ace;\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = window.ace;\n }\n });\n })();\n ","ace.define(\"ace/split\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/editor\",\"ace/virtual_renderer\",\"ace/edit_session\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\n\nvar Editor = require(\"./editor\").Editor;\nvar Renderer = require(\"./virtual_renderer\").VirtualRenderer;\nvar EditSession = require(\"./edit_session\").EditSession;\n\n\nvar Split = function(container, theme, splits) {\n this.BELOW = 1;\n this.BESIDE = 0;\n\n this.$container = container;\n this.$theme = theme;\n this.$splits = 0;\n this.$editorCSS = \"\";\n this.$editors = [];\n this.$orientation = this.BESIDE;\n\n this.setSplits(splits || 1);\n this.$cEditor = this.$editors[0];\n\n\n this.on(\"focus\", function(editor) {\n this.$cEditor = editor;\n }.bind(this));\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$createEditor = function() {\n var el = document.createElement(\"div\");\n el.className = this.$editorCSS;\n el.style.cssText = \"position: absolute; top:0px; bottom:0px\";\n this.$container.appendChild(el);\n var editor = new Editor(new Renderer(el, this.$theme));\n\n editor.on(\"focus\", function() {\n this._emit(\"focus\", editor);\n }.bind(this));\n\n this.$editors.push(editor);\n editor.setFontSize(this.$fontSize);\n return editor;\n };\n\n this.setSplits = function(splits) {\n var editor;\n if (splits < 1) {\n throw \"The number of splits have to be > 0!\";\n }\n\n if (splits == this.$splits) {\n return;\n } else if (splits > this.$splits) {\n while (this.$splits < this.$editors.length && this.$splits < splits) {\n editor = this.$editors[this.$splits];\n this.$container.appendChild(editor.container);\n editor.setFontSize(this.$fontSize);\n this.$splits ++;\n }\n while (this.$splits < splits) {\n this.$createEditor();\n this.$splits ++;\n }\n } else {\n while (this.$splits > splits) {\n editor = this.$editors[this.$splits - 1];\n this.$container.removeChild(editor.container);\n this.$splits --;\n }\n }\n this.resize();\n };\n this.getSplits = function() {\n return this.$splits;\n };\n this.getEditor = function(idx) {\n return this.$editors[idx];\n };\n this.getCurrentEditor = function() {\n return this.$cEditor;\n };\n this.focus = function() {\n this.$cEditor.focus();\n };\n this.blur = function() {\n this.$cEditor.blur();\n };\n this.setTheme = function(theme) {\n this.$editors.forEach(function(editor) {\n editor.setTheme(theme);\n });\n };\n this.setKeyboardHandler = function(keybinding) {\n this.$editors.forEach(function(editor) {\n editor.setKeyboardHandler(keybinding);\n });\n };\n this.forEach = function(callback, scope) {\n this.$editors.forEach(callback, scope);\n };\n\n\n this.$fontSize = \"\";\n this.setFontSize = function(size) {\n this.$fontSize = size;\n this.forEach(function(editor) {\n editor.setFontSize(size);\n });\n };\n\n this.$cloneSession = function(session) {\n var s = new EditSession(session.getDocument(), session.getMode());\n\n var undoManager = session.getUndoManager();\n s.setUndoManager(undoManager);\n s.setTabSize(session.getTabSize());\n s.setUseSoftTabs(session.getUseSoftTabs());\n s.setOverwrite(session.getOverwrite());\n s.setBreakpoints(session.getBreakpoints());\n s.setUseWrapMode(session.getUseWrapMode());\n s.setUseWorker(session.getUseWorker());\n s.setWrapLimitRange(session.$wrapLimitRange.min,\n session.$wrapLimitRange.max);\n s.$foldData = session.$cloneFoldData();\n\n return s;\n };\n this.setSession = function(session, idx) {\n var editor;\n if (idx == null) {\n editor = this.$cEditor;\n } else {\n editor = this.$editors[idx];\n }\n var isUsed = this.$editors.some(function(editor) {\n return editor.session === session;\n });\n\n if (isUsed) {\n session = this.$cloneSession(session);\n }\n editor.setSession(session);\n return session;\n };\n this.getOrientation = function() {\n return this.$orientation;\n };\n this.setOrientation = function(orientation) {\n if (this.$orientation == orientation) {\n return;\n }\n this.$orientation = orientation;\n this.resize();\n };\n this.resize = function() {\n var width = this.$container.clientWidth;\n var height = this.$container.clientHeight;\n var editor;\n\n if (this.$orientation == this.BESIDE) {\n var editorWidth = width / this.$splits;\n for (var i = 0; i < this.$splits; i++) {\n editor = this.$editors[i];\n editor.container.style.width = editorWidth + \"px\";\n editor.container.style.top = \"0px\";\n editor.container.style.left = i * editorWidth + \"px\";\n editor.container.style.height = height + \"px\";\n editor.resize();\n }\n } else {\n var editorHeight = height / this.$splits;\n for (var i = 0; i < this.$splits; i++) {\n editor = this.$editors[i];\n editor.container.style.width = width + \"px\";\n editor.container.style.top = i * editorHeight + \"px\";\n editor.container.style.left = \"0px\";\n editor.container.style.height = editorHeight + \"px\";\n editor.resize();\n }\n }\n };\n\n}).call(Split.prototype);\n\nexports.Split = Split;\n});\n\nace.define(\"ace/ext/split\",[\"require\",\"exports\",\"module\",\"ace/split\"], function(require, exports, module) {\n\"use strict\";\nmodule.exports = require(\"../split\");\n\n}); (function() {\n ace.require([\"ace/ext/split\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/sql_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\n\nvar SqlHighlightRules = function() {\n\n var keywords = (\n \"select|insert|update|delete|from|where|and|or|group|by|order|limit|offset|having|as|case|\" +\n \"when|then|else|end|type|left|right|join|on|outer|desc|asc|union|create|table|primary|key|if|\" +\n \"foreign|not|references|default|null|inner|cross|natural|database|drop|grant\"\n );\n\n var builtinConstants = (\n \"true|false\"\n );\n\n var builtinFunctions = (\n \"avg|count|first|last|max|min|sum|ucase|lcase|mid|len|round|rank|now|format|\" + \n \"coalesce|ifnull|isnull|nvl\"\n );\n\n var dataTypes = (\n \"int|numeric|decimal|date|varchar|char|bigint|float|double|bit|binary|text|set|timestamp|\" +\n \"money|real|number|integer\"\n );\n\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": builtinFunctions,\n \"keyword\": keywords,\n \"constant.language\": builtinConstants,\n \"storage.type\": dataTypes\n }, \"identifier\", true);\n\n this.$rules = {\n \"start\" : [ {\n token : \"comment\",\n regex : \"--.*$\"\n }, {\n token : \"comment\",\n start : \"/\\\\*\",\n end : \"\\\\*/\"\n }, {\n token : \"string\", // \" string\n regex : '\".*?\"'\n }, {\n token : \"string\", // ' string\n regex : \"'.*?'\"\n }, {\n token : \"string\", // ` string (apache drill)\n regex : \"`.*?`\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"keyword.operator\",\n regex : \"\\\\+|\\\\-|\\\\/|\\\\/\\\\/|%|<@>|@>|<@|&|\\\\^|~|<|>|<=|=>|==|!=|<>|=\"\n }, {\n token : \"paren.lparen\",\n regex : \"[\\\\(]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\)]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n } ]\n };\n this.normalizeRules();\n};\n\noop.inherits(SqlHighlightRules, TextHighlightRules);\n\nexports.SqlHighlightRules = SqlHighlightRules;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/folding/sql\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/cstyle\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../../lib/oop\");\nvar BaseFoldMode = require(\"./cstyle\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function() {};\n\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/sql\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/sql_highlight_rules\",\"ace/mode/folding/sql\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar SqlHighlightRules = require(\"./sql_highlight_rules\").SqlHighlightRules;\nvar SqlFoldMode = require(\"./folding/sql\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = SqlHighlightRules;\n this.foldingRules = new SqlFoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"--\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n\n this.$id = \"ace/mode/sql\";\n this.snippetFileId = \"ace/snippets/sql\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/sql\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport { PresetColors } from '../theme/interface';\nconst inverseColors = PresetColors.map(color => `${color}-inverse`);\nexport const PresetStatusColorTypes = ['success', 'processing', 'error', 'default', 'warning'];\n/**\n * determine if the color keyword belongs to the `Ant Design` {@link PresetColors}.\n * @param color color to be judged\n * @param includeInverse whether to include reversed colors\n */\nexport function isPresetColor(color) {\n let includeInverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (includeInverse) {\n return [].concat(_toConsumableArray(inverseColors), _toConsumableArray(PresetColors)).includes(color);\n }\n return PresetColors.includes(color);\n}\nexport function isPresetStatusColor(color) {\n return PresetStatusColorTypes.includes(color);\n}","import React from 'react';\nexport function isFragment(child) {\n return child && /*#__PURE__*/React.isValidElement(child) && child.type === React.Fragment;\n}\nexport const replaceElement = (element, replacement, props) => {\n if (! /*#__PURE__*/React.isValidElement(element)) {\n return replacement;\n }\n return /*#__PURE__*/React.cloneElement(element, typeof props === 'function' ? props(element.props || {}) : props);\n};\nexport function cloneElement(element, props) {\n return replaceElement(element, element, props);\n}","import * as React from 'react';\nimport rcWarning, { resetWarned as rcResetWarned } from \"rc-util/es/warning\";\nexport function noop() {}\nlet deprecatedWarnList = null;\nexport function resetWarned() {\n deprecatedWarnList = null;\n rcResetWarned();\n}\n// eslint-disable-next-line import/no-mutable-exports\nlet warning = noop;\nif (process.env.NODE_ENV !== 'production') {\n warning = (valid, component, message) => {\n rcWarning(valid, `[antd: ${component}] ${message}`);\n // StrictMode will inject console which will not throw warning in React 17.\n if (process.env.NODE_ENV === 'test') {\n resetWarned();\n }\n };\n}\nexport const WarningContext = /*#__PURE__*/React.createContext({});\n/**\n * This is a hook but we not named as `useWarning`\n * since this is only used in development.\n * We should always wrap this in `if (process.env.NODE_ENV !== 'production')` condition\n */\nexport const devUseWarning = process.env.NODE_ENV !== 'production' ? component => {\n const {\n strict\n } = React.useContext(WarningContext);\n const typeWarning = (valid, type, message) => {\n if (!valid) {\n if (strict === false && type === 'deprecated') {\n const existWarning = deprecatedWarnList;\n if (!deprecatedWarnList) {\n deprecatedWarnList = {};\n }\n deprecatedWarnList[component] = deprecatedWarnList[component] || [];\n if (!deprecatedWarnList[component].includes(message || '')) {\n deprecatedWarnList[component].push(message || '');\n }\n // Warning for the first time\n if (!existWarning) {\n // eslint-disable-next-line no-console\n console.warn('[antd] There exists deprecated usage in your code:', deprecatedWarnList);\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(valid, component, message) : void 0;\n }\n }\n };\n typeWarning.deprecated = (valid, oldProp, newProp, message) => {\n typeWarning(valid, 'deprecated', `\\`${oldProp}\\` is deprecated. Please use \\`${newProp}\\` instead.${message ? ` ${message}` : ''}`);\n };\n return typeWarning;\n} : () => {\n const noopWarning = () => {};\n noopWarning.deprecated = noop;\n return noopWarning;\n};\nexport default warning;","\"use client\";\n\nimport * as React from 'react';\nconst DisabledContext = /*#__PURE__*/React.createContext(false);\nexport const DisabledContextProvider = _ref => {\n let {\n children,\n disabled\n } = _ref;\n const originDisabled = React.useContext(DisabledContext);\n return /*#__PURE__*/React.createElement(DisabledContext.Provider, {\n value: disabled !== null && disabled !== void 0 ? disabled : originDisabled\n }, children);\n};\nexport default DisabledContext;","\"use client\";\n\nimport * as React from 'react';\nconst SizeContext = /*#__PURE__*/React.createContext(undefined);\nexport const SizeContextProvider = _ref => {\n let {\n children,\n size\n } = _ref;\n const originSize = React.useContext(SizeContext);\n return /*#__PURE__*/React.createElement(SizeContext.Provider, {\n value: size || originSize\n }, children);\n};\nexport default SizeContext;","import * as React from 'react';\nexport const defaultIconPrefixCls = 'anticon';\nconst defaultGetPrefixCls = (suffixCls, customizePrefixCls) => {\n if (customizePrefixCls) {\n return customizePrefixCls;\n }\n return suffixCls ? `ant-${suffixCls}` : 'ant';\n};\n// zombieJ: 🚨 Do not pass `defaultRenderEmpty` here since it will cause circular dependency.\nexport const ConfigContext = /*#__PURE__*/React.createContext({\n // We provide a default function for Context without provider\n getPrefixCls: defaultGetPrefixCls,\n iconPrefixCls: defaultIconPrefixCls\n});\nexport const {\n Consumer: ConfigConsumer\n} = ConfigContext;","\"use client\";\n\nimport { createContext } from 'react';\n// ZombieJ: We export single file here since\n// ConfigProvider use this which will make loop deps\n// to import whole `rc-field-form`\nexport default /*#__PURE__*/createContext(undefined);","const locale = {\n placeholder: 'Select time',\n rangePlaceholder: ['Start time', 'End time']\n};\nexport default locale;","import CalendarLocale from \"rc-picker/es/locale/en_US\";\nimport TimePickerLocale from '../../time-picker/locale/en_US';\n// Merge into a locale object\nconst locale = {\n lang: Object.assign({\n placeholder: 'Select date',\n yearPlaceholder: 'Select year',\n quarterPlaceholder: 'Select quarter',\n monthPlaceholder: 'Select month',\n weekPlaceholder: 'Select week',\n rangePlaceholder: ['Start date', 'End date'],\n rangeYearPlaceholder: ['Start year', 'End year'],\n rangeQuarterPlaceholder: ['Start quarter', 'End quarter'],\n rangeMonthPlaceholder: ['Start month', 'End month'],\n rangeWeekPlaceholder: ['Start week', 'End week']\n }, CalendarLocale),\n timePickerLocale: Object.assign({}, TimePickerLocale)\n};\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\nexport default locale;","var locale = {\n locale: 'en_US',\n today: 'Today',\n now: 'Now',\n backToToday: 'Back to today',\n ok: 'OK',\n clear: 'Clear',\n month: 'Month',\n year: 'Year',\n timeSelect: 'select time',\n dateSelect: 'select date',\n weekSelect: 'Choose a week',\n monthSelect: 'Choose a month',\n yearSelect: 'Choose a year',\n decadeSelect: 'Choose a decade',\n yearFormat: 'YYYY',\n dateFormat: 'M/D/YYYY',\n dayFormat: 'D',\n dateTimeFormat: 'M/D/YYYY HH:mm:ss',\n monthBeforeYear: true,\n previousMonth: 'Previous month (PageUp)',\n nextMonth: 'Next month (PageDown)',\n previousYear: 'Last year (Control + left)',\n nextYear: 'Next year (Control + right)',\n previousDecade: 'Last decade',\n nextDecade: 'Next decade',\n previousCentury: 'Last century',\n nextCentury: 'Next century'\n};\nexport default locale;","/* eslint-disable no-template-curly-in-string */\nimport Pagination from \"rc-pagination/es/locale/en_US\";\nimport Calendar from '../calendar/locale/en_US';\nimport DatePicker from '../date-picker/locale/en_US';\nimport TimePicker from '../time-picker/locale/en_US';\nconst typeTemplate = '${label} is not a valid ${type}';\nconst localeValues = {\n locale: 'en',\n Pagination,\n DatePicker,\n TimePicker,\n Calendar,\n global: {\n placeholder: 'Please select'\n },\n Table: {\n filterTitle: 'Filter menu',\n filterConfirm: 'OK',\n filterReset: 'Reset',\n filterEmptyText: 'No filters',\n filterCheckall: 'Select all items',\n filterSearchPlaceholder: 'Search in filters',\n emptyText: 'No data',\n selectAll: 'Select current page',\n selectInvert: 'Invert current page',\n selectNone: 'Clear all data',\n selectionAll: 'Select all data',\n sortTitle: 'Sort',\n expand: 'Expand row',\n collapse: 'Collapse row',\n triggerDesc: 'Click to sort descending',\n triggerAsc: 'Click to sort ascending',\n cancelSort: 'Click to cancel sorting'\n },\n Tour: {\n Next: 'Next',\n Previous: 'Previous',\n Finish: 'Finish'\n },\n Modal: {\n okText: 'OK',\n cancelText: 'Cancel',\n justOkText: 'OK'\n },\n Popconfirm: {\n okText: 'OK',\n cancelText: 'Cancel'\n },\n Transfer: {\n titles: ['', ''],\n searchPlaceholder: 'Search here',\n itemUnit: 'item',\n itemsUnit: 'items',\n remove: 'Remove',\n selectCurrent: 'Select current page',\n removeCurrent: 'Remove current page',\n selectAll: 'Select all data',\n deselectAll: 'Deselect all data',\n removeAll: 'Remove all data',\n selectInvert: 'Invert current page'\n },\n Upload: {\n uploading: 'Uploading...',\n removeFile: 'Remove file',\n uploadError: 'Upload error',\n previewFile: 'Preview file',\n downloadFile: 'Download file'\n },\n Empty: {\n description: 'No data'\n },\n Icon: {\n icon: 'icon'\n },\n Text: {\n edit: 'Edit',\n copy: 'Copy',\n copied: 'Copied',\n expand: 'Expand',\n collapse: 'Collapse'\n },\n Form: {\n optional: '(optional)',\n defaultValidateMessages: {\n default: 'Field validation error for ${label}',\n required: 'Please enter ${label}',\n enum: '${label} must be one of [${enum}]',\n whitespace: '${label} cannot be a blank character',\n date: {\n format: '${label} date format is invalid',\n parse: '${label} cannot be converted to a date',\n invalid: '${label} is an invalid date'\n },\n types: {\n string: typeTemplate,\n method: typeTemplate,\n array: typeTemplate,\n object: typeTemplate,\n number: typeTemplate,\n date: typeTemplate,\n boolean: typeTemplate,\n integer: typeTemplate,\n float: typeTemplate,\n regexp: typeTemplate,\n email: typeTemplate,\n url: typeTemplate,\n hex: typeTemplate\n },\n string: {\n len: '${label} must be ${len} characters',\n min: '${label} must be at least ${min} characters',\n max: '${label} must be up to ${max} characters',\n range: '${label} must be between ${min}-${max} characters'\n },\n number: {\n len: '${label} must be equal to ${len}',\n min: '${label} must be minimum ${min}',\n max: '${label} must be maximum ${max}',\n range: '${label} must be between ${min}-${max}'\n },\n array: {\n len: 'Must be ${len} ${label}',\n min: 'At least ${min} ${label}',\n max: 'At most ${max} ${label}',\n range: 'The amount of ${label} must be between ${min}-${max}'\n },\n pattern: {\n mismatch: '${label} does not match the pattern ${pattern}'\n }\n }\n },\n Image: {\n preview: 'Preview'\n },\n QRCode: {\n expired: 'QR code expired',\n refresh: 'Refresh',\n scanned: 'Scanned'\n },\n ColorPicker: {\n presetEmpty: 'Empty'\n }\n};\nexport default localeValues;","var locale = {\n // Options\n items_per_page: '/ page',\n jump_to: 'Go to',\n jump_to_confirm: 'confirm',\n page: 'Page',\n // Pagination\n prev_page: 'Previous Page',\n next_page: 'Next Page',\n prev_5: 'Previous 5 Pages',\n next_5: 'Next 5 Pages',\n prev_3: 'Previous 3 Pages',\n next_3: 'Next 3 Pages',\n page_size: 'Page Size'\n};\nexport default locale;","import defaultLocale from '../locale/en_US';\nlet runtimeLocale = Object.assign({}, defaultLocale.Modal);\nlet localeList = [];\nconst generateLocale = () => localeList.reduce((merged, locale) => Object.assign(Object.assign({}, merged), locale), defaultLocale.Modal);\nexport function changeConfirmLocale(newLocale) {\n if (newLocale) {\n const cloneLocale = Object.assign({}, newLocale);\n localeList.push(cloneLocale);\n runtimeLocale = generateLocale();\n return () => {\n localeList = localeList.filter(locale => locale !== cloneLocale);\n runtimeLocale = generateLocale();\n };\n }\n runtimeLocale = Object.assign({}, defaultLocale.Modal);\n}\nexport function getConfirmLocale() {\n return runtimeLocale;\n}","import { createContext } from 'react';\nconst LocaleContext = /*#__PURE__*/createContext(undefined);\nexport default LocaleContext;","\"use client\";\n\nimport * as React from 'react';\nimport { devUseWarning } from '../_util/warning';\nimport { changeConfirmLocale } from '../modal/locale';\nimport LocaleContext from './context';\nexport { default as useLocale } from './useLocale';\nexport const ANT_MARK = 'internalMark';\nconst LocaleProvider = props => {\n const {\n locale = {},\n children,\n _ANT_MARK__\n } = props;\n if (process.env.NODE_ENV !== 'production') {\n const warning = devUseWarning('LocaleProvider');\n process.env.NODE_ENV !== \"production\" ? warning(_ANT_MARK__ === ANT_MARK, 'deprecated', '`LocaleProvider` is deprecated. Please use `locale` with `ConfigProvider` instead: http://u.ant.design/locale') : void 0;\n }\n React.useEffect(() => {\n const clearLocale = changeConfirmLocale(locale && locale.Modal);\n return clearLocale;\n }, [locale]);\n const getMemoizedContextValue = React.useMemo(() => Object.assign(Object.assign({}, locale), {\n exist: true\n }), [locale]);\n return /*#__PURE__*/React.createElement(LocaleContext.Provider, {\n value: getMemoizedContextValue\n }, children);\n};\nif (process.env.NODE_ENV !== 'production') {\n LocaleProvider.displayName = 'LocaleProvider';\n}\nexport default LocaleProvider;","/* eslint-disable import/prefer-default-export, prefer-destructuring */\nimport { generate } from '@ant-design/colors';\nimport { TinyColor } from '@ctrl/tinycolor';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport { updateCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport warning from '../_util/warning';\nconst dynamicStyleMark = `-ant-${Date.now()}-${Math.random()}`;\nexport function getStyle(globalPrefixCls, theme) {\n const variables = {};\n const formatColor = (color, updater) => {\n let clone = color.clone();\n clone = (updater === null || updater === void 0 ? void 0 : updater(clone)) || clone;\n return clone.toRgbString();\n };\n const fillColor = (colorVal, type) => {\n const baseColor = new TinyColor(colorVal);\n const colorPalettes = generate(baseColor.toRgbString());\n variables[`${type}-color`] = formatColor(baseColor);\n variables[`${type}-color-disabled`] = colorPalettes[1];\n variables[`${type}-color-hover`] = colorPalettes[4];\n variables[`${type}-color-active`] = colorPalettes[6];\n variables[`${type}-color-outline`] = baseColor.clone().setAlpha(0.2).toRgbString();\n variables[`${type}-color-deprecated-bg`] = colorPalettes[0];\n variables[`${type}-color-deprecated-border`] = colorPalettes[2];\n };\n // ================ Primary Color ================\n if (theme.primaryColor) {\n fillColor(theme.primaryColor, 'primary');\n const primaryColor = new TinyColor(theme.primaryColor);\n const primaryColors = generate(primaryColor.toRgbString());\n // Legacy - We should use semantic naming standard\n primaryColors.forEach((color, index) => {\n variables[`primary-${index + 1}`] = color;\n });\n // Deprecated\n variables['primary-color-deprecated-l-35'] = formatColor(primaryColor, c => c.lighten(35));\n variables['primary-color-deprecated-l-20'] = formatColor(primaryColor, c => c.lighten(20));\n variables['primary-color-deprecated-t-20'] = formatColor(primaryColor, c => c.tint(20));\n variables['primary-color-deprecated-t-50'] = formatColor(primaryColor, c => c.tint(50));\n variables['primary-color-deprecated-f-12'] = formatColor(primaryColor, c => c.setAlpha(c.getAlpha() * 0.12));\n const primaryActiveColor = new TinyColor(primaryColors[0]);\n variables['primary-color-active-deprecated-f-30'] = formatColor(primaryActiveColor, c => c.setAlpha(c.getAlpha() * 0.3));\n variables['primary-color-active-deprecated-d-02'] = formatColor(primaryActiveColor, c => c.darken(2));\n }\n // ================ Success Color ================\n if (theme.successColor) {\n fillColor(theme.successColor, 'success');\n }\n // ================ Warning Color ================\n if (theme.warningColor) {\n fillColor(theme.warningColor, 'warning');\n }\n // ================= Error Color =================\n if (theme.errorColor) {\n fillColor(theme.errorColor, 'error');\n }\n // ================= Info Color ==================\n if (theme.infoColor) {\n fillColor(theme.infoColor, 'info');\n }\n // Convert to css variables\n const cssList = Object.keys(variables).map(key => `--${globalPrefixCls}-${key}: ${variables[key]};`);\n return `\n :root {\n ${cssList.join('\\n')}\n }\n `.trim();\n}\nexport function registerTheme(globalPrefixCls, theme) {\n const style = getStyle(globalPrefixCls, theme);\n if (canUseDom()) {\n updateCSS(style, `${dynamicStyleMark}-dynamic-theme`);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'ConfigProvider', 'SSR do not support dynamic theme with css variables.') : void 0;\n }\n}","import * as React from 'react';\nconst fullClone = Object.assign({}, React);\nconst {\n useId\n} = fullClone;\nconst useEmptyId = () => '';\nconst useThemeKey = typeof useId === 'undefined' ? useEmptyId : useId;\nexport default useThemeKey;","\"use client\";\n\nimport * as React from 'react';\nimport { Provider as MotionProvider } from 'rc-motion';\nimport { useToken } from '../theme/internal';\nexport default function MotionWrapper(props) {\n const {\n children\n } = props;\n const [, token] = useToken();\n const {\n motion\n } = token;\n const needWrapMotionProviderRef = React.useRef(false);\n needWrapMotionProviderRef.current = needWrapMotionProviderRef.current || motion === false;\n if (needWrapMotionProviderRef.current) {\n return /*#__PURE__*/React.createElement(MotionProvider, {\n motion: motion\n }, children);\n }\n return children;\n}","\"use client\";\n\nimport * as React from 'react';\nimport { devUseWarning } from '../_util/warning';\n/**\n * Warning for ConfigProviderProps.\n * This will be empty function in production.\n */\nconst PropWarning = /*#__PURE__*/React.memo(_ref => {\n let {\n dropdownMatchSelectWidth\n } = _ref;\n const warning = devUseWarning('ConfigProvider');\n warning.deprecated(dropdownMatchSelectWidth === undefined, 'dropdownMatchSelectWidth', 'popupMatchSelectWidth');\n return null;\n});\nif (process.env.NODE_ENV !== 'production') {\n PropWarning.displayName = 'PropWarning';\n}\nexport default process.env.NODE_ENV !== 'production' ? PropWarning : () => null;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\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};\nimport * as React from 'react';\nimport { createTheme } from '@ant-design/cssinjs';\nimport IconContext from \"@ant-design/icons/es/components/Context\";\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport { merge } from \"rc-util/es/utils/set\";\nimport warning, { devUseWarning, WarningContext } from '../_util/warning';\nimport ValidateMessagesContext from '../form/validateMessagesContext';\nimport LocaleProvider, { ANT_MARK } from '../locale';\nimport LocaleContext from '../locale/context';\nimport defaultLocale from '../locale/en_US';\nimport { defaultTheme, DesignTokenContext } from '../theme/context';\nimport defaultSeedToken from '../theme/themes/seed';\nimport { ConfigConsumer, ConfigContext, defaultIconPrefixCls } from './context';\nimport { registerTheme } from './cssVariables';\nimport { DisabledContextProvider } from './DisabledContext';\nimport useConfig from './hooks/useConfig';\nimport useTheme from './hooks/useTheme';\nimport MotionWrapper from './MotionWrapper';\nimport PropWarning from './PropWarning';\nimport SizeContext, { SizeContextProvider } from './SizeContext';\nimport useStyle from './style';\n/**\n * Since too many feedback using static method like `Modal.confirm` not getting theme, we record the\n * theme register info here to help developer get warning info.\n */\nlet existThemeConfig = false;\nexport const warnContext = process.env.NODE_ENV !== 'production' ? componentName => {\n process.env.NODE_ENV !== \"production\" ? warning(!existThemeConfig, componentName, `Static function can not consume context like dynamic theme. Please use 'App' component instead.`) : void 0;\n} : /* istanbul ignore next */\nnull;\nexport { ConfigConsumer, ConfigContext, defaultIconPrefixCls };\nexport const configConsumerProps = ['getTargetContainer', 'getPopupContainer', 'rootPrefixCls', 'getPrefixCls', 'renderEmpty', 'csp', 'autoInsertSpaceInButton', 'locale'];\n// These props is used by `useContext` directly in sub component\nconst PASSED_PROPS = ['getTargetContainer', 'getPopupContainer', 'renderEmpty', 'input', 'pagination', 'form', 'select', 'button'];\nexport const defaultPrefixCls = 'ant';\nlet globalPrefixCls;\nlet globalIconPrefixCls;\nlet globalTheme;\nlet globalHolderRender;\nfunction getGlobalPrefixCls() {\n return globalPrefixCls || defaultPrefixCls;\n}\nfunction getGlobalIconPrefixCls() {\n return globalIconPrefixCls || defaultIconPrefixCls;\n}\nfunction isLegacyTheme(theme) {\n return Object.keys(theme).some(key => key.endsWith('Color'));\n}\nconst setGlobalConfig = props => {\n const {\n prefixCls,\n iconPrefixCls,\n theme,\n holderRender\n } = props;\n if (prefixCls !== undefined) {\n globalPrefixCls = prefixCls;\n }\n if (iconPrefixCls !== undefined) {\n globalIconPrefixCls = iconPrefixCls;\n }\n if ('holderRender' in props) {\n globalHolderRender = holderRender;\n }\n if (theme) {\n if (isLegacyTheme(theme)) {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'ConfigProvider', '`config` of css variable theme is not work in v5. Please use new `theme` config instead.') : void 0;\n registerTheme(getGlobalPrefixCls(), theme);\n } else {\n globalTheme = theme;\n }\n }\n};\nexport const globalConfig = () => ({\n getPrefixCls: (suffixCls, customizePrefixCls) => {\n if (customizePrefixCls) {\n return customizePrefixCls;\n }\n return suffixCls ? `${getGlobalPrefixCls()}-${suffixCls}` : getGlobalPrefixCls();\n },\n getIconPrefixCls: getGlobalIconPrefixCls,\n getRootPrefixCls: () => {\n // If Global prefixCls provided, use this\n if (globalPrefixCls) {\n return globalPrefixCls;\n }\n // Fallback to default prefixCls\n return getGlobalPrefixCls();\n },\n getTheme: () => globalTheme,\n holderRender: globalHolderRender\n});\nconst ProviderChildren = props => {\n const {\n children,\n csp: customCsp,\n autoInsertSpaceInButton,\n alert,\n anchor,\n form,\n locale,\n componentSize,\n direction,\n space,\n virtual,\n dropdownMatchSelectWidth,\n popupMatchSelectWidth,\n popupOverflow,\n legacyLocale,\n parentContext,\n iconPrefixCls: customIconPrefixCls,\n theme,\n componentDisabled,\n segmented,\n statistic,\n spin,\n calendar,\n carousel,\n cascader,\n collapse,\n typography,\n checkbox,\n descriptions,\n divider,\n drawer,\n skeleton,\n steps,\n image,\n layout,\n list,\n mentions,\n modal,\n progress,\n result,\n slider,\n breadcrumb,\n menu,\n pagination,\n input,\n textArea,\n empty,\n badge,\n radio,\n rate,\n switch: SWITCH,\n transfer,\n avatar,\n message,\n tag,\n table,\n card,\n tabs,\n timeline,\n timePicker,\n upload,\n notification,\n tree,\n colorPicker,\n datePicker,\n rangePicker,\n flex,\n wave,\n dropdown,\n warning: warningConfig,\n tour,\n floatButtonGroup\n } = props;\n // =================================== Context ===================================\n const getPrefixCls = React.useCallback((suffixCls, customizePrefixCls) => {\n const {\n prefixCls\n } = props;\n if (customizePrefixCls) {\n return customizePrefixCls;\n }\n const mergedPrefixCls = prefixCls || parentContext.getPrefixCls('');\n return suffixCls ? `${mergedPrefixCls}-${suffixCls}` : mergedPrefixCls;\n }, [parentContext.getPrefixCls, props.prefixCls]);\n const iconPrefixCls = customIconPrefixCls || parentContext.iconPrefixCls || defaultIconPrefixCls;\n const csp = customCsp || parentContext.csp;\n useStyle(iconPrefixCls, csp);\n const mergedTheme = useTheme(theme, parentContext.theme, {\n prefixCls: getPrefixCls('')\n });\n if (process.env.NODE_ENV !== 'production') {\n existThemeConfig = existThemeConfig || !!mergedTheme;\n }\n const baseConfig = {\n csp,\n autoInsertSpaceInButton,\n alert,\n anchor,\n locale: locale || legacyLocale,\n direction,\n space,\n virtual,\n popupMatchSelectWidth: popupMatchSelectWidth !== null && popupMatchSelectWidth !== void 0 ? popupMatchSelectWidth : dropdownMatchSelectWidth,\n popupOverflow,\n getPrefixCls,\n iconPrefixCls,\n theme: mergedTheme,\n segmented,\n statistic,\n spin,\n calendar,\n carousel,\n cascader,\n collapse,\n typography,\n checkbox,\n descriptions,\n divider,\n drawer,\n skeleton,\n steps,\n image,\n input,\n textArea,\n layout,\n list,\n mentions,\n modal,\n progress,\n result,\n slider,\n breadcrumb,\n menu,\n pagination,\n empty,\n badge,\n radio,\n rate,\n switch: SWITCH,\n transfer,\n avatar,\n message,\n tag,\n table,\n card,\n tabs,\n timeline,\n timePicker,\n upload,\n notification,\n tree,\n colorPicker,\n datePicker,\n rangePicker,\n flex,\n wave,\n dropdown,\n warning: warningConfig,\n tour,\n floatButtonGroup\n };\n if (process.env.NODE_ENV !== 'production') {\n const warningFn = devUseWarning('ConfigProvider');\n warningFn(!('autoInsertSpaceInButton' in props), 'deprecated', '`autoInsertSpaceInButton` is deprecated. Please use `{ button: { autoInsertSpace: boolean }}` instead.');\n }\n const config = Object.assign({}, parentContext);\n Object.keys(baseConfig).forEach(key => {\n if (baseConfig[key] !== undefined) {\n config[key] = baseConfig[key];\n }\n });\n // Pass the props used by `useContext` directly with child component.\n // These props should merged into `config`.\n PASSED_PROPS.forEach(propName => {\n const propValue = props[propName];\n if (propValue) {\n config[propName] = propValue;\n }\n });\n if (typeof autoInsertSpaceInButton !== 'undefined') {\n // merge deprecated api\n config.button = Object.assign({\n autoInsertSpace: autoInsertSpaceInButton\n }, config.button);\n }\n // https://github.com/ant-design/ant-design/issues/27617\n const memoedConfig = useMemo(() => config, config, (prevConfig, currentConfig) => {\n const prevKeys = Object.keys(prevConfig);\n const currentKeys = Object.keys(currentConfig);\n return prevKeys.length !== currentKeys.length || prevKeys.some(key => prevConfig[key] !== currentConfig[key]);\n });\n const memoIconContextValue = React.useMemo(() => ({\n prefixCls: iconPrefixCls,\n csp\n }), [iconPrefixCls, csp]);\n let childNode = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(PropWarning, {\n dropdownMatchSelectWidth: dropdownMatchSelectWidth\n }), children);\n const validateMessages = React.useMemo(() => {\n var _a, _b, _c, _d;\n return merge(((_a = defaultLocale.Form) === null || _a === void 0 ? void 0 : _a.defaultValidateMessages) || {}, ((_c = (_b = memoedConfig.locale) === null || _b === void 0 ? void 0 : _b.Form) === null || _c === void 0 ? void 0 : _c.defaultValidateMessages) || {}, ((_d = memoedConfig.form) === null || _d === void 0 ? void 0 : _d.validateMessages) || {}, (form === null || form === void 0 ? void 0 : form.validateMessages) || {});\n }, [memoedConfig, form === null || form === void 0 ? void 0 : form.validateMessages]);\n if (Object.keys(validateMessages).length > 0) {\n childNode = /*#__PURE__*/React.createElement(ValidateMessagesContext.Provider, {\n value: validateMessages\n }, childNode);\n }\n if (locale) {\n childNode = /*#__PURE__*/React.createElement(LocaleProvider, {\n locale: locale,\n _ANT_MARK__: ANT_MARK\n }, childNode);\n }\n if (iconPrefixCls || csp) {\n childNode = /*#__PURE__*/React.createElement(IconContext.Provider, {\n value: memoIconContextValue\n }, childNode);\n }\n if (componentSize) {\n childNode = /*#__PURE__*/React.createElement(SizeContextProvider, {\n size: componentSize\n }, childNode);\n }\n // =================================== Motion ===================================\n childNode = /*#__PURE__*/React.createElement(MotionWrapper, null, childNode);\n // ================================ Dynamic theme ================================\n const memoTheme = React.useMemo(() => {\n const _a = mergedTheme || {},\n {\n algorithm,\n token,\n components,\n cssVar\n } = _a,\n rest = __rest(_a, [\"algorithm\", \"token\", \"components\", \"cssVar\"]);\n const themeObj = algorithm && (!Array.isArray(algorithm) || algorithm.length > 0) ? createTheme(algorithm) : defaultTheme;\n const parsedComponents = {};\n Object.entries(components || {}).forEach(_ref => {\n let [componentName, componentToken] = _ref;\n const parsedToken = Object.assign({}, componentToken);\n if ('algorithm' in parsedToken) {\n if (parsedToken.algorithm === true) {\n parsedToken.theme = themeObj;\n } else if (Array.isArray(parsedToken.algorithm) || typeof parsedToken.algorithm === 'function') {\n parsedToken.theme = createTheme(parsedToken.algorithm);\n }\n delete parsedToken.algorithm;\n }\n parsedComponents[componentName] = parsedToken;\n });\n const mergedToken = Object.assign(Object.assign({}, defaultSeedToken), token);\n return Object.assign(Object.assign({}, rest), {\n theme: themeObj,\n token: mergedToken,\n components: parsedComponents,\n override: Object.assign({\n override: mergedToken\n }, parsedComponents),\n cssVar: cssVar\n });\n }, [mergedTheme]);\n if (theme) {\n childNode = /*#__PURE__*/React.createElement(DesignTokenContext.Provider, {\n value: memoTheme\n }, childNode);\n }\n // ================================== Warning ===================================\n if (memoedConfig.warning) {\n childNode = /*#__PURE__*/React.createElement(WarningContext.Provider, {\n value: memoedConfig.warning\n }, childNode);\n }\n // =================================== Render ===================================\n if (componentDisabled !== undefined) {\n childNode = /*#__PURE__*/React.createElement(DisabledContextProvider, {\n disabled: componentDisabled\n }, childNode);\n }\n return /*#__PURE__*/React.createElement(ConfigContext.Provider, {\n value: memoedConfig\n }, childNode);\n};\nconst ConfigProvider = props => {\n const context = React.useContext(ConfigContext);\n const antLocale = React.useContext(LocaleContext);\n return /*#__PURE__*/React.createElement(ProviderChildren, Object.assign({\n parentContext: context,\n legacyLocale: antLocale\n }, props));\n};\nConfigProvider.ConfigContext = ConfigContext;\nConfigProvider.SizeContext = SizeContext;\nConfigProvider.config = setGlobalConfig;\nConfigProvider.useConfig = useConfig;\nObject.defineProperty(ConfigProvider, 'SizeContext', {\n get: () => {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'ConfigProvider', 'ConfigProvider.SizeContext is deprecated. Please use `ConfigProvider.useConfig().componentSize` instead.') : void 0;\n return SizeContext;\n }\n});\nif (process.env.NODE_ENV !== 'production') {\n ConfigProvider.displayName = 'ConfigProvider';\n}\nexport default ConfigProvider;","import useMemo from \"rc-util/es/hooks/useMemo\";\nimport isEqual from \"rc-util/es/isEqual\";\nimport { devUseWarning } from '../../_util/warning';\nimport { defaultConfig } from '../../theme/internal';\nimport useThemeKey from './useThemeKey';\nexport default function useTheme(theme, parentTheme, config) {\n var _a, _b;\n const warning = devUseWarning('ConfigProvider');\n const themeConfig = theme || {};\n const parentThemeConfig = themeConfig.inherit === false || !parentTheme ? Object.assign(Object.assign({}, defaultConfig), {\n hashed: (_a = parentTheme === null || parentTheme === void 0 ? void 0 : parentTheme.hashed) !== null && _a !== void 0 ? _a : defaultConfig.hashed,\n cssVar: parentTheme === null || parentTheme === void 0 ? void 0 : parentTheme.cssVar\n }) : parentTheme;\n const themeKey = useThemeKey();\n if (process.env.NODE_ENV !== 'production') {\n const cssVarEnabled = themeConfig.cssVar || parentThemeConfig.cssVar;\n const validKey = !!(typeof themeConfig.cssVar === 'object' && ((_b = themeConfig.cssVar) === null || _b === void 0 ? void 0 : _b.key) || themeKey);\n process.env.NODE_ENV !== \"production\" ? warning(!cssVarEnabled || validKey, 'breaking', 'Missing key in `cssVar` config. Please upgrade to React 18 or set `cssVar.key` manually in each ConfigProvider inside `cssVar` enabled ConfigProvider.') : void 0;\n }\n return useMemo(() => {\n var _a, _b;\n if (!theme) {\n return parentTheme;\n }\n // Override\n const mergedComponents = Object.assign({}, parentThemeConfig.components);\n Object.keys(theme.components || {}).forEach(componentName => {\n mergedComponents[componentName] = Object.assign(Object.assign({}, mergedComponents[componentName]), theme.components[componentName]);\n });\n const cssVarKey = `css-var-${themeKey.replace(/:/g, '')}`;\n const mergedCssVar = ((_a = themeConfig.cssVar) !== null && _a !== void 0 ? _a : parentThemeConfig.cssVar) && Object.assign(Object.assign(Object.assign({\n prefix: config === null || config === void 0 ? void 0 : config.prefixCls\n }, typeof parentThemeConfig.cssVar === 'object' ? parentThemeConfig.cssVar : {}), typeof themeConfig.cssVar === 'object' ? themeConfig.cssVar : {}), {\n key: typeof themeConfig.cssVar === 'object' && ((_b = themeConfig.cssVar) === null || _b === void 0 ? void 0 : _b.key) || cssVarKey\n });\n // Base token\n return Object.assign(Object.assign(Object.assign({}, parentThemeConfig), themeConfig), {\n token: Object.assign(Object.assign({}, parentThemeConfig.token), themeConfig.token),\n components: mergedComponents,\n cssVar: mergedCssVar\n });\n }, [themeConfig, parentThemeConfig], (prev, next) => prev.some((prevTheme, index) => {\n const nextTheme = next[index];\n return !isEqual(prevTheme, nextTheme, true);\n }));\n}","import { useContext } from 'react';\nimport DisabledContext from '../DisabledContext';\nimport SizeContext from '../SizeContext';\nfunction useConfig() {\n const componentDisabled = useContext(DisabledContext);\n const componentSize = useContext(SizeContext);\n return {\n componentDisabled,\n componentSize\n };\n}\nexport default useConfig;","\"use client\";\n\n/* eslint-disable import/prefer-default-export */\nimport { unit } from '@ant-design/cssinjs';\nexport { operationUnit } from './operationUnit';\nexport const textEllipsis = {\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n};\nexport const resetComponent = function (token) {\n let needInheritFontFamily = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return {\n boxSizing: 'border-box',\n margin: 0,\n padding: 0,\n color: token.colorText,\n fontSize: token.fontSize,\n // font-variant: @font-variant-base;\n lineHeight: token.lineHeight,\n listStyle: 'none',\n // font-feature-settings: @font-feature-settings-base;\n fontFamily: needInheritFontFamily ? 'inherit' : token.fontFamily\n };\n};\nexport const resetIcon = () => ({\n display: 'inline-flex',\n alignItems: 'center',\n color: 'inherit',\n fontStyle: 'normal',\n lineHeight: 0,\n textAlign: 'center',\n textTransform: 'none',\n // for SVG icon, see https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4\n verticalAlign: '-0.125em',\n textRendering: 'optimizeLegibility',\n '-webkit-font-smoothing': 'antialiased',\n '-moz-osx-font-smoothing': 'grayscale',\n '> *': {\n lineHeight: 1\n },\n svg: {\n display: 'inline-block'\n }\n});\nexport const clearFix = () => ({\n // https://github.com/ant-design/ant-design/issues/21301#issuecomment-583955229\n '&::before': {\n display: 'table',\n content: '\"\"'\n },\n '&::after': {\n // https://github.com/ant-design/ant-design/issues/21864\n display: 'table',\n clear: 'both',\n content: '\"\"'\n }\n});\nexport const genLinkStyle = token => ({\n a: {\n color: token.colorLink,\n textDecoration: token.linkDecoration,\n backgroundColor: 'transparent',\n // remove the gray background on active links in IE 10.\n outline: 'none',\n cursor: 'pointer',\n transition: `color ${token.motionDurationSlow}`,\n '-webkit-text-decoration-skip': 'objects',\n // remove gaps in links underline in iOS 8+ and Safari 8+.\n '&:hover': {\n color: token.colorLinkHover\n },\n '&:active': {\n color: token.colorLinkActive\n },\n [`&:active,\n &:hover`]: {\n textDecoration: token.linkHoverDecoration,\n outline: 0\n },\n // https://github.com/ant-design/ant-design/issues/22503\n '&:focus': {\n textDecoration: token.linkFocusDecoration,\n outline: 0\n },\n '&[disabled]': {\n color: token.colorTextDisabled,\n cursor: 'not-allowed'\n }\n }\n});\nexport const genCommonStyle = (token, componentPrefixCls, rootCls, resetFont) => {\n const prefixSelector = `[class^=\"${componentPrefixCls}\"], [class*=\" ${componentPrefixCls}\"]`;\n const rootPrefixSelector = rootCls ? `.${rootCls}` : prefixSelector;\n const resetStyle = {\n boxSizing: 'border-box',\n '&::before, &::after': {\n boxSizing: 'border-box'\n }\n };\n let resetFontStyle = {};\n if (resetFont !== false) {\n resetFontStyle = {\n fontFamily: token.fontFamily,\n fontSize: token.fontSize\n };\n }\n return {\n [rootPrefixSelector]: Object.assign(Object.assign(Object.assign({}, resetFontStyle), resetStyle), {\n [prefixSelector]: resetStyle\n })\n };\n};\nexport const genFocusOutline = token => ({\n outline: `${unit(token.lineWidthFocus)} solid ${token.colorPrimaryBorder}`,\n outlineOffset: 1,\n transition: 'outline-offset 0s, outline 0s'\n});\nexport const genFocusStyle = token => ({\n '&:focus-visible': Object.assign({}, genFocusOutline(token))\n});","\"use client\";\n\nimport React from 'react';\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nexport function pickClosable(context) {\n if (!context) {\n return undefined;\n }\n return {\n closable: context.closable,\n closeIcon: context.closeIcon\n };\n}\n/** Convert `closable` and `closeIcon` to config object */\nfunction useClosableConfig(closableCollection) {\n const {\n closable,\n closeIcon\n } = closableCollection || {};\n return React.useMemo(() => {\n if (\n // If `closable`, whatever rest be should be true\n !closable && (closable === false || closeIcon === false || closeIcon === null)) {\n return false;\n }\n if (closable === undefined && closeIcon === undefined) {\n return null;\n }\n let closableConfig = {\n closeIcon: typeof closeIcon !== 'boolean' && closeIcon !== null ? closeIcon : undefined\n };\n if (closable && typeof closable === 'object') {\n closableConfig = Object.assign(Object.assign({}, closableConfig), closable);\n }\n return closableConfig;\n }, [closable, closeIcon]);\n}\n/**\n * Assign object without `undefined` field. Will skip if is `false`.\n * This helps to handle both closableConfig or false\n */\nfunction assignWithoutUndefined() {\n const target = {};\n for (var _len = arguments.length, objList = new Array(_len), _key = 0; _key < _len; _key++) {\n objList[_key] = arguments[_key];\n }\n objList.forEach(obj => {\n if (obj) {\n Object.keys(obj).forEach(key => {\n if (obj[key] !== undefined) {\n target[key] = obj[key];\n }\n });\n }\n });\n return target;\n}\n/** Use same object to support `useMemo` optimization */\nconst EmptyFallbackCloseCollection = {};\nexport default function useClosable(propCloseCollection, contextCloseCollection) {\n let fallbackCloseCollection = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : EmptyFallbackCloseCollection;\n // Align the `props`, `context` `fallback` to config object first\n const propCloseConfig = useClosableConfig(propCloseCollection);\n const contextCloseConfig = useClosableConfig(contextCloseCollection);\n const mergedFallbackCloseCollection = React.useMemo(() => Object.assign({\n closeIcon: /*#__PURE__*/React.createElement(CloseOutlined, null)\n }, fallbackCloseCollection), [fallbackCloseCollection]);\n // Use fallback logic to fill the config\n const mergedClosableConfig = React.useMemo(() => {\n // ================ Props First ================\n // Skip if prop is disabled\n if (propCloseConfig === false) {\n return false;\n }\n if (propCloseConfig) {\n return assignWithoutUndefined(mergedFallbackCloseCollection, contextCloseConfig, propCloseConfig);\n }\n // =============== Context Second ==============\n // Skip if context is disabled\n if (contextCloseConfig === false) {\n return false;\n }\n if (contextCloseConfig) {\n return assignWithoutUndefined(mergedFallbackCloseCollection, contextCloseConfig);\n }\n // ============= Fallback Default ==============\n return !mergedFallbackCloseCollection.closable ? false : mergedFallbackCloseCollection;\n }, [propCloseConfig, contextCloseConfig, mergedFallbackCloseCollection]);\n // Calculate the final closeIcon\n return React.useMemo(() => {\n if (mergedClosableConfig === false) {\n return [false, null];\n }\n const {\n closeIconRender\n } = mergedFallbackCloseCollection;\n const {\n closeIcon\n } = mergedClosableConfig;\n let mergedCloseIcon = closeIcon;\n if (mergedCloseIcon !== null && mergedCloseIcon !== undefined) {\n // Wrap the closeIcon if needed\n if (closeIconRender) {\n mergedCloseIcon = closeIconRender(closeIcon);\n }\n // Wrap the closeIcon with aria props\n const ariaProps = pickAttrs(mergedClosableConfig, true);\n if (Object.keys(ariaProps).length) {\n mergedCloseIcon = /*#__PURE__*/React.isValidElement(mergedCloseIcon) ? ( /*#__PURE__*/React.cloneElement(mergedCloseIcon, ariaProps)) : ( /*#__PURE__*/React.createElement(\"span\", Object.assign({}, ariaProps), mergedCloseIcon));\n }\n }\n return [true, mergedCloseIcon];\n }, [mergedClosableConfig, mergedFallbackCloseCollection]);\n}","import { genComponentStyleHook } from '../../theme/internal';\nconst genWaveStyle = token => {\n const {\n componentCls,\n colorPrimary\n } = token;\n return {\n [componentCls]: {\n position: 'absolute',\n background: 'transparent',\n pointerEvents: 'none',\n boxSizing: 'border-box',\n color: `var(--wave-color, ${colorPrimary})`,\n boxShadow: `0 0 0 0 currentcolor`,\n opacity: 0.2,\n // =================== Motion ===================\n '&.wave-motion-appear': {\n transition: [`box-shadow 0.4s ${token.motionEaseOutCirc}`, `opacity 2s ${token.motionEaseOutCirc}`].join(','),\n '&-active': {\n boxShadow: `0 0 0 6px currentcolor`,\n opacity: 0\n },\n '&.wave-quick': {\n transition: [`box-shadow ${token.motionDurationSlow} ${token.motionEaseInOut}`, `opacity ${token.motionDurationSlow} ${token.motionEaseInOut}`].join(',')\n }\n }\n }\n };\n};\nexport default genComponentStyleHook('Wave', token => [genWaveStyle(token)]);","import { defaultPrefixCls } from '../../config-provider';\nexport const TARGET_CLS = `${defaultPrefixCls}-wave-target`;","import _regeneratorRuntime from \"@babel/runtime/helpers/esm/regeneratorRuntime\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as ReactDOM from 'react-dom';\n// Let compiler not to search module usage\nvar fullClone = _objectSpread({}, ReactDOM);\nvar version = fullClone.version,\n reactRender = fullClone.render,\n unmountComponentAtNode = fullClone.unmountComponentAtNode;\nvar createRoot;\ntry {\n var mainVersion = Number((version || '').split('.')[0]);\n if (mainVersion >= 18) {\n createRoot = fullClone.createRoot;\n }\n} catch (e) {\n // Do nothing;\n}\nfunction toggleWarning(skip) {\n var __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = fullClone.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n if (__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED && _typeof(__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED) === 'object') {\n __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.usingClientEntryPoint = skip;\n }\n}\nvar MARK = '__rc_react_root__';\n\n// ========================== Render ==========================\n\nfunction modernRender(node, container) {\n toggleWarning(true);\n var root = container[MARK] || createRoot(container);\n toggleWarning(false);\n root.render(node);\n container[MARK] = root;\n}\nfunction legacyRender(node, container) {\n reactRender(node, container);\n}\n\n/** @private Test usage. Not work in prod */\nexport function _r(node, container) {\n if (process.env.NODE_ENV !== 'production') {\n return legacyRender(node, container);\n }\n}\nexport function render(node, container) {\n if (createRoot) {\n modernRender(node, container);\n return;\n }\n legacyRender(node, container);\n}\n\n// ========================= Unmount ==========================\nfunction modernUnmount(_x) {\n return _modernUnmount.apply(this, arguments);\n}\nfunction _modernUnmount() {\n _modernUnmount = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(container) {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\", Promise.resolve().then(function () {\n var _container$MARK;\n (_container$MARK = container[MARK]) === null || _container$MARK === void 0 || _container$MARK.unmount();\n delete container[MARK];\n }));\n case 1:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return _modernUnmount.apply(this, arguments);\n}\nfunction legacyUnmount(container) {\n unmountComponentAtNode(container);\n}\n\n/** @private Test usage. Not work in prod */\nexport function _u(container) {\n if (process.env.NODE_ENV !== 'production') {\n return legacyUnmount(container);\n }\n}\nexport function unmount(_x2) {\n return _unmount.apply(this, arguments);\n}\nfunction _unmount() {\n _unmount = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(container) {\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (!(createRoot !== undefined)) {\n _context2.next = 2;\n break;\n }\n return _context2.abrupt(\"return\", modernUnmount(container));\n case 2:\n legacyUnmount(container);\n case 3:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return _unmount.apply(this, arguments);\n}","export function isNotGrey(color) {\n // eslint-disable-next-line no-useless-escape\n const match = (color || '').match(/rgba?\\((\\d*), (\\d*), (\\d*)(, [\\d.]*)?\\)/);\n if (match && match[1] && match[2] && match[3]) {\n return !(match[1] === match[2] && match[2] === match[3]);\n }\n return true;\n}\nexport function isValidWaveColor(color) {\n return color && color !== '#fff' && color !== '#ffffff' && color !== 'rgb(255, 255, 255)' && color !== 'rgba(255, 255, 255, 1)' && isNotGrey(color) && !/rgba\\((?:\\d*, ){3}0\\)/.test(color) &&\n // any transparent rgba color\n color !== 'transparent';\n}\nexport function getTargetWaveColor(node) {\n const {\n borderTopColor,\n borderColor,\n backgroundColor\n } = getComputedStyle(node);\n if (isValidWaveColor(borderTopColor)) {\n return borderTopColor;\n }\n if (isValidWaveColor(borderColor)) {\n return borderColor;\n }\n if (isValidWaveColor(backgroundColor)) {\n return backgroundColor;\n }\n return null;\n}","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport raf from \"rc-util/es/raf\";\nimport { render, unmount } from \"rc-util/es/React/render\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport { TARGET_CLS } from './interface';\nimport { getTargetWaveColor } from './util';\nfunction validateNum(value) {\n return Number.isNaN(value) ? 0 : value;\n}\nconst WaveEffect = props => {\n const {\n className,\n target,\n component\n } = props;\n const divRef = React.useRef(null);\n const [color, setWaveColor] = React.useState(null);\n const [borderRadius, setBorderRadius] = React.useState([]);\n const [left, setLeft] = React.useState(0);\n const [top, setTop] = React.useState(0);\n const [width, setWidth] = React.useState(0);\n const [height, setHeight] = React.useState(0);\n const [enabled, setEnabled] = React.useState(false);\n const waveStyle = {\n left,\n top,\n width,\n height,\n borderRadius: borderRadius.map(radius => `${radius}px`).join(' ')\n };\n if (color) {\n waveStyle['--wave-color'] = color;\n }\n function syncPos() {\n const nodeStyle = getComputedStyle(target);\n // Get wave color from target\n setWaveColor(getTargetWaveColor(target));\n const isStatic = nodeStyle.position === 'static';\n // Rect\n const {\n borderLeftWidth,\n borderTopWidth\n } = nodeStyle;\n setLeft(isStatic ? target.offsetLeft : validateNum(-parseFloat(borderLeftWidth)));\n setTop(isStatic ? target.offsetTop : validateNum(-parseFloat(borderTopWidth)));\n setWidth(target.offsetWidth);\n setHeight(target.offsetHeight);\n // Get border radius\n const {\n borderTopLeftRadius,\n borderTopRightRadius,\n borderBottomLeftRadius,\n borderBottomRightRadius\n } = nodeStyle;\n setBorderRadius([borderTopLeftRadius, borderTopRightRadius, borderBottomRightRadius, borderBottomLeftRadius].map(radius => validateNum(parseFloat(radius))));\n }\n React.useEffect(() => {\n if (target) {\n // We need delay to check position here\n // since UI may change after click\n const id = raf(() => {\n syncPos();\n setEnabled(true);\n });\n // Add resize observer to follow size\n let resizeObserver;\n if (typeof ResizeObserver !== 'undefined') {\n resizeObserver = new ResizeObserver(syncPos);\n resizeObserver.observe(target);\n }\n return () => {\n raf.cancel(id);\n resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();\n };\n }\n }, []);\n if (!enabled) {\n return null;\n }\n const isSmallComponent = (component === 'Checkbox' || component === 'Radio') && (target === null || target === void 0 ? void 0 : target.classList.contains(TARGET_CLS));\n return /*#__PURE__*/React.createElement(CSSMotion, {\n visible: true,\n motionAppear: true,\n motionName: \"wave-motion\",\n motionDeadline: 5000,\n onAppearEnd: (_, event) => {\n var _a;\n if (event.deadline || event.propertyName === 'opacity') {\n const holder = (_a = divRef.current) === null || _a === void 0 ? void 0 : _a.parentElement;\n unmount(holder).then(() => {\n holder === null || holder === void 0 ? void 0 : holder.remove();\n });\n }\n return false;\n }\n }, (_ref, ref) => {\n let {\n className: motionClassName\n } = _ref;\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: composeRef(divRef, ref),\n className: classNames(className, motionClassName, {\n 'wave-quick': isSmallComponent\n }),\n style: waveStyle\n });\n });\n};\nconst showWaveEffect = (target, info) => {\n var _a;\n const {\n component\n } = info;\n // Skip for unchecked checkbox\n if (component === 'Checkbox' && !((_a = target.querySelector('input')) === null || _a === void 0 ? void 0 : _a.checked)) {\n return;\n }\n // Create holder\n const holder = document.createElement('div');\n holder.style.position = 'absolute';\n holder.style.left = '0px';\n holder.style.top = '0px';\n target === null || target === void 0 ? void 0 : target.insertBefore(holder, target === null || target === void 0 ? void 0 : target.firstChild);\n render( /*#__PURE__*/React.createElement(WaveEffect, Object.assign({}, info, {\n target: target\n })), holder);\n};\nexport default showWaveEffect;","import React, { useContext, useRef } from 'react';\nimport classNames from 'classnames';\nimport isVisible from \"rc-util/es/Dom/isVisible\";\nimport { composeRef, supportRef } from \"rc-util/es/ref\";\nimport { ConfigContext } from '../../config-provider';\nimport { cloneElement } from '../reactNode';\nimport useStyle from './style';\nimport useWave from './useWave';\nconst Wave = props => {\n const {\n children,\n disabled,\n component\n } = props;\n const {\n getPrefixCls\n } = useContext(ConfigContext);\n const containerRef = useRef(null);\n // ============================== Style ===============================\n const prefixCls = getPrefixCls('wave');\n const [, hashId] = useStyle(prefixCls);\n // =============================== Wave ===============================\n const showWave = useWave(containerRef, classNames(prefixCls, hashId), component);\n // ============================== Effect ==============================\n React.useEffect(() => {\n const node = containerRef.current;\n if (!node || node.nodeType !== 1 || disabled) {\n return;\n }\n // Click handler\n const onClick = e => {\n // Fix radio button click twice\n if (!isVisible(e.target) ||\n // No need wave\n !node.getAttribute || node.getAttribute('disabled') || node.disabled || node.className.includes('disabled') || node.className.includes('-leave')) {\n return;\n }\n showWave(e);\n };\n // Bind events\n node.addEventListener('click', onClick, true);\n return () => {\n node.removeEventListener('click', onClick, true);\n };\n }, [disabled]);\n // ============================== Render ==============================\n if (! /*#__PURE__*/React.isValidElement(children)) {\n return children !== null && children !== void 0 ? children : null;\n }\n const ref = supportRef(children) ? composeRef(children.ref, containerRef) : containerRef;\n return cloneElement(children, {\n ref\n });\n};\nif (process.env.NODE_ENV !== 'production') {\n Wave.displayName = 'Wave';\n}\nexport default Wave;","import * as React from 'react';\nimport { useEvent } from 'rc-util';\nimport raf from \"rc-util/es/raf\";\nimport { ConfigContext } from '../../config-provider';\nimport useToken from '../../theme/useToken';\nimport { TARGET_CLS } from './interface';\nimport showWaveEffect from './WaveEffect';\nconst useWave = (nodeRef, className, component) => {\n const {\n wave\n } = React.useContext(ConfigContext);\n const [, token, hashId] = useToken();\n const showWave = useEvent(event => {\n const node = nodeRef.current;\n if ((wave === null || wave === void 0 ? void 0 : wave.disabled) || !node) {\n return;\n }\n const targetNode = node.querySelector(`.${TARGET_CLS}`) || node;\n const {\n showEffect\n } = wave || {};\n // Customize wave effect\n (showEffect || showWaveEffect)(targetNode, {\n className,\n token,\n component,\n event,\n hashId\n });\n });\n const rafId = React.useRef();\n // Merge trigger event into one for each frame\n const showDebounceWave = event => {\n raf.cancel(rafId.current);\n rafId.current = raf(() => {\n showWave(event);\n });\n };\n return showDebounceWave;\n};\nexport default useWave;","import { unit } from '@ant-design/cssinjs';\nimport { TinyColor } from '@ctrl/tinycolor';\nimport { resetComponent } from '../../style';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\n// ============================== Styles ==============================\nconst genBaseStyle = token => {\n const {\n paddingXXS,\n lineWidth,\n tagPaddingHorizontal,\n componentCls,\n calc\n } = token;\n const paddingInline = calc(tagPaddingHorizontal).sub(lineWidth).equal();\n const iconMarginInline = calc(paddingXXS).sub(lineWidth).equal();\n return {\n // Result\n [componentCls]: Object.assign(Object.assign({}, resetComponent(token)), {\n display: 'inline-block',\n height: 'auto',\n // https://github.com/ant-design/ant-design/pull/47504\n marginInlineEnd: token.marginXS,\n paddingInline,\n fontSize: token.tagFontSize,\n lineHeight: token.tagLineHeight,\n whiteSpace: 'nowrap',\n background: token.defaultBg,\n border: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`,\n borderRadius: token.borderRadiusSM,\n opacity: 1,\n transition: `all ${token.motionDurationMid}`,\n textAlign: 'start',\n position: 'relative',\n // RTL\n [`&${componentCls}-rtl`]: {\n direction: 'rtl'\n },\n '&, a, a:hover': {\n color: token.defaultColor\n },\n [`${componentCls}-close-icon`]: {\n marginInlineStart: iconMarginInline,\n fontSize: token.tagIconSize,\n color: token.colorTextDescription,\n cursor: 'pointer',\n transition: `all ${token.motionDurationMid}`,\n '&:hover': {\n color: token.colorTextHeading\n }\n },\n [`&${componentCls}-has-color`]: {\n borderColor: 'transparent',\n [`&, a, a:hover, ${token.iconCls}-close, ${token.iconCls}-close:hover`]: {\n color: token.colorTextLightSolid\n }\n },\n [`&-checkable`]: {\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n cursor: 'pointer',\n [`&:not(${componentCls}-checkable-checked):hover`]: {\n color: token.colorPrimary,\n backgroundColor: token.colorFillSecondary\n },\n '&:active, &-checked': {\n color: token.colorTextLightSolid\n },\n '&-checked': {\n backgroundColor: token.colorPrimary,\n '&:hover': {\n backgroundColor: token.colorPrimaryHover\n }\n },\n '&:active': {\n backgroundColor: token.colorPrimaryActive\n }\n },\n [`&-hidden`]: {\n display: 'none'\n },\n // To ensure that a space will be placed between character and `Icon`.\n [`> ${token.iconCls} + span, > span + ${token.iconCls}`]: {\n marginInlineStart: paddingInline\n }\n }),\n [`${componentCls}-borderless`]: {\n borderColor: 'transparent',\n background: token.tagBorderlessBg\n }\n };\n};\n// ============================== Export ==============================\nexport const prepareToken = token => {\n const {\n lineWidth,\n fontSizeIcon,\n calc\n } = token;\n const tagFontSize = token.fontSizeSM;\n const tagToken = mergeToken(token, {\n tagFontSize,\n tagLineHeight: unit(calc(token.lineHeightSM).mul(tagFontSize).equal()),\n tagIconSize: calc(fontSizeIcon).sub(calc(lineWidth).mul(2)).equal(),\n // Tag icon is much smaller\n tagPaddingHorizontal: 8,\n // Fixed padding.\n tagBorderlessBg: token.defaultBg\n });\n return tagToken;\n};\nexport const prepareComponentToken = token => ({\n defaultBg: new TinyColor(token.colorFillQuaternary).onBackground(token.colorBgContainer).toHexString(),\n defaultColor: token.colorText\n});\nexport default genStyleHooks('Tag', token => {\n const tagToken = prepareToken(token);\n return genBaseStyle(tagToken);\n}, prepareComponentToken);","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\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};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { ConfigContext } from '../config-provider';\nimport useStyle from './style';\nconst CheckableTag = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n prefixCls: customizePrefixCls,\n style,\n className,\n checked,\n onChange,\n onClick\n } = props,\n restProps = __rest(props, [\"prefixCls\", \"style\", \"className\", \"checked\", \"onChange\", \"onClick\"]);\n const {\n getPrefixCls,\n tag\n } = React.useContext(ConfigContext);\n const handleClick = e => {\n onChange === null || onChange === void 0 ? void 0 : onChange(!checked);\n onClick === null || onClick === void 0 ? void 0 : onClick(e);\n };\n const prefixCls = getPrefixCls('tag', customizePrefixCls);\n // Style\n const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n const cls = classNames(prefixCls, `${prefixCls}-checkable`, {\n [`${prefixCls}-checkable-checked`]: checked\n }, tag === null || tag === void 0 ? void 0 : tag.className, className, hashId, cssVarCls);\n return wrapCSSVar( /*#__PURE__*/React.createElement(\"span\", Object.assign({}, restProps, {\n ref: ref,\n style: Object.assign(Object.assign({}, style), tag === null || tag === void 0 ? void 0 : tag.style),\n className: cls,\n onClick: handleClick\n })));\n});\nexport default CheckableTag;","// Style as status component\nimport { prepareComponentToken, prepareToken } from '.';\nimport { genPresetColor, genSubStyleComponent } from '../../theme/internal';\n// ============================== Preset ==============================\nconst genPresetStyle = token => genPresetColor(token, (colorKey, _ref) => {\n let {\n textColor,\n lightBorderColor,\n lightColor,\n darkColor\n } = _ref;\n return {\n [`${token.componentCls}${token.componentCls}-${colorKey}`]: {\n color: textColor,\n background: lightColor,\n borderColor: lightBorderColor,\n // Inverse color\n '&-inverse': {\n color: token.colorTextLightSolid,\n background: darkColor,\n borderColor: darkColor\n },\n [`&${token.componentCls}-borderless`]: {\n borderColor: 'transparent'\n }\n }\n };\n});\n// ============================== Export ==============================\nexport default genSubStyleComponent(['Tag', 'preset'], token => {\n const tagToken = prepareToken(token);\n return genPresetStyle(tagToken);\n}, prepareComponentToken);","import { prepareComponentToken, prepareToken } from '.';\nimport capitalize from '../../_util/capitalize';\nimport { genSubStyleComponent } from '../../theme/internal';\nconst genTagStatusStyle = (token, status, cssVariableType) => {\n const capitalizedCssVariableType = capitalize(cssVariableType);\n return {\n [`${token.componentCls}${token.componentCls}-${status}`]: {\n color: token[`color${cssVariableType}`],\n background: token[`color${capitalizedCssVariableType}Bg`],\n borderColor: token[`color${capitalizedCssVariableType}Border`],\n [`&${token.componentCls}-borderless`]: {\n borderColor: 'transparent'\n }\n }\n };\n};\n// ============================== Export ==============================\nexport default genSubStyleComponent(['Tag', 'status'], token => {\n const tagToken = prepareToken(token);\n return [genTagStatusStyle(tagToken, 'success', 'Success'), genTagStatusStyle(tagToken, 'processing', 'Info'), genTagStatusStyle(tagToken, 'error', 'Error'), genTagStatusStyle(tagToken, 'warning', 'Warning')];\n}, prepareComponentToken);","export default function capitalize(str) {\n if (typeof str !== 'string') {\n return str;\n }\n const ret = str.charAt(0).toUpperCase() + str.slice(1);\n return ret;\n}","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\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};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport { isPresetColor, isPresetStatusColor } from '../_util/colors';\nimport useClosable, { pickClosable } from '../_util/hooks/useClosable';\nimport { replaceElement } from '../_util/reactNode';\nimport { devUseWarning } from '../_util/warning';\nimport Wave from '../_util/wave';\nimport { ConfigContext } from '../config-provider';\nimport CheckableTag from './CheckableTag';\nimport useStyle from './style';\nimport PresetCmp from './style/presetCmp';\nimport StatusCmp from './style/statusCmp';\nconst InternalTag = /*#__PURE__*/React.forwardRef((tagProps, ref) => {\n const {\n prefixCls: customizePrefixCls,\n className,\n rootClassName,\n style,\n children,\n icon,\n color,\n onClose,\n bordered = true,\n visible: deprecatedVisible\n } = tagProps,\n props = __rest(tagProps, [\"prefixCls\", \"className\", \"rootClassName\", \"style\", \"children\", \"icon\", \"color\", \"onClose\", \"bordered\", \"visible\"]);\n const {\n getPrefixCls,\n direction,\n tag: tagContext\n } = React.useContext(ConfigContext);\n const [visible, setVisible] = React.useState(true);\n const domProps = omit(props, ['closeIcon', 'closable']);\n // Warning for deprecated usage\n if (process.env.NODE_ENV !== 'production') {\n const warning = devUseWarning('Tag');\n warning.deprecated(!('visible' in tagProps), 'visible', 'visible && ');\n }\n React.useEffect(() => {\n if (deprecatedVisible !== undefined) {\n setVisible(deprecatedVisible);\n }\n }, [deprecatedVisible]);\n const isPreset = isPresetColor(color);\n const isStatus = isPresetStatusColor(color);\n const isInternalColor = isPreset || isStatus;\n const tagStyle = Object.assign(Object.assign({\n backgroundColor: color && !isInternalColor ? color : undefined\n }, tagContext === null || tagContext === void 0 ? void 0 : tagContext.style), style);\n const prefixCls = getPrefixCls('tag', customizePrefixCls);\n const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n // Style\n const tagClassName = classNames(prefixCls, tagContext === null || tagContext === void 0 ? void 0 : tagContext.className, {\n [`${prefixCls}-${color}`]: isInternalColor,\n [`${prefixCls}-has-color`]: color && !isInternalColor,\n [`${prefixCls}-hidden`]: !visible,\n [`${prefixCls}-rtl`]: direction === 'rtl',\n [`${prefixCls}-borderless`]: !bordered\n }, className, rootClassName, hashId, cssVarCls);\n const handleCloseClick = e => {\n e.stopPropagation();\n onClose === null || onClose === void 0 ? void 0 : onClose(e);\n if (e.defaultPrevented) {\n return;\n }\n setVisible(false);\n };\n const [, mergedCloseIcon] = useClosable(pickClosable(tagProps), pickClosable(tagContext), {\n closable: false,\n closeIconRender: iconNode => {\n const replacement = /*#__PURE__*/React.createElement(\"span\", {\n className: `${prefixCls}-close-icon`,\n onClick: handleCloseClick\n }, iconNode);\n return replaceElement(iconNode, replacement, originProps => ({\n onClick: e => {\n var _a;\n (_a = originProps === null || originProps === void 0 ? void 0 : originProps.onClick) === null || _a === void 0 ? void 0 : _a.call(originProps, e);\n handleCloseClick(e);\n },\n className: classNames(originProps === null || originProps === void 0 ? void 0 : originProps.className, `${prefixCls}-close-icon`)\n }));\n }\n });\n const isNeedWave = typeof props.onClick === 'function' || children && children.type === 'a';\n const iconNode = icon || null;\n const kids = iconNode ? ( /*#__PURE__*/React.createElement(React.Fragment, null, iconNode, children && /*#__PURE__*/React.createElement(\"span\", null, children))) : children;\n const tagNode = /*#__PURE__*/React.createElement(\"span\", Object.assign({}, domProps, {\n ref: ref,\n className: tagClassName,\n style: tagStyle\n }), kids, mergedCloseIcon, isPreset && /*#__PURE__*/React.createElement(PresetCmp, {\n key: \"preset\",\n prefixCls: prefixCls\n }), isStatus && /*#__PURE__*/React.createElement(StatusCmp, {\n key: \"status\",\n prefixCls: prefixCls\n }));\n return wrapCSSVar(isNeedWave ? /*#__PURE__*/React.createElement(Wave, {\n component: \"Tag\"\n }, tagNode) : tagNode);\n});\nconst Tag = InternalTag;\nif (process.env.NODE_ENV !== 'production') {\n Tag.displayName = 'Tag';\n}\nTag.CheckableTag = CheckableTag;\nexport default Tag;","import React from 'react';\nimport { createTheme } from '@ant-design/cssinjs';\nimport defaultDerivative from './themes/default';\nimport defaultSeedToken from './themes/seed';\nexport const defaultTheme = createTheme(defaultDerivative);\n// ================================ Context =================================\n// To ensure snapshot stable. We disable hashed in test env.\nexport const defaultConfig = {\n token: defaultSeedToken,\n override: {\n override: defaultSeedToken\n },\n hashed: true\n};\nexport const DesignTokenContext = /*#__PURE__*/React.createContext(defaultConfig);","export const PresetColors = ['blue', 'purple', 'cyan', 'green', 'magenta', 'pink', 'red', 'orange', 'yellow', 'volcano', 'geekblue', 'lime', 'gold'];","const genRadius = radiusBase => {\n let radiusLG = radiusBase;\n let radiusSM = radiusBase;\n let radiusXS = radiusBase;\n let radiusOuter = radiusBase;\n // radiusLG\n if (radiusBase < 6 && radiusBase >= 5) {\n radiusLG = radiusBase + 1;\n } else if (radiusBase < 16 && radiusBase >= 6) {\n radiusLG = radiusBase + 2;\n } else if (radiusBase >= 16) {\n radiusLG = 16;\n }\n // radiusSM\n if (radiusBase < 7 && radiusBase >= 5) {\n radiusSM = 4;\n } else if (radiusBase < 8 && radiusBase >= 7) {\n radiusSM = 5;\n } else if (radiusBase < 14 && radiusBase >= 8) {\n radiusSM = 6;\n } else if (radiusBase < 16 && radiusBase >= 14) {\n radiusSM = 7;\n } else if (radiusBase >= 16) {\n radiusSM = 8;\n }\n // radiusXS\n if (radiusBase < 6 && radiusBase >= 2) {\n radiusXS = 1;\n } else if (radiusBase >= 6) {\n radiusXS = 2;\n }\n // radiusOuter\n if (radiusBase > 4 && radiusBase < 8) {\n radiusOuter = 4;\n } else if (radiusBase >= 8) {\n radiusOuter = 6;\n }\n return {\n borderRadius: radiusBase,\n borderRadiusXS: radiusXS,\n borderRadiusSM: radiusSM,\n borderRadiusLG: radiusLG,\n borderRadiusOuter: radiusOuter\n };\n};\nexport default genRadius;","import { TinyColor } from '@ctrl/tinycolor';\nexport const getAlphaColor = (baseColor, alpha) => new TinyColor(baseColor).setAlpha(alpha).toRgbString();\nexport const getSolidColor = (baseColor, brightness) => {\n const instance = new TinyColor(baseColor);\n return instance.darken(brightness).toHexString();\n};","import { generate } from '@ant-design/colors';\nimport { getAlphaColor, getSolidColor } from './colorAlgorithm';\nexport const generateColorPalettes = baseColor => {\n const colors = generate(baseColor);\n return {\n 1: colors[0],\n 2: colors[1],\n 3: colors[2],\n 4: colors[3],\n 5: colors[4],\n 6: colors[5],\n 7: colors[6],\n 8: colors[4],\n 9: colors[5],\n 10: colors[6]\n // 8: colors[7],\n // 9: colors[8],\n // 10: colors[9],\n };\n};\nexport const generateNeutralColorPalettes = (bgBaseColor, textBaseColor) => {\n const colorBgBase = bgBaseColor || '#fff';\n const colorTextBase = textBaseColor || '#000';\n return {\n colorBgBase,\n colorTextBase,\n colorText: getAlphaColor(colorTextBase, 0.88),\n colorTextSecondary: getAlphaColor(colorTextBase, 0.65),\n colorTextTertiary: getAlphaColor(colorTextBase, 0.45),\n colorTextQuaternary: getAlphaColor(colorTextBase, 0.25),\n colorFill: getAlphaColor(colorTextBase, 0.15),\n colorFillSecondary: getAlphaColor(colorTextBase, 0.06),\n colorFillTertiary: getAlphaColor(colorTextBase, 0.04),\n colorFillQuaternary: getAlphaColor(colorTextBase, 0.02),\n colorBgLayout: getSolidColor(colorBgBase, 4),\n colorBgContainer: getSolidColor(colorBgBase, 0),\n colorBgElevated: getSolidColor(colorBgBase, 0),\n colorBgSpotlight: getAlphaColor(colorTextBase, 0.85),\n colorBgBlur: 'transparent',\n colorBorder: getSolidColor(colorBgBase, 15),\n colorBorderSecondary: getSolidColor(colorBgBase, 6)\n };\n};","import { generate } from '@ant-design/colors';\nimport { defaultPresetColors } from '../seed';\nimport genColorMapToken from '../shared/genColorMapToken';\nimport genCommonMapToken from '../shared/genCommonMapToken';\nimport genControlHeight from '../shared/genControlHeight';\nimport genFontMapToken from '../shared/genFontMapToken';\nimport genSizeMapToken from '../shared/genSizeMapToken';\nimport { generateColorPalettes, generateNeutralColorPalettes } from './colors';\nexport default function derivative(token) {\n const colorPalettes = Object.keys(defaultPresetColors).map(colorKey => {\n const colors = generate(token[colorKey]);\n return new Array(10).fill(1).reduce((prev, _, i) => {\n prev[`${colorKey}-${i + 1}`] = colors[i];\n prev[`${colorKey}${i + 1}`] = colors[i];\n return prev;\n }, {});\n }).reduce((prev, cur) => {\n prev = Object.assign(Object.assign({}, prev), cur);\n return prev;\n }, {});\n return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, token), colorPalettes), genColorMapToken(token, {\n generateColorPalettes,\n generateNeutralColorPalettes\n })), genFontMapToken(token.fontSize)), genSizeMapToken(token)), genControlHeight(token)), genCommonMapToken(token));\n}","export default function genSizeMapToken(token) {\n const {\n sizeUnit,\n sizeStep\n } = token;\n return {\n sizeXXL: sizeUnit * (sizeStep + 8),\n // 48\n sizeXL: sizeUnit * (sizeStep + 4),\n // 32\n sizeLG: sizeUnit * (sizeStep + 2),\n // 24\n sizeMD: sizeUnit * (sizeStep + 1),\n // 20\n sizeMS: sizeUnit * sizeStep,\n // 16\n size: sizeUnit * sizeStep,\n // 16\n sizeSM: sizeUnit * (sizeStep - 1),\n // 12\n sizeXS: sizeUnit * (sizeStep - 2),\n // 8\n sizeXXS: sizeUnit * (sizeStep - 3) // 4\n };\n}","import genRadius from './genRadius';\nexport default function genCommonMapToken(token) {\n const {\n motionUnit,\n motionBase,\n borderRadius,\n lineWidth\n } = token;\n return Object.assign({\n // motion\n motionDurationFast: `${(motionBase + motionUnit).toFixed(1)}s`,\n motionDurationMid: `${(motionBase + motionUnit * 2).toFixed(1)}s`,\n motionDurationSlow: `${(motionBase + motionUnit * 3).toFixed(1)}s`,\n // line\n lineWidthBold: lineWidth + 1\n }, genRadius(borderRadius));\n}","export const defaultPresetColors = {\n blue: '#1677ff',\n purple: '#722ED1',\n cyan: '#13C2C2',\n green: '#52C41A',\n magenta: '#EB2F96',\n pink: '#eb2f96',\n red: '#F5222D',\n orange: '#FA8C16',\n yellow: '#FADB14',\n volcano: '#FA541C',\n geekblue: '#2F54EB',\n gold: '#FAAD14',\n lime: '#A0D911'\n};\nconst seedToken = Object.assign(Object.assign({}, defaultPresetColors), {\n // Color\n colorPrimary: '#1677ff',\n colorSuccess: '#52c41a',\n colorWarning: '#faad14',\n colorError: '#ff4d4f',\n colorInfo: '#1677ff',\n colorLink: '',\n colorTextBase: '',\n colorBgBase: '',\n // Font\n fontFamily: `-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,\n'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',\n'Noto Color Emoji'`,\n fontFamilyCode: `'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace`,\n fontSize: 14,\n // Line\n lineWidth: 1,\n lineType: 'solid',\n // Motion\n motionUnit: 0.1,\n motionBase: 0,\n motionEaseOutCirc: 'cubic-bezier(0.08, 0.82, 0.17, 1)',\n motionEaseInOutCirc: 'cubic-bezier(0.78, 0.14, 0.15, 0.86)',\n motionEaseOut: 'cubic-bezier(0.215, 0.61, 0.355, 1)',\n motionEaseInOut: 'cubic-bezier(0.645, 0.045, 0.355, 1)',\n motionEaseOutBack: 'cubic-bezier(0.12, 0.4, 0.29, 1.46)',\n motionEaseInBack: 'cubic-bezier(0.71, -0.46, 0.88, 0.6)',\n motionEaseInQuint: 'cubic-bezier(0.755, 0.05, 0.855, 0.06)',\n motionEaseOutQuint: 'cubic-bezier(0.23, 1, 0.32, 1)',\n // Radius\n borderRadius: 6,\n // Size\n sizeUnit: 4,\n sizeStep: 4,\n sizePopupArrow: 16,\n // Control Base\n controlHeight: 32,\n // zIndex\n zIndexBase: 0,\n zIndexPopupBase: 1000,\n // Image\n opacityImage: 1,\n // Wireframe\n wireframe: false,\n // Motion\n motion: true\n});\nexport default seedToken;","import { TinyColor } from '@ctrl/tinycolor';\nexport default function genColorMapToken(seed, _ref) {\n let {\n generateColorPalettes,\n generateNeutralColorPalettes\n } = _ref;\n const {\n colorSuccess: colorSuccessBase,\n colorWarning: colorWarningBase,\n colorError: colorErrorBase,\n colorInfo: colorInfoBase,\n colorPrimary: colorPrimaryBase,\n colorBgBase,\n colorTextBase\n } = seed;\n const primaryColors = generateColorPalettes(colorPrimaryBase);\n const successColors = generateColorPalettes(colorSuccessBase);\n const warningColors = generateColorPalettes(colorWarningBase);\n const errorColors = generateColorPalettes(colorErrorBase);\n const infoColors = generateColorPalettes(colorInfoBase);\n const neutralColors = generateNeutralColorPalettes(colorBgBase, colorTextBase);\n // Color Link\n const colorLink = seed.colorLink || seed.colorInfo;\n const linkColors = generateColorPalettes(colorLink);\n return Object.assign(Object.assign({}, neutralColors), {\n colorPrimaryBg: primaryColors[1],\n colorPrimaryBgHover: primaryColors[2],\n colorPrimaryBorder: primaryColors[3],\n colorPrimaryBorderHover: primaryColors[4],\n colorPrimaryHover: primaryColors[5],\n colorPrimary: primaryColors[6],\n colorPrimaryActive: primaryColors[7],\n colorPrimaryTextHover: primaryColors[8],\n colorPrimaryText: primaryColors[9],\n colorPrimaryTextActive: primaryColors[10],\n colorSuccessBg: successColors[1],\n colorSuccessBgHover: successColors[2],\n colorSuccessBorder: successColors[3],\n colorSuccessBorderHover: successColors[4],\n colorSuccessHover: successColors[4],\n colorSuccess: successColors[6],\n colorSuccessActive: successColors[7],\n colorSuccessTextHover: successColors[8],\n colorSuccessText: successColors[9],\n colorSuccessTextActive: successColors[10],\n colorErrorBg: errorColors[1],\n colorErrorBgHover: errorColors[2],\n colorErrorBgActive: errorColors[3],\n colorErrorBorder: errorColors[3],\n colorErrorBorderHover: errorColors[4],\n colorErrorHover: errorColors[5],\n colorError: errorColors[6],\n colorErrorActive: errorColors[7],\n colorErrorTextHover: errorColors[8],\n colorErrorText: errorColors[9],\n colorErrorTextActive: errorColors[10],\n colorWarningBg: warningColors[1],\n colorWarningBgHover: warningColors[2],\n colorWarningBorder: warningColors[3],\n colorWarningBorderHover: warningColors[4],\n colorWarningHover: warningColors[4],\n colorWarning: warningColors[6],\n colorWarningActive: warningColors[7],\n colorWarningTextHover: warningColors[8],\n colorWarningText: warningColors[9],\n colorWarningTextActive: warningColors[10],\n colorInfoBg: infoColors[1],\n colorInfoBgHover: infoColors[2],\n colorInfoBorder: infoColors[3],\n colorInfoBorderHover: infoColors[4],\n colorInfoHover: infoColors[4],\n colorInfo: infoColors[6],\n colorInfoActive: infoColors[7],\n colorInfoTextHover: infoColors[8],\n colorInfoText: infoColors[9],\n colorInfoTextActive: infoColors[10],\n colorLinkHover: linkColors[4],\n colorLink: linkColors[6],\n colorLinkActive: linkColors[7],\n colorBgMask: new TinyColor('#000').setAlpha(0.45).toRgbString(),\n colorWhite: '#fff'\n });\n}","const genControlHeight = token => {\n const {\n controlHeight\n } = token;\n return {\n controlHeightSM: controlHeight * 0.75,\n controlHeightXS: controlHeight * 0.5,\n controlHeightLG: controlHeight * 1.25\n };\n};\nexport default genControlHeight;","import genFontSizes from './genFontSizes';\nconst genFontMapToken = fontSize => {\n const fontSizePairs = genFontSizes(fontSize);\n const fontSizes = fontSizePairs.map(pair => pair.size);\n const lineHeights = fontSizePairs.map(pair => pair.lineHeight);\n const fontSizeMD = fontSizes[1];\n const fontSizeSM = fontSizes[0];\n const fontSizeLG = fontSizes[2];\n const lineHeight = lineHeights[1];\n const lineHeightSM = lineHeights[0];\n const lineHeightLG = lineHeights[2];\n return {\n fontSizeSM,\n fontSize: fontSizeMD,\n fontSizeLG,\n fontSizeXL: fontSizes[3],\n fontSizeHeading1: fontSizes[6],\n fontSizeHeading2: fontSizes[5],\n fontSizeHeading3: fontSizes[4],\n fontSizeHeading4: fontSizes[3],\n fontSizeHeading5: fontSizes[2],\n lineHeight,\n lineHeightLG,\n lineHeightSM,\n fontHeight: Math.round(lineHeight * fontSizeMD),\n fontHeightLG: Math.round(lineHeightLG * fontSizeLG),\n fontHeightSM: Math.round(lineHeightSM * fontSizeSM),\n lineHeightHeading1: lineHeights[6],\n lineHeightHeading2: lineHeights[5],\n lineHeightHeading3: lineHeights[4],\n lineHeightHeading4: lineHeights[3],\n lineHeightHeading5: lineHeights[2]\n };\n};\nexport default genFontMapToken;","export function getLineHeight(fontSize) {\n return (fontSize + 8) / fontSize;\n}\n// https://zhuanlan.zhihu.com/p/32746810\nexport default function getFontSizes(base) {\n const fontSizes = new Array(10).fill(null).map((_, index) => {\n const i = index - 1;\n const baseSize = base * Math.pow(2.71828, i / 5);\n const intSize = index > 1 ? Math.floor(baseSize) : Math.ceil(baseSize);\n // Convert to even\n return Math.floor(intSize / 2) * 2;\n });\n fontSizes[1] = base;\n return fontSizes.map(size => ({\n size,\n lineHeight: getLineHeight(size)\n }));\n}","export default '5.18.3';","\"use client\";\n\n/* eslint import/no-unresolved: 0 */\n// @ts-ignore\nimport version from './version';\nexport default version;","var __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\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};\nimport React from 'react';\nimport { useCacheToken } from '@ant-design/cssinjs';\nimport version from '../version';\nimport { defaultTheme, DesignTokenContext } from './context';\nimport defaultSeedToken from './themes/seed';\nimport formatToken from './util/alias';\nexport const unitless = {\n lineHeight: true,\n lineHeightSM: true,\n lineHeightLG: true,\n lineHeightHeading1: true,\n lineHeightHeading2: true,\n lineHeightHeading3: true,\n lineHeightHeading4: true,\n lineHeightHeading5: true,\n opacityLoading: true,\n fontWeightStrong: true,\n zIndexPopupBase: true,\n zIndexBase: true\n};\nexport const ignore = {\n size: true,\n sizeSM: true,\n sizeLG: true,\n sizeMD: true,\n sizeXS: true,\n sizeXXS: true,\n sizeMS: true,\n sizeXL: true,\n sizeXXL: true,\n sizeUnit: true,\n sizeStep: true,\n motionBase: true,\n motionUnit: true\n};\nconst preserve = {\n screenXS: true,\n screenXSMin: true,\n screenXSMax: true,\n screenSM: true,\n screenSMMin: true,\n screenSMMax: true,\n screenMD: true,\n screenMDMin: true,\n screenMDMax: true,\n screenLG: true,\n screenLGMin: true,\n screenLGMax: true,\n screenXL: true,\n screenXLMin: true,\n screenXLMax: true,\n screenXXL: true,\n screenXXLMin: true\n};\nexport const getComputedToken = (originToken, overrideToken, theme) => {\n const derivativeToken = theme.getDerivativeToken(originToken);\n const {\n override\n } = overrideToken,\n components = __rest(overrideToken, [\"override\"]);\n // Merge with override\n let mergedDerivativeToken = Object.assign(Object.assign({}, derivativeToken), {\n override\n });\n // Format if needed\n mergedDerivativeToken = formatToken(mergedDerivativeToken);\n if (components) {\n Object.entries(components).forEach(_ref => {\n let [key, value] = _ref;\n const {\n theme: componentTheme\n } = value,\n componentTokens = __rest(value, [\"theme\"]);\n let mergedComponentToken = componentTokens;\n if (componentTheme) {\n mergedComponentToken = getComputedToken(Object.assign(Object.assign({}, mergedDerivativeToken), componentTokens), {\n override: componentTokens\n }, componentTheme);\n }\n mergedDerivativeToken[key] = mergedComponentToken;\n });\n }\n return mergedDerivativeToken;\n};\n// ================================== Hook ==================================\nexport default function useToken() {\n const {\n token: rootDesignToken,\n hashed,\n theme,\n override,\n cssVar\n } = React.useContext(DesignTokenContext);\n const salt = `${version}-${hashed || ''}`;\n const mergedTheme = theme || defaultTheme;\n const [token, hashId, realToken] = useCacheToken(mergedTheme, [defaultSeedToken, rootDesignToken], {\n salt,\n override,\n getComputedToken,\n // formatToken will not be consumed after 1.15.0 with getComputedToken.\n // But token will break if @ant-design/cssinjs is under 1.15.0 without it\n formatToken,\n cssVar: cssVar && {\n prefix: cssVar.prefix,\n key: cssVar.key,\n unitless,\n ignore,\n preserve\n }\n });\n return [mergedTheme, realToken, hashed ? hashId : '', token, cssVar];\n}","import { TinyColor } from '@ctrl/tinycolor';\nfunction isStableColor(color) {\n return color >= 0 && color <= 255;\n}\nfunction getAlphaColor(frontColor, backgroundColor) {\n const {\n r: fR,\n g: fG,\n b: fB,\n a: originAlpha\n } = new TinyColor(frontColor).toRgb();\n if (originAlpha < 1) {\n return frontColor;\n }\n const {\n r: bR,\n g: bG,\n b: bB\n } = new TinyColor(backgroundColor).toRgb();\n for (let fA = 0.01; fA <= 1; fA += 0.01) {\n const r = Math.round((fR - bR * (1 - fA)) / fA);\n const g = Math.round((fG - bG * (1 - fA)) / fA);\n const b = Math.round((fB - bB * (1 - fA)) / fA);\n if (isStableColor(r) && isStableColor(g) && isStableColor(b)) {\n return new TinyColor({\n r,\n g,\n b,\n a: Math.round(fA * 100) / 100\n }).toRgbString();\n }\n }\n // fallback\n /* istanbul ignore next */\n return new TinyColor({\n r: fR,\n g: fG,\n b: fB,\n a: 1\n }).toRgbString();\n}\nexport default getAlphaColor;","var __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\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};\nimport { TinyColor } from '@ctrl/tinycolor';\nimport seedToken from '../themes/seed';\nimport getAlphaColor from './getAlphaColor';\n/**\n * Seed (designer) > Derivative (designer) > Alias (developer).\n *\n * Merge seed & derivative & override token and generate alias token for developer.\n */\nexport default function formatToken(derivativeToken) {\n const {\n override\n } = derivativeToken,\n restToken = __rest(derivativeToken, [\"override\"]);\n const overrideTokens = Object.assign({}, override);\n Object.keys(seedToken).forEach(token => {\n delete overrideTokens[token];\n });\n const mergedToken = Object.assign(Object.assign({}, restToken), overrideTokens);\n const screenXS = 480;\n const screenSM = 576;\n const screenMD = 768;\n const screenLG = 992;\n const screenXL = 1200;\n const screenXXL = 1600;\n // Motion\n if (mergedToken.motion === false) {\n const fastDuration = '0s';\n mergedToken.motionDurationFast = fastDuration;\n mergedToken.motionDurationMid = fastDuration;\n mergedToken.motionDurationSlow = fastDuration;\n }\n // Generate alias token\n const aliasToken = Object.assign(Object.assign(Object.assign({}, mergedToken), {\n // ============== Background ============== //\n colorFillContent: mergedToken.colorFillSecondary,\n colorFillContentHover: mergedToken.colorFill,\n colorFillAlter: mergedToken.colorFillQuaternary,\n colorBgContainerDisabled: mergedToken.colorFillTertiary,\n // ============== Split ============== //\n colorBorderBg: mergedToken.colorBgContainer,\n colorSplit: getAlphaColor(mergedToken.colorBorderSecondary, mergedToken.colorBgContainer),\n // ============== Text ============== //\n colorTextPlaceholder: mergedToken.colorTextQuaternary,\n colorTextDisabled: mergedToken.colorTextQuaternary,\n colorTextHeading: mergedToken.colorText,\n colorTextLabel: mergedToken.colorTextSecondary,\n colorTextDescription: mergedToken.colorTextTertiary,\n colorTextLightSolid: mergedToken.colorWhite,\n colorHighlight: mergedToken.colorError,\n colorBgTextHover: mergedToken.colorFillSecondary,\n colorBgTextActive: mergedToken.colorFill,\n colorIcon: mergedToken.colorTextTertiary,\n colorIconHover: mergedToken.colorText,\n colorErrorOutline: getAlphaColor(mergedToken.colorErrorBg, mergedToken.colorBgContainer),\n colorWarningOutline: getAlphaColor(mergedToken.colorWarningBg, mergedToken.colorBgContainer),\n // Font\n fontSizeIcon: mergedToken.fontSizeSM,\n // Line\n lineWidthFocus: mergedToken.lineWidth * 4,\n // Control\n lineWidth: mergedToken.lineWidth,\n controlOutlineWidth: mergedToken.lineWidth * 2,\n // Checkbox size and expand icon size\n controlInteractiveSize: mergedToken.controlHeight / 2,\n controlItemBgHover: mergedToken.colorFillTertiary,\n controlItemBgActive: mergedToken.colorPrimaryBg,\n controlItemBgActiveHover: mergedToken.colorPrimaryBgHover,\n controlItemBgActiveDisabled: mergedToken.colorFill,\n controlTmpOutline: mergedToken.colorFillQuaternary,\n controlOutline: getAlphaColor(mergedToken.colorPrimaryBg, mergedToken.colorBgContainer),\n lineType: mergedToken.lineType,\n borderRadius: mergedToken.borderRadius,\n borderRadiusXS: mergedToken.borderRadiusXS,\n borderRadiusSM: mergedToken.borderRadiusSM,\n borderRadiusLG: mergedToken.borderRadiusLG,\n fontWeightStrong: 600,\n opacityLoading: 0.65,\n linkDecoration: 'none',\n linkHoverDecoration: 'none',\n linkFocusDecoration: 'none',\n controlPaddingHorizontal: 12,\n controlPaddingHorizontalSM: 8,\n paddingXXS: mergedToken.sizeXXS,\n paddingXS: mergedToken.sizeXS,\n paddingSM: mergedToken.sizeSM,\n padding: mergedToken.size,\n paddingMD: mergedToken.sizeMD,\n paddingLG: mergedToken.sizeLG,\n paddingXL: mergedToken.sizeXL,\n paddingContentHorizontalLG: mergedToken.sizeLG,\n paddingContentVerticalLG: mergedToken.sizeMS,\n paddingContentHorizontal: mergedToken.sizeMS,\n paddingContentVertical: mergedToken.sizeSM,\n paddingContentHorizontalSM: mergedToken.size,\n paddingContentVerticalSM: mergedToken.sizeXS,\n marginXXS: mergedToken.sizeXXS,\n marginXS: mergedToken.sizeXS,\n marginSM: mergedToken.sizeSM,\n margin: mergedToken.size,\n marginMD: mergedToken.sizeMD,\n marginLG: mergedToken.sizeLG,\n marginXL: mergedToken.sizeXL,\n marginXXL: mergedToken.sizeXXL,\n boxShadow: `\n 0 6px 16px 0 rgba(0, 0, 0, 0.08),\n 0 3px 6px -4px rgba(0, 0, 0, 0.12),\n 0 9px 28px 8px rgba(0, 0, 0, 0.05)\n `,\n boxShadowSecondary: `\n 0 6px 16px 0 rgba(0, 0, 0, 0.08),\n 0 3px 6px -4px rgba(0, 0, 0, 0.12),\n 0 9px 28px 8px rgba(0, 0, 0, 0.05)\n `,\n boxShadowTertiary: `\n 0 1px 2px 0 rgba(0, 0, 0, 0.03),\n 0 1px 6px -1px rgba(0, 0, 0, 0.02),\n 0 2px 4px 0 rgba(0, 0, 0, 0.02)\n `,\n screenXS,\n screenXSMin: screenXS,\n screenXSMax: screenSM - 1,\n screenSM,\n screenSMMin: screenSM,\n screenSMMax: screenMD - 1,\n screenMD,\n screenMDMin: screenMD,\n screenMDMax: screenLG - 1,\n screenLG,\n screenLGMin: screenLG,\n screenLGMax: screenXL - 1,\n screenXL,\n screenXLMin: screenXL,\n screenXLMax: screenXXL - 1,\n screenXXL,\n screenXXLMin: screenXXL,\n boxShadowPopoverArrow: '2px 2px 5px rgba(0, 0, 0, 0.05)',\n boxShadowCard: `\n 0 1px 2px -2px ${new TinyColor('rgba(0, 0, 0, 0.16)').toRgbString()},\n 0 3px 6px 0 ${new TinyColor('rgba(0, 0, 0, 0.12)').toRgbString()},\n 0 5px 12px 4px ${new TinyColor('rgba(0, 0, 0, 0.09)').toRgbString()}\n `,\n boxShadowDrawerRight: `\n -6px 0 16px 0 rgba(0, 0, 0, 0.08),\n -3px 0 6px -4px rgba(0, 0, 0, 0.12),\n -9px 0 28px 8px rgba(0, 0, 0, 0.05)\n `,\n boxShadowDrawerLeft: `\n 6px 0 16px 0 rgba(0, 0, 0, 0.08),\n 3px 0 6px -4px rgba(0, 0, 0, 0.12),\n 9px 0 28px 8px rgba(0, 0, 0, 0.05)\n `,\n boxShadowDrawerUp: `\n 0 6px 16px 0 rgba(0, 0, 0, 0.08),\n 0 3px 6px -4px rgba(0, 0, 0, 0.12),\n 0 9px 28px 8px rgba(0, 0, 0, 0.05)\n `,\n boxShadowDrawerDown: `\n 0 -6px 16px 0 rgba(0, 0, 0, 0.08),\n 0 -3px 6px -4px rgba(0, 0, 0, 0.12),\n 0 -9px 28px 8px rgba(0, 0, 0, 0.05)\n `,\n boxShadowTabsOverflowLeft: 'inset 10px 0 8px -8px rgba(0, 0, 0, 0.08)',\n boxShadowTabsOverflowRight: 'inset -10px 0 8px -8px rgba(0, 0, 0, 0.08)',\n boxShadowTabsOverflowTop: 'inset 0 10px 8px -8px rgba(0, 0, 0, 0.08)',\n boxShadowTabsOverflowBottom: 'inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08)'\n }), overrideTokens);\n return aliasToken;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport React from 'react';\nconst BEAT_LIMIT = 1000 * 60 * 10;\n/**\n * A helper class to map keys to values.\n * It supports both primitive keys and object keys.\n */\nlet ArrayKeyMap = /*#__PURE__*/function () {\n function ArrayKeyMap() {\n _classCallCheck(this, ArrayKeyMap);\n this.map = new Map();\n // Use WeakMap to avoid memory leak\n this.objectIDMap = new WeakMap();\n this.nextID = 0;\n this.lastAccessBeat = new Map();\n // We will clean up the cache when reach the limit\n this.accessBeat = 0;\n }\n return _createClass(ArrayKeyMap, [{\n key: \"set\",\n value: function set(keys, value) {\n // New set will trigger clear\n this.clear();\n // Set logic\n const compositeKey = this.getCompositeKey(keys);\n this.map.set(compositeKey, value);\n this.lastAccessBeat.set(compositeKey, Date.now());\n }\n }, {\n key: \"get\",\n value: function get(keys) {\n const compositeKey = this.getCompositeKey(keys);\n const cache = this.map.get(compositeKey);\n this.lastAccessBeat.set(compositeKey, Date.now());\n this.accessBeat += 1;\n return cache;\n }\n }, {\n key: \"getCompositeKey\",\n value: function getCompositeKey(keys) {\n const ids = keys.map(key => {\n if (key && typeof key === 'object') {\n return `obj_${this.getObjectID(key)}`;\n }\n return `${typeof key}_${key}`;\n });\n return ids.join('|');\n }\n }, {\n key: \"getObjectID\",\n value: function getObjectID(obj) {\n if (this.objectIDMap.has(obj)) {\n return this.objectIDMap.get(obj);\n }\n const id = this.nextID;\n this.objectIDMap.set(obj, id);\n this.nextID += 1;\n return id;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n if (this.accessBeat > 10000) {\n const now = Date.now();\n this.lastAccessBeat.forEach((beat, key) => {\n if (now - beat > BEAT_LIMIT) {\n this.map.delete(key);\n this.lastAccessBeat.delete(key);\n }\n });\n this.accessBeat = 0;\n }\n }\n }]);\n}();\nconst uniqueMap = new ArrayKeyMap();\n/**\n * Like `useMemo`, but this hook result will be shared across all instances.\n */\nfunction useUniqueMemo(memoFn, deps) {\n return React.useMemo(() => {\n const cachedValue = uniqueMap.get(deps);\n if (cachedValue) {\n return cachedValue;\n }\n const newValue = memoFn();\n uniqueMap.set(deps, newValue);\n return newValue;\n }, deps);\n}\nexport default useUniqueMemo;","\"use client\";\n\nimport React, { useContext } from 'react';\nimport { token2CSSVar, useCSSVarRegister, useStyleRegister, genCalc } from '@ant-design/cssinjs';\nimport useUniqueMemo from '../../_util/hooks/useUniqueMemo';\nimport { warning } from 'rc-util';\nimport { ConfigContext } from '../../config-provider/context';\nimport { genCommonStyle, genLinkStyle } from '../../style';\nimport useToken, { ignore, unitless } from '../useToken';\nimport genMaxMin from './maxmin';\nimport statisticToken, { merge as mergeToken } from './statistic';\nimport useResetIconStyle from './useResetIconStyle';\nconst getDefaultComponentToken = (component, token, getDefaultToken) => {\n var _a;\n if (typeof getDefaultToken === 'function') {\n return getDefaultToken(mergeToken(token, (_a = token[component]) !== null && _a !== void 0 ? _a : {}));\n }\n return getDefaultToken !== null && getDefaultToken !== void 0 ? getDefaultToken : {};\n};\nconst getComponentToken = (component, token, defaultToken, options) => {\n const customToken = Object.assign({}, token[component]);\n if (options === null || options === void 0 ? void 0 : options.deprecatedTokens) {\n const {\n deprecatedTokens\n } = options;\n deprecatedTokens.forEach(_ref => {\n let [oldTokenKey, newTokenKey] = _ref;\n var _a;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(!(customToken === null || customToken === void 0 ? void 0 : customToken[oldTokenKey]), `Component Token \\`${String(oldTokenKey)}\\` of ${component} is deprecated. Please use \\`${String(newTokenKey)}\\` instead.`) : void 0;\n }\n // Should wrap with `if` clause, or there will be `undefined` in object.\n if ((customToken === null || customToken === void 0 ? void 0 : customToken[oldTokenKey]) || (customToken === null || customToken === void 0 ? void 0 : customToken[newTokenKey])) {\n (_a = customToken[newTokenKey]) !== null && _a !== void 0 ? _a : customToken[newTokenKey] = customToken === null || customToken === void 0 ? void 0 : customToken[oldTokenKey];\n }\n });\n }\n const mergedToken = Object.assign(Object.assign({}, defaultToken), customToken);\n // Remove same value as global token to minimize size\n Object.keys(mergedToken).forEach(key => {\n if (mergedToken[key] === token[key]) {\n delete mergedToken[key];\n }\n });\n return mergedToken;\n};\nconst getCompVarPrefix = (component, prefix) => `${[prefix, component.replace(/([A-Z]+)([A-Z][a-z]+)/g, '$1-$2').replace(/([a-z])([A-Z])/g, '$1-$2')].filter(Boolean).join('-')}`;\nexport default function genComponentStyleHook(componentName, styleFn, getDefaultToken) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const cells = Array.isArray(componentName) ? componentName : [componentName, componentName];\n const [component] = cells;\n const concatComponent = cells.join('-');\n // Return new style hook\n return function (prefixCls) {\n let rootCls = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : prefixCls;\n const [theme, realToken, hashId, token, cssVar] = useToken();\n const {\n getPrefixCls,\n iconPrefixCls,\n csp\n } = useContext(ConfigContext);\n const rootPrefixCls = getPrefixCls();\n const type = cssVar ? 'css' : 'js';\n // Use unique memo to share the result across all instances\n const calc = useUniqueMemo(() => {\n const unitlessCssVar = new Set();\n if (cssVar) {\n Object.keys(options.unitless || {}).forEach(key => {\n // Some component proxy the AliasToken (e.g. Image) and some not (e.g. Modal)\n // We should both pass in `unitlessCssVar` to make sure the CSSVar can be unitless.\n unitlessCssVar.add(token2CSSVar(key, cssVar.prefix));\n unitlessCssVar.add(token2CSSVar(key, getCompVarPrefix(component, cssVar.prefix)));\n });\n }\n return genCalc(type, unitlessCssVar);\n }, [type, component, cssVar && cssVar.prefix]);\n const {\n max,\n min\n } = genMaxMin(type);\n // Shared config\n const sharedConfig = {\n theme,\n token,\n hashId,\n nonce: () => csp === null || csp === void 0 ? void 0 : csp.nonce,\n clientOnly: options.clientOnly,\n layer: {\n name: 'antd'\n },\n // antd is always at top of styles\n order: options.order || -999\n };\n // Generate style for all a tags in antd component.\n useStyleRegister(Object.assign(Object.assign({}, sharedConfig), {\n clientOnly: false,\n path: ['Shared', rootPrefixCls]\n }), () => [{\n // Link\n '&': genLinkStyle(token)\n }]);\n // Generate style for icons\n useResetIconStyle(iconPrefixCls, csp);\n const wrapSSR = useStyleRegister(Object.assign(Object.assign({}, sharedConfig), {\n path: [concatComponent, prefixCls, iconPrefixCls]\n }), () => {\n if (options.injectStyle === false) {\n return [];\n }\n const {\n token: proxyToken,\n flush\n } = statisticToken(token);\n const defaultComponentToken = getDefaultComponentToken(component, realToken, getDefaultToken);\n const componentCls = `.${prefixCls}`;\n const componentToken = getComponentToken(component, realToken, defaultComponentToken, {\n deprecatedTokens: options.deprecatedTokens\n });\n if (cssVar) {\n Object.keys(defaultComponentToken).forEach(key => {\n defaultComponentToken[key] = `var(${token2CSSVar(key, getCompVarPrefix(component, cssVar.prefix))})`;\n });\n }\n const mergedToken = mergeToken(proxyToken, {\n componentCls,\n prefixCls,\n iconCls: `.${iconPrefixCls}`,\n antCls: `.${rootPrefixCls}`,\n calc,\n // @ts-ignore\n max,\n // @ts-ignore\n min\n }, cssVar ? defaultComponentToken : componentToken);\n const styleInterpolation = styleFn(mergedToken, {\n hashId,\n prefixCls,\n rootPrefixCls,\n iconPrefixCls\n });\n flush(component, componentToken);\n return [options.resetStyle === false ? null : genCommonStyle(mergedToken, prefixCls, rootCls, options.resetFont), styleInterpolation];\n });\n return [wrapSSR, hashId];\n };\n}\nexport const genSubStyleComponent = (componentName, styleFn, getDefaultToken, options) => {\n const useStyle = genComponentStyleHook(componentName, styleFn, getDefaultToken, Object.assign({\n resetStyle: false,\n // Sub Style should default after root one\n order: -998\n }, options));\n const StyledComponent = _ref2 => {\n let {\n prefixCls,\n rootCls = prefixCls\n } = _ref2;\n useStyle(prefixCls, rootCls);\n return null;\n };\n if (process.env.NODE_ENV !== 'production') {\n StyledComponent.displayName = `SubStyle_${Array.isArray(componentName) ? componentName.join('.') : componentName}`;\n }\n return StyledComponent;\n};\nconst genCSSVarRegister = (component, getDefaultToken, options) => {\n const {\n unitless: compUnitless,\n injectStyle = true,\n prefixToken\n } = options;\n const CSSVarRegister = _ref3 => {\n let {\n rootCls,\n cssVar\n } = _ref3;\n const [, realToken] = useToken();\n useCSSVarRegister({\n path: [component],\n prefix: cssVar.prefix,\n key: cssVar === null || cssVar === void 0 ? void 0 : cssVar.key,\n unitless: compUnitless,\n ignore,\n token: realToken,\n scope: rootCls\n }, () => {\n const defaultToken = getDefaultComponentToken(component, realToken, getDefaultToken);\n const componentToken = getComponentToken(component, realToken, defaultToken, {\n deprecatedTokens: options === null || options === void 0 ? void 0 : options.deprecatedTokens\n });\n Object.keys(defaultToken).forEach(key => {\n componentToken[prefixToken(key)] = componentToken[key];\n delete componentToken[key];\n });\n return componentToken;\n });\n return null;\n };\n const useCSSVar = rootCls => {\n const [,,,, cssVar] = useToken();\n return [node => injectStyle && cssVar ? ( /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(CSSVarRegister, {\n rootCls: rootCls,\n cssVar: cssVar,\n component: component\n }), node)) : node, cssVar === null || cssVar === void 0 ? void 0 : cssVar.key];\n };\n return useCSSVar;\n};\nexport const genStyleHooks = (component, styleFn, getDefaultToken, options) => {\n const componentName = Array.isArray(component) ? component[0] : component;\n function prefixToken(key) {\n return `${componentName}${key.slice(0, 1).toUpperCase()}${key.slice(1)}`;\n }\n // Fill unitless\n const originUnitless = options && options.unitless || {};\n const compUnitless = Object.assign(Object.assign({}, unitless), {\n [prefixToken('zIndexPopup')]: true\n });\n Object.keys(originUnitless).forEach(key => {\n compUnitless[prefixToken(key)] = originUnitless[key];\n });\n // Options\n const mergedOptions = Object.assign(Object.assign({}, options), {\n unitless: compUnitless,\n prefixToken\n });\n // Hooks\n const useStyle = genComponentStyleHook(component, styleFn, getDefaultToken, mergedOptions);\n const useCSSVar = genCSSVarRegister(componentName, getDefaultToken, mergedOptions);\n return function (prefixCls) {\n let rootCls = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : prefixCls;\n const [, hashId] = useStyle(prefixCls, rootCls);\n const [wrapCSSVar, cssVarCls] = useCSSVar(rootCls);\n return [wrapCSSVar, hashId, cssVarCls];\n };\n};","import { unit } from '@ant-design/cssinjs';\nexport default function genMaxMin(type) {\n if (type === 'js') {\n return {\n max: Math.max,\n min: Math.min\n };\n }\n return {\n max: function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return `max(${args.map(value => unit(value)).join(',')})`;\n },\n min: function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return `min(${args.map(value => unit(value)).join(',')})`;\n }\n };\n}","import { PresetColors } from '../interface';\nexport default function genPresetColor(token, genCss) {\n return PresetColors.reduce((prev, colorKey) => {\n const lightColor = token[`${colorKey}1`];\n const lightBorderColor = token[`${colorKey}3`];\n const darkColor = token[`${colorKey}6`];\n const textColor = token[`${colorKey}7`];\n return Object.assign(Object.assign({}, prev), genCss(colorKey, {\n lightColor,\n lightBorderColor,\n darkColor,\n textColor\n }));\n }, {});\n}","const enableStatistic = process.env.NODE_ENV !== 'production' || typeof CSSINJS_STATISTIC !== 'undefined';\nlet recording = true;\n/**\n * This function will do as `Object.assign` in production. But will use Object.defineProperty:get to\n * pass all value access in development. To support statistic field usage with alias token.\n */\nexport function merge() {\n for (var _len = arguments.length, objs = new Array(_len), _key = 0; _key < _len; _key++) {\n objs[_key] = arguments[_key];\n }\n /* istanbul ignore next */\n if (!enableStatistic) {\n return Object.assign.apply(Object, [{}].concat(objs));\n }\n recording = false;\n const ret = {};\n objs.forEach(obj => {\n const keys = Object.keys(obj);\n keys.forEach(key => {\n Object.defineProperty(ret, key, {\n configurable: true,\n enumerable: true,\n get: () => obj[key]\n });\n });\n });\n recording = true;\n return ret;\n}\n/** @internal Internal Usage. Not use in your production. */\nexport const statistic = {};\n/** @internal Internal Usage. Not use in your production. */\n// eslint-disable-next-line camelcase\nexport const _statistic_build_ = {};\n/* istanbul ignore next */\nfunction noop() {}\n/** Statistic token usage case. Should use `merge` function if you do not want spread record. */\nconst statisticToken = token => {\n let tokenKeys;\n let proxy = token;\n let flush = noop;\n if (enableStatistic && typeof Proxy !== 'undefined') {\n tokenKeys = new Set();\n proxy = new Proxy(token, {\n get(obj, prop) {\n if (recording) {\n tokenKeys.add(prop);\n }\n return obj[prop];\n }\n });\n flush = (componentName, componentToken) => {\n var _a;\n statistic[componentName] = {\n global: Array.from(tokenKeys),\n component: Object.assign(Object.assign({}, (_a = statistic[componentName]) === null || _a === void 0 ? void 0 : _a.component), componentToken)\n };\n };\n }\n return {\n token: proxy,\n keys: tokenKeys,\n flush\n };\n};\nexport default statisticToken;","import { useStyleRegister } from '@ant-design/cssinjs';\nimport { resetIcon } from '../../style';\nimport useToken from '../useToken';\nconst useResetIconStyle = (iconPrefixCls, csp) => {\n const [theme, token] = useToken();\n // Generate style for icons\n return useStyleRegister({\n theme,\n token,\n hashId: '',\n path: ['ant-design-icons', iconPrefixCls],\n nonce: () => csp === null || csp === void 0 ? void 0 : csp.nonce,\n layer: {\n name: 'antd'\n }\n }, () => [{\n [`.${iconPrefixCls}`]: Object.assign(Object.assign({}, resetIcon()), {\n [`.${iconPrefixCls} .${iconPrefixCls}-icon`]: {\n display: 'block'\n }\n })\n }]);\n};\nexport default useResetIconStyle;","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t\n */\n\nvar DEFAULT = require('./default');\nvar parseStyle = require('./parser');\nvar _ = require('./util');\n\n\n/**\n * 返回值是否为空\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull (obj) {\n return (obj === undefined || obj === null);\n}\n\n/**\n * 浅拷贝对象\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject (obj) {\n var ret = {};\n for (var i in obj) {\n ret[i] = obj[i];\n }\n return ret;\n}\n\n/**\n * 创建CSS过滤器\n *\n * @param {Object} options\n * - {Object} whiteList\n * - {Function} onAttr\n * - {Function} onIgnoreAttr\n * - {Function} safeAttrValue\n */\nfunction FilterCSS (options) {\n options = shallowCopyObject(options || {});\n options.whiteList = options.whiteList || DEFAULT.whiteList;\n options.onAttr = options.onAttr || DEFAULT.onAttr;\n options.onIgnoreAttr = options.onIgnoreAttr || DEFAULT.onIgnoreAttr;\n options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n this.options = options;\n}\n\nFilterCSS.prototype.process = function (css) {\n // 兼容各种奇葩输入\n css = css || '';\n css = css.toString();\n if (!css) return '';\n\n var me = this;\n var options = me.options;\n var whiteList = options.whiteList;\n var onAttr = options.onAttr;\n var onIgnoreAttr = options.onIgnoreAttr;\n var safeAttrValue = options.safeAttrValue;\n\n var retCSS = parseStyle(css, function (sourcePosition, position, name, value, source) {\n\n var check = whiteList[name];\n var isWhite = false;\n if (check === true) isWhite = check;\n else if (typeof check === 'function') isWhite = check(value);\n else if (check instanceof RegExp) isWhite = check.test(value);\n if (isWhite !== true) isWhite = false;\n\n // 如果过滤后 value 为空则直接忽略\n value = safeAttrValue(name, value);\n if (!value) return;\n\n var opts = {\n position: position,\n sourcePosition: sourcePosition,\n source: source,\n isWhite: isWhite\n };\n\n if (isWhite) {\n\n var ret = onAttr(name, value, opts);\n if (isNull(ret)) {\n return name + ':' + value;\n } else {\n return ret;\n }\n\n } else {\n\n var ret = onIgnoreAttr(name, value, opts);\n if (!isNull(ret)) {\n return ret;\n }\n\n }\n });\n\n return retCSS;\n};\n\n\nmodule.exports = FilterCSS;\n","/**\n * cssfilter\n *\n * @author 老雷\n */\n\nfunction getDefaultWhiteList () {\n // 白名单值说明:\n // true: 允许该属性\n // Function: function (val) { } 返回true表示允许该属性,其他值均表示不允许\n // RegExp: regexp.test(val) 返回true表示允许该属性,其他值均表示不允许\n // 除上面列出的值外均表示不允许\n var whiteList = {};\n\n whiteList['align-content'] = false; // default: auto\n whiteList['align-items'] = false; // default: auto\n whiteList['align-self'] = false; // default: auto\n whiteList['alignment-adjust'] = false; // default: auto\n whiteList['alignment-baseline'] = false; // default: baseline\n whiteList['all'] = false; // default: depending on individual properties\n whiteList['anchor-point'] = false; // default: none\n whiteList['animation'] = false; // default: depending on individual properties\n whiteList['animation-delay'] = false; // default: 0\n whiteList['animation-direction'] = false; // default: normal\n whiteList['animation-duration'] = false; // default: 0\n whiteList['animation-fill-mode'] = false; // default: none\n whiteList['animation-iteration-count'] = false; // default: 1\n whiteList['animation-name'] = false; // default: none\n whiteList['animation-play-state'] = false; // default: running\n whiteList['animation-timing-function'] = false; // default: ease\n whiteList['azimuth'] = false; // default: center\n whiteList['backface-visibility'] = false; // default: visible\n whiteList['background'] = true; // default: depending on individual properties\n whiteList['background-attachment'] = true; // default: scroll\n whiteList['background-clip'] = true; // default: border-box\n whiteList['background-color'] = true; // default: transparent\n whiteList['background-image'] = true; // default: none\n whiteList['background-origin'] = true; // default: padding-box\n whiteList['background-position'] = true; // default: 0% 0%\n whiteList['background-repeat'] = true; // default: repeat\n whiteList['background-size'] = true; // default: auto\n whiteList['baseline-shift'] = false; // default: baseline\n whiteList['binding'] = false; // default: none\n whiteList['bleed'] = false; // default: 6pt\n whiteList['bookmark-label'] = false; // default: content()\n whiteList['bookmark-level'] = false; // default: none\n whiteList['bookmark-state'] = false; // default: open\n whiteList['border'] = true; // default: depending on individual properties\n whiteList['border-bottom'] = true; // default: depending on individual properties\n whiteList['border-bottom-color'] = true; // default: current color\n whiteList['border-bottom-left-radius'] = true; // default: 0\n whiteList['border-bottom-right-radius'] = true; // default: 0\n whiteList['border-bottom-style'] = true; // default: none\n whiteList['border-bottom-width'] = true; // default: medium\n whiteList['border-collapse'] = true; // default: separate\n whiteList['border-color'] = true; // default: depending on individual properties\n whiteList['border-image'] = true; // default: none\n whiteList['border-image-outset'] = true; // default: 0\n whiteList['border-image-repeat'] = true; // default: stretch\n whiteList['border-image-slice'] = true; // default: 100%\n whiteList['border-image-source'] = true; // default: none\n whiteList['border-image-width'] = true; // default: 1\n whiteList['border-left'] = true; // default: depending on individual properties\n whiteList['border-left-color'] = true; // default: current color\n whiteList['border-left-style'] = true; // default: none\n whiteList['border-left-width'] = true; // default: medium\n whiteList['border-radius'] = true; // default: 0\n whiteList['border-right'] = true; // default: depending on individual properties\n whiteList['border-right-color'] = true; // default: current color\n whiteList['border-right-style'] = true; // default: none\n whiteList['border-right-width'] = true; // default: medium\n whiteList['border-spacing'] = true; // default: 0\n whiteList['border-style'] = true; // default: depending on individual properties\n whiteList['border-top'] = true; // default: depending on individual properties\n whiteList['border-top-color'] = true; // default: current color\n whiteList['border-top-left-radius'] = true; // default: 0\n whiteList['border-top-right-radius'] = true; // default: 0\n whiteList['border-top-style'] = true; // default: none\n whiteList['border-top-width'] = true; // default: medium\n whiteList['border-width'] = true; // default: depending on individual properties\n whiteList['bottom'] = false; // default: auto\n whiteList['box-decoration-break'] = true; // default: slice\n whiteList['box-shadow'] = true; // default: none\n whiteList['box-sizing'] = true; // default: content-box\n whiteList['box-snap'] = true; // default: none\n whiteList['box-suppress'] = true; // default: show\n whiteList['break-after'] = true; // default: auto\n whiteList['break-before'] = true; // default: auto\n whiteList['break-inside'] = true; // default: auto\n whiteList['caption-side'] = false; // default: top\n whiteList['chains'] = false; // default: none\n whiteList['clear'] = true; // default: none\n whiteList['clip'] = false; // default: auto\n whiteList['clip-path'] = false; // default: none\n whiteList['clip-rule'] = false; // default: nonzero\n whiteList['color'] = true; // default: implementation dependent\n whiteList['color-interpolation-filters'] = true; // default: auto\n whiteList['column-count'] = false; // default: auto\n whiteList['column-fill'] = false; // default: balance\n whiteList['column-gap'] = false; // default: normal\n whiteList['column-rule'] = false; // default: depending on individual properties\n whiteList['column-rule-color'] = false; // default: current color\n whiteList['column-rule-style'] = false; // default: medium\n whiteList['column-rule-width'] = false; // default: medium\n whiteList['column-span'] = false; // default: none\n whiteList['column-width'] = false; // default: auto\n whiteList['columns'] = false; // default: depending on individual properties\n whiteList['contain'] = false; // default: none\n whiteList['content'] = false; // default: normal\n whiteList['counter-increment'] = false; // default: none\n whiteList['counter-reset'] = false; // default: none\n whiteList['counter-set'] = false; // default: none\n whiteList['crop'] = false; // default: auto\n whiteList['cue'] = false; // default: depending on individual properties\n whiteList['cue-after'] = false; // default: none\n whiteList['cue-before'] = false; // default: none\n whiteList['cursor'] = false; // default: auto\n whiteList['direction'] = false; // default: ltr\n whiteList['display'] = true; // default: depending on individual properties\n whiteList['display-inside'] = true; // default: auto\n whiteList['display-list'] = true; // default: none\n whiteList['display-outside'] = true; // default: inline-level\n whiteList['dominant-baseline'] = false; // default: auto\n whiteList['elevation'] = false; // default: level\n whiteList['empty-cells'] = false; // default: show\n whiteList['filter'] = false; // default: none\n whiteList['flex'] = false; // default: depending on individual properties\n whiteList['flex-basis'] = false; // default: auto\n whiteList['flex-direction'] = false; // default: row\n whiteList['flex-flow'] = false; // default: depending on individual properties\n whiteList['flex-grow'] = false; // default: 0\n whiteList['flex-shrink'] = false; // default: 1\n whiteList['flex-wrap'] = false; // default: nowrap\n whiteList['float'] = false; // default: none\n whiteList['float-offset'] = false; // default: 0 0\n whiteList['flood-color'] = false; // default: black\n whiteList['flood-opacity'] = false; // default: 1\n whiteList['flow-from'] = false; // default: none\n whiteList['flow-into'] = false; // default: none\n whiteList['font'] = true; // default: depending on individual properties\n whiteList['font-family'] = true; // default: implementation dependent\n whiteList['font-feature-settings'] = true; // default: normal\n whiteList['font-kerning'] = true; // default: auto\n whiteList['font-language-override'] = true; // default: normal\n whiteList['font-size'] = true; // default: medium\n whiteList['font-size-adjust'] = true; // default: none\n whiteList['font-stretch'] = true; // default: normal\n whiteList['font-style'] = true; // default: normal\n whiteList['font-synthesis'] = true; // default: weight style\n whiteList['font-variant'] = true; // default: normal\n whiteList['font-variant-alternates'] = true; // default: normal\n whiteList['font-variant-caps'] = true; // default: normal\n whiteList['font-variant-east-asian'] = true; // default: normal\n whiteList['font-variant-ligatures'] = true; // default: normal\n whiteList['font-variant-numeric'] = true; // default: normal\n whiteList['font-variant-position'] = true; // default: normal\n whiteList['font-weight'] = true; // default: normal\n whiteList['grid'] = false; // default: depending on individual properties\n whiteList['grid-area'] = false; // default: depending on individual properties\n whiteList['grid-auto-columns'] = false; // default: auto\n whiteList['grid-auto-flow'] = false; // default: none\n whiteList['grid-auto-rows'] = false; // default: auto\n whiteList['grid-column'] = false; // default: depending on individual properties\n whiteList['grid-column-end'] = false; // default: auto\n whiteList['grid-column-start'] = false; // default: auto\n whiteList['grid-row'] = false; // default: depending on individual properties\n whiteList['grid-row-end'] = false; // default: auto\n whiteList['grid-row-start'] = false; // default: auto\n whiteList['grid-template'] = false; // default: depending on individual properties\n whiteList['grid-template-areas'] = false; // default: none\n whiteList['grid-template-columns'] = false; // default: none\n whiteList['grid-template-rows'] = false; // default: none\n whiteList['hanging-punctuation'] = false; // default: none\n whiteList['height'] = true; // default: auto\n whiteList['hyphens'] = false; // default: manual\n whiteList['icon'] = false; // default: auto\n whiteList['image-orientation'] = false; // default: auto\n whiteList['image-resolution'] = false; // default: normal\n whiteList['ime-mode'] = false; // default: auto\n whiteList['initial-letters'] = false; // default: normal\n whiteList['inline-box-align'] = false; // default: last\n whiteList['justify-content'] = false; // default: auto\n whiteList['justify-items'] = false; // default: auto\n whiteList['justify-self'] = false; // default: auto\n whiteList['left'] = false; // default: auto\n whiteList['letter-spacing'] = true; // default: normal\n whiteList['lighting-color'] = true; // default: white\n whiteList['line-box-contain'] = false; // default: block inline replaced\n whiteList['line-break'] = false; // default: auto\n whiteList['line-grid'] = false; // default: match-parent\n whiteList['line-height'] = false; // default: normal\n whiteList['line-snap'] = false; // default: none\n whiteList['line-stacking'] = false; // default: depending on individual properties\n whiteList['line-stacking-ruby'] = false; // default: exclude-ruby\n whiteList['line-stacking-shift'] = false; // default: consider-shifts\n whiteList['line-stacking-strategy'] = false; // default: inline-line-height\n whiteList['list-style'] = true; // default: depending on individual properties\n whiteList['list-style-image'] = true; // default: none\n whiteList['list-style-position'] = true; // default: outside\n whiteList['list-style-type'] = true; // default: disc\n whiteList['margin'] = true; // default: depending on individual properties\n whiteList['margin-bottom'] = true; // default: 0\n whiteList['margin-left'] = true; // default: 0\n whiteList['margin-right'] = true; // default: 0\n whiteList['margin-top'] = true; // default: 0\n whiteList['marker-offset'] = false; // default: auto\n whiteList['marker-side'] = false; // default: list-item\n whiteList['marks'] = false; // default: none\n whiteList['mask'] = false; // default: border-box\n whiteList['mask-box'] = false; // default: see individual properties\n whiteList['mask-box-outset'] = false; // default: 0\n whiteList['mask-box-repeat'] = false; // default: stretch\n whiteList['mask-box-slice'] = false; // default: 0 fill\n whiteList['mask-box-source'] = false; // default: none\n whiteList['mask-box-width'] = false; // default: auto\n whiteList['mask-clip'] = false; // default: border-box\n whiteList['mask-image'] = false; // default: none\n whiteList['mask-origin'] = false; // default: border-box\n whiteList['mask-position'] = false; // default: center\n whiteList['mask-repeat'] = false; // default: no-repeat\n whiteList['mask-size'] = false; // default: border-box\n whiteList['mask-source-type'] = false; // default: auto\n whiteList['mask-type'] = false; // default: luminance\n whiteList['max-height'] = true; // default: none\n whiteList['max-lines'] = false; // default: none\n whiteList['max-width'] = true; // default: none\n whiteList['min-height'] = true; // default: 0\n whiteList['min-width'] = true; // default: 0\n whiteList['move-to'] = false; // default: normal\n whiteList['nav-down'] = false; // default: auto\n whiteList['nav-index'] = false; // default: auto\n whiteList['nav-left'] = false; // default: auto\n whiteList['nav-right'] = false; // default: auto\n whiteList['nav-up'] = false; // default: auto\n whiteList['object-fit'] = false; // default: fill\n whiteList['object-position'] = false; // default: 50% 50%\n whiteList['opacity'] = false; // default: 1\n whiteList['order'] = false; // default: 0\n whiteList['orphans'] = false; // default: 2\n whiteList['outline'] = false; // default: depending on individual properties\n whiteList['outline-color'] = false; // default: invert\n whiteList['outline-offset'] = false; // default: 0\n whiteList['outline-style'] = false; // default: none\n whiteList['outline-width'] = false; // default: medium\n whiteList['overflow'] = false; // default: depending on individual properties\n whiteList['overflow-wrap'] = false; // default: normal\n whiteList['overflow-x'] = false; // default: visible\n whiteList['overflow-y'] = false; // default: visible\n whiteList['padding'] = true; // default: depending on individual properties\n whiteList['padding-bottom'] = true; // default: 0\n whiteList['padding-left'] = true; // default: 0\n whiteList['padding-right'] = true; // default: 0\n whiteList['padding-top'] = true; // default: 0\n whiteList['page'] = false; // default: auto\n whiteList['page-break-after'] = false; // default: auto\n whiteList['page-break-before'] = false; // default: auto\n whiteList['page-break-inside'] = false; // default: auto\n whiteList['page-policy'] = false; // default: start\n whiteList['pause'] = false; // default: implementation dependent\n whiteList['pause-after'] = false; // default: implementation dependent\n whiteList['pause-before'] = false; // default: implementation dependent\n whiteList['perspective'] = false; // default: none\n whiteList['perspective-origin'] = false; // default: 50% 50%\n whiteList['pitch'] = false; // default: medium\n whiteList['pitch-range'] = false; // default: 50\n whiteList['play-during'] = false; // default: auto\n whiteList['position'] = false; // default: static\n whiteList['presentation-level'] = false; // default: 0\n whiteList['quotes'] = false; // default: text\n whiteList['region-fragment'] = false; // default: auto\n whiteList['resize'] = false; // default: none\n whiteList['rest'] = false; // default: depending on individual properties\n whiteList['rest-after'] = false; // default: none\n whiteList['rest-before'] = false; // default: none\n whiteList['richness'] = false; // default: 50\n whiteList['right'] = false; // default: auto\n whiteList['rotation'] = false; // default: 0\n whiteList['rotation-point'] = false; // default: 50% 50%\n whiteList['ruby-align'] = false; // default: auto\n whiteList['ruby-merge'] = false; // default: separate\n whiteList['ruby-position'] = false; // default: before\n whiteList['shape-image-threshold'] = false; // default: 0.0\n whiteList['shape-outside'] = false; // default: none\n whiteList['shape-margin'] = false; // default: 0\n whiteList['size'] = false; // default: auto\n whiteList['speak'] = false; // default: auto\n whiteList['speak-as'] = false; // default: normal\n whiteList['speak-header'] = false; // default: once\n whiteList['speak-numeral'] = false; // default: continuous\n whiteList['speak-punctuation'] = false; // default: none\n whiteList['speech-rate'] = false; // default: medium\n whiteList['stress'] = false; // default: 50\n whiteList['string-set'] = false; // default: none\n whiteList['tab-size'] = false; // default: 8\n whiteList['table-layout'] = false; // default: auto\n whiteList['text-align'] = true; // default: start\n whiteList['text-align-last'] = true; // default: auto\n whiteList['text-combine-upright'] = true; // default: none\n whiteList['text-decoration'] = true; // default: none\n whiteList['text-decoration-color'] = true; // default: currentColor\n whiteList['text-decoration-line'] = true; // default: none\n whiteList['text-decoration-skip'] = true; // default: objects\n whiteList['text-decoration-style'] = true; // default: solid\n whiteList['text-emphasis'] = true; // default: depending on individual properties\n whiteList['text-emphasis-color'] = true; // default: currentColor\n whiteList['text-emphasis-position'] = true; // default: over right\n whiteList['text-emphasis-style'] = true; // default: none\n whiteList['text-height'] = true; // default: auto\n whiteList['text-indent'] = true; // default: 0\n whiteList['text-justify'] = true; // default: auto\n whiteList['text-orientation'] = true; // default: mixed\n whiteList['text-overflow'] = true; // default: clip\n whiteList['text-shadow'] = true; // default: none\n whiteList['text-space-collapse'] = true; // default: collapse\n whiteList['text-transform'] = true; // default: none\n whiteList['text-underline-position'] = true; // default: auto\n whiteList['text-wrap'] = true; // default: normal\n whiteList['top'] = false; // default: auto\n whiteList['transform'] = false; // default: none\n whiteList['transform-origin'] = false; // default: 50% 50% 0\n whiteList['transform-style'] = false; // default: flat\n whiteList['transition'] = false; // default: depending on individual properties\n whiteList['transition-delay'] = false; // default: 0s\n whiteList['transition-duration'] = false; // default: 0s\n whiteList['transition-property'] = false; // default: all\n whiteList['transition-timing-function'] = false; // default: ease\n whiteList['unicode-bidi'] = false; // default: normal\n whiteList['vertical-align'] = false; // default: baseline\n whiteList['visibility'] = false; // default: visible\n whiteList['voice-balance'] = false; // default: center\n whiteList['voice-duration'] = false; // default: auto\n whiteList['voice-family'] = false; // default: implementation dependent\n whiteList['voice-pitch'] = false; // default: medium\n whiteList['voice-range'] = false; // default: medium\n whiteList['voice-rate'] = false; // default: normal\n whiteList['voice-stress'] = false; // default: normal\n whiteList['voice-volume'] = false; // default: medium\n whiteList['volume'] = false; // default: medium\n whiteList['white-space'] = false; // default: normal\n whiteList['widows'] = false; // default: 2\n whiteList['width'] = true; // default: auto\n whiteList['will-change'] = false; // default: auto\n whiteList['word-break'] = true; // default: normal\n whiteList['word-spacing'] = true; // default: normal\n whiteList['word-wrap'] = true; // default: normal\n whiteList['wrap-flow'] = false; // default: auto\n whiteList['wrap-through'] = false; // default: wrap\n whiteList['writing-mode'] = false; // default: horizontal-tb\n whiteList['z-index'] = false; // default: auto\n\n return whiteList;\n}\n\n\n/**\n * 匹配到白名单上的一个属性时\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @return {String}\n */\nfunction onAttr (name, value, options) {\n // do nothing\n}\n\n/**\n * 匹配到不在白名单上的一个属性时\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @return {String}\n */\nfunction onIgnoreAttr (name, value, options) {\n // do nothing\n}\n\nvar REGEXP_URL_JAVASCRIPT = /javascript\\s*\\:/img;\n\n/**\n * 过滤属性值\n *\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction safeAttrValue(name, value) {\n if (REGEXP_URL_JAVASCRIPT.test(value)) return '';\n return value;\n}\n\n\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onAttr = onAttr;\nexports.onIgnoreAttr = onIgnoreAttr;\nexports.safeAttrValue = safeAttrValue;\n","/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar DEFAULT = require('./default');\nvar FilterCSS = require('./css');\n\n\n/**\n * XSS过滤\n *\n * @param {String} css 要过滤的CSS代码\n * @param {Object} options 选项:whiteList, onAttr, onIgnoreAttr\n * @return {String}\n */\nfunction filterCSS (html, options) {\n var xss = new FilterCSS(options);\n return xss.process(html);\n}\n\n\n// 输出\nexports = module.exports = filterCSS;\nexports.FilterCSS = FilterCSS;\nfor (var i in DEFAULT) exports[i] = DEFAULT[i];\n\n// 在浏览器端使用\nif (typeof window !== 'undefined') {\n window.filterCSS = module.exports;\n}\n","/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar _ = require('./util');\n\n\n/**\n * 解析style\n *\n * @param {String} css\n * @param {Function} onAttr 处理属性的函数\n * 参数格式: function (sourcePosition, position, name, value, source)\n * @return {String}\n */\nfunction parseStyle (css, onAttr) {\n css = _.trimRight(css);\n if (css[css.length - 1] !== ';') css += ';';\n var cssLength = css.length;\n var isParenthesisOpen = false;\n var lastPos = 0;\n var i = 0;\n var retCSS = '';\n\n function addNewAttr () {\n // 如果没有正常的闭合圆括号,则直接忽略当前属性\n if (!isParenthesisOpen) {\n var source = _.trim(css.slice(lastPos, i));\n var j = source.indexOf(':');\n if (j !== -1) {\n var name = _.trim(source.slice(0, j));\n var value = _.trim(source.slice(j + 1));\n // 必须有属性名称\n if (name) {\n var ret = onAttr(lastPos, retCSS.length, name, value, source);\n if (ret) retCSS += ret + '; ';\n }\n }\n }\n lastPos = i + 1;\n }\n\n for (; i < cssLength; i++) {\n var c = css[i];\n if (c === '/' && css[i + 1] === '*') {\n // 备注开始\n var j = css.indexOf('*/', i + 2);\n // 如果没有正常的备注结束,则后面的部分全部跳过\n if (j === -1) break;\n // 直接将当前位置调到备注结尾,并且初始化状态\n i = j + 1;\n lastPos = i + 1;\n isParenthesisOpen = false;\n } else if (c === '(') {\n isParenthesisOpen = true;\n } else if (c === ')') {\n isParenthesisOpen = false;\n } else if (c === ';') {\n if (isParenthesisOpen) {\n // 在圆括号里面,忽略\n } else {\n addNewAttr();\n }\n } else if (c === '\\n') {\n addNewAttr();\n }\n }\n\n return _.trim(retCSS);\n}\n\nmodule.exports = parseStyle;\n","module.exports = {\n indexOf: function (arr, item) {\n var i, j;\n if (Array.prototype.indexOf) {\n return arr.indexOf(item);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n return -1;\n },\n forEach: function (arr, fn, scope) {\n var i, j;\n if (Array.prototype.forEach) {\n return arr.forEach(fn, scope);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n fn.call(scope, arr[i], i, arr);\n }\n },\n trim: function (str) {\n if (String.prototype.trim) {\n return str.trim();\n }\n return str.replace(/(^\\s*)|(\\s*$)/g, '');\n },\n trimRight: function (str) {\n if (String.prototype.trimRight) {\n return str.trimRight();\n }\n return str.replace(/(\\s*$)/g, '');\n }\n};\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","/**\n * Diff Match and Patch\n * Copyright 2018 The diff-match-patch Authors.\n * https://github.com/google/diff-match-patch\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Computes the difference between two texts to create a patch.\n * Applies the patch onto another text, allowing for errors.\n * @author fraser@google.com (Neil Fraser)\n */\n\n/**\n * Class containing the diff, match and patch methods.\n * @constructor\n */\nvar diff_match_patch = function() {\n\n // Defaults.\n // Redefine these in your program to override the defaults.\n\n // Number of seconds to map a diff before giving up (0 for infinity).\n this.Diff_Timeout = 1.0;\n // Cost of an empty edit operation in terms of edit characters.\n this.Diff_EditCost = 4;\n // At what point is no match declared (0.0 = perfection, 1.0 = very loose).\n this.Match_Threshold = 0.5;\n // How far to search for a match (0 = exact location, 1000+ = broad match).\n // A match this many characters away from the expected location will add\n // 1.0 to the score (0.0 is a perfect match).\n this.Match_Distance = 1000;\n // When deleting a large block of text (over ~64 characters), how close do\n // the contents have to be to match the expected contents. (0.0 = perfection,\n // 1.0 = very loose). Note that Match_Threshold controls how closely the\n // end points of a delete need to match.\n this.Patch_DeleteThreshold = 0.5;\n // Chunk size for context length.\n this.Patch_Margin = 4;\n\n // The number of bits in an int.\n this.Match_MaxBits = 32;\n};\n\n\n// DIFF FUNCTIONS\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n/**\n * Class representing one diff tuple.\n * ~Attempts to look like a two-element array (which is what this used to be).~\n * Constructor returns an actual two-element array, to allow destructing @JackuB\n * See https://github.com/JackuB/diff-match-patch/issues/14 for details\n * @param {number} op Operation, one of: DIFF_DELETE, DIFF_INSERT, DIFF_EQUAL.\n * @param {string} text Text to be deleted, inserted, or retained.\n * @constructor\n */\ndiff_match_patch.Diff = function(op, text) {\n return [op, text];\n};\n\n/**\n * Find the differences between two texts. Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {boolean=} opt_checklines Optional speedup flag. If present and false,\n * then don't run a line-level diff first to identify the changed areas.\n * Defaults to true, which does a faster, slightly less optimal diff.\n * @param {number=} opt_deadline Optional time when the diff should be complete\n * by. Used internally for recursive calls. Users should set DiffTimeout\n * instead.\n * @return {!Array.} Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_main = function(text1, text2, opt_checklines,\n opt_deadline) {\n // Set a deadline by which time the diff must be complete.\n if (typeof opt_deadline == 'undefined') {\n if (this.Diff_Timeout <= 0) {\n opt_deadline = Number.MAX_VALUE;\n } else {\n opt_deadline = (new Date).getTime() + this.Diff_Timeout * 1000;\n }\n }\n var deadline = opt_deadline;\n\n // Check for null inputs.\n if (text1 == null || text2 == null) {\n throw new Error('Null input. (diff_main)');\n }\n\n // Check for equality (speedup).\n if (text1 == text2) {\n if (text1) {\n return [new diff_match_patch.Diff(DIFF_EQUAL, text1)];\n }\n return [];\n }\n\n if (typeof opt_checklines == 'undefined') {\n opt_checklines = true;\n }\n var checklines = opt_checklines;\n\n // Trim off common prefix (speedup).\n var commonlength = this.diff_commonPrefix(text1, text2);\n var commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength);\n\n // Trim off common suffix (speedup).\n commonlength = this.diff_commonSuffix(text1, text2);\n var commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength);\n text2 = text2.substring(0, text2.length - commonlength);\n\n // Compute the diff on the middle block.\n var diffs = this.diff_compute_(text1, text2, checklines, deadline);\n\n // Restore the prefix and suffix.\n if (commonprefix) {\n diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, commonprefix));\n }\n if (commonsuffix) {\n diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, commonsuffix));\n }\n this.diff_cleanupMerge(diffs);\n return diffs;\n};\n\n\n/**\n * Find the differences between two texts. Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {boolean} checklines Speedup flag. If false, then don't run a\n * line-level diff first to identify the changed areas.\n * If true, then run a faster, slightly less optimal diff.\n * @param {number} deadline Time when the diff should be complete by.\n * @return {!Array.} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_compute_ = function(text1, text2, checklines,\n deadline) {\n var diffs;\n\n if (!text1) {\n // Just add some text (speedup).\n return [new diff_match_patch.Diff(DIFF_INSERT, text2)];\n }\n\n if (!text2) {\n // Just delete some text (speedup).\n return [new diff_match_patch.Diff(DIFF_DELETE, text1)];\n }\n\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n var i = longtext.indexOf(shorttext);\n if (i != -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [new diff_match_patch.Diff(DIFF_INSERT, longtext.substring(0, i)),\n new diff_match_patch.Diff(DIFF_EQUAL, shorttext),\n new diff_match_patch.Diff(DIFF_INSERT,\n longtext.substring(i + shorttext.length))];\n // Swap insertions for deletions if diff is reversed.\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n }\n return diffs;\n }\n\n if (shorttext.length == 1) {\n // Single character string.\n // After the previous speedup, the character can't be an equality.\n return [new diff_match_patch.Diff(DIFF_DELETE, text1),\n new diff_match_patch.Diff(DIFF_INSERT, text2)];\n }\n\n // Check to see if the problem can be split in two.\n var hm = this.diff_halfMatch_(text1, text2);\n if (hm) {\n // A half-match was found, sort out the return data.\n var text1_a = hm[0];\n var text1_b = hm[1];\n var text2_a = hm[2];\n var text2_b = hm[3];\n var mid_common = hm[4];\n // Send both pairs off for separate processing.\n var diffs_a = this.diff_main(text1_a, text2_a, checklines, deadline);\n var diffs_b = this.diff_main(text1_b, text2_b, checklines, deadline);\n // Merge the results.\n return diffs_a.concat([new diff_match_patch.Diff(DIFF_EQUAL, mid_common)],\n diffs_b);\n }\n\n if (checklines && text1.length > 100 && text2.length > 100) {\n return this.diff_lineMode_(text1, text2, deadline);\n }\n\n return this.diff_bisect_(text1, text2, deadline);\n};\n\n\n/**\n * Do a quick line-level diff on both strings, then rediff the parts for\n * greater accuracy.\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} deadline Time when the diff should be complete by.\n * @return {!Array.} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_lineMode_ = function(text1, text2, deadline) {\n // Scan the text on a line-by-line basis first.\n var a = this.diff_linesToChars_(text1, text2);\n text1 = a.chars1;\n text2 = a.chars2;\n var linearray = a.lineArray;\n\n var diffs = this.diff_main(text1, text2, false, deadline);\n\n // Convert the diff back to original text.\n this.diff_charsToLines_(diffs, linearray);\n // Eliminate freak matches (e.g. blank lines)\n this.diff_cleanupSemantic(diffs);\n\n // Rediff any replacement blocks, this time character-by-character.\n // Add a dummy entry at the end.\n diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, ''));\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n break;\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete >= 1 && count_insert >= 1) {\n // Delete the offending records and add the merged ones.\n diffs.splice(pointer - count_delete - count_insert,\n count_delete + count_insert);\n pointer = pointer - count_delete - count_insert;\n var subDiff =\n this.diff_main(text_delete, text_insert, false, deadline);\n for (var j = subDiff.length - 1; j >= 0; j--) {\n diffs.splice(pointer, 0, subDiff[j]);\n }\n pointer = pointer + subDiff.length;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n pointer++;\n }\n diffs.pop(); // Remove the dummy entry at the end.\n\n return diffs;\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} deadline Time at which to bail if not yet complete.\n * @return {!Array.} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_bisect_ = function(text1, text2, deadline) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n var max_d = Math.ceil((text1_length + text2_length) / 2);\n var v_offset = max_d;\n var v_length = 2 * max_d;\n var v1 = new Array(v_length);\n var v2 = new Array(v_length);\n // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n var delta = text1_length - text2_length;\n // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n var front = (delta % 2 != 0);\n // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n var k1start = 0;\n var k1end = 0;\n var k2start = 0;\n var k2end = 0;\n for (var d = 0; d < max_d; d++) {\n // Bail out if deadline is reached.\n if ((new Date()).getTime() > deadline) {\n break;\n }\n\n // Walk the front path one step.\n for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n var k1_offset = v_offset + k1;\n var x1;\n if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n x1 = v1[k1_offset + 1];\n } else {\n x1 = v1[k1_offset - 1] + 1;\n }\n var y1 = x1 - k1;\n while (x1 < text1_length && y1 < text2_length &&\n text1.charAt(x1) == text2.charAt(y1)) {\n x1++;\n y1++;\n }\n v1[k1_offset] = x1;\n if (x1 > text1_length) {\n // Ran off the right of the graph.\n k1end += 2;\n } else if (y1 > text2_length) {\n // Ran off the bottom of the graph.\n k1start += 2;\n } else if (front) {\n var k2_offset = v_offset + delta - k1;\n if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n // Mirror x2 onto top-left coordinate system.\n var x2 = text1_length - v2[k2_offset];\n if (x1 >= x2) {\n // Overlap detected.\n return this.diff_bisectSplit_(text1, text2, x1, y1, deadline);\n }\n }\n }\n }\n\n // Walk the reverse path one step.\n for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n var k2_offset = v_offset + k2;\n var x2;\n if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n x2 = v2[k2_offset + 1];\n } else {\n x2 = v2[k2_offset - 1] + 1;\n }\n var y2 = x2 - k2;\n while (x2 < text1_length && y2 < text2_length &&\n text1.charAt(text1_length - x2 - 1) ==\n text2.charAt(text2_length - y2 - 1)) {\n x2++;\n y2++;\n }\n v2[k2_offset] = x2;\n if (x2 > text1_length) {\n // Ran off the left of the graph.\n k2end += 2;\n } else if (y2 > text2_length) {\n // Ran off the top of the graph.\n k2start += 2;\n } else if (!front) {\n var k1_offset = v_offset + delta - k2;\n if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n var x1 = v1[k1_offset];\n var y1 = v_offset + x1 - k1_offset;\n // Mirror x2 onto top-left coordinate system.\n x2 = text1_length - x2;\n if (x1 >= x2) {\n // Overlap detected.\n return this.diff_bisectSplit_(text1, text2, x1, y1, deadline);\n }\n }\n }\n }\n }\n // Diff took too long and hit the deadline or\n // number of diffs equals number of characters, no commonality at all.\n return [new diff_match_patch.Diff(DIFF_DELETE, text1),\n new diff_match_patch.Diff(DIFF_INSERT, text2)];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @param {number} deadline Time at which to bail if not yet complete.\n * @return {!Array.} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_bisectSplit_ = function(text1, text2, x, y,\n deadline) {\n var text1a = text1.substring(0, x);\n var text2a = text2.substring(0, y);\n var text1b = text1.substring(x);\n var text2b = text2.substring(y);\n\n // Compute both diffs serially.\n var diffs = this.diff_main(text1a, text2a, false, deadline);\n var diffsb = this.diff_main(text1b, text2b, false, deadline);\n\n return diffs.concat(diffsb);\n};\n\n\n/**\n * Split two texts into an array of strings. Reduce the texts to a string of\n * hashes where each Unicode character represents one line.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {{chars1: string, chars2: string, lineArray: !Array.}}\n * An object containing the encoded text1, the encoded text2 and\n * the array of unique strings.\n * The zeroth element of the array of unique strings is intentionally blank.\n * @private\n */\ndiff_match_patch.prototype.diff_linesToChars_ = function(text1, text2) {\n var lineArray = []; // e.g. lineArray[4] == 'Hello\\n'\n var lineHash = {}; // e.g. lineHash['Hello\\n'] == 4\n\n // '\\x00' is a valid character, but various debuggers don't like it.\n // So we'll insert a junk entry to avoid generating a null character.\n lineArray[0] = '';\n\n /**\n * Split a text into an array of strings. Reduce the texts to a string of\n * hashes where each Unicode character represents one line.\n * Modifies linearray and linehash through being a closure.\n * @param {string} text String to encode.\n * @return {string} Encoded string.\n * @private\n */\n function diff_linesToCharsMunge_(text) {\n var chars = '';\n // Walk the text, pulling out a substring for each line.\n // text.split('\\n') would would temporarily double our memory footprint.\n // Modifying text would create many large strings to garbage collect.\n var lineStart = 0;\n var lineEnd = -1;\n // Keeping our own length variable is faster than looking it up.\n var lineArrayLength = lineArray.length;\n while (lineEnd < text.length - 1) {\n lineEnd = text.indexOf('\\n', lineStart);\n if (lineEnd == -1) {\n lineEnd = text.length - 1;\n }\n var line = text.substring(lineStart, lineEnd + 1);\n\n if (lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) :\n (lineHash[line] !== undefined)) {\n chars += String.fromCharCode(lineHash[line]);\n } else {\n if (lineArrayLength == maxLines) {\n // Bail out at 65535 because\n // String.fromCharCode(65536) == String.fromCharCode(0)\n line = text.substring(lineStart);\n lineEnd = text.length;\n }\n chars += String.fromCharCode(lineArrayLength);\n lineHash[line] = lineArrayLength;\n lineArray[lineArrayLength++] = line;\n }\n lineStart = lineEnd + 1;\n }\n return chars;\n }\n // Allocate 2/3rds of the space for text1, the rest for text2.\n var maxLines = 40000;\n var chars1 = diff_linesToCharsMunge_(text1);\n maxLines = 65535;\n var chars2 = diff_linesToCharsMunge_(text2);\n return {chars1: chars1, chars2: chars2, lineArray: lineArray};\n};\n\n\n/**\n * Rehydrate the text in a diff from a string of line hashes to real lines of\n * text.\n * @param {!Array.} diffs Array of diff tuples.\n * @param {!Array.} lineArray Array of unique strings.\n * @private\n */\ndiff_match_patch.prototype.diff_charsToLines_ = function(diffs, lineArray) {\n for (var i = 0; i < diffs.length; i++) {\n var chars = diffs[i][1];\n var text = [];\n for (var j = 0; j < chars.length; j++) {\n text[j] = lineArray[chars.charCodeAt(j)];\n }\n diffs[i][1] = text.join('');\n }\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n * string.\n */\ndiff_match_patch.prototype.diff_commonPrefix = function(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: https://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerstart = 0;\n while (pointermin < pointermid) {\n if (text1.substring(pointerstart, pointermid) ==\n text2.substring(pointerstart, pointermid)) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\ndiff_match_patch.prototype.diff_commonSuffix = function(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 ||\n text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: https://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerend = 0;\n while (pointermin < pointermid) {\n if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Determine if the suffix of one string is the prefix of another.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of the first\n * string and the start of the second string.\n * @private\n */\ndiff_match_patch.prototype.diff_commonOverlap_ = function(text1, text2) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n // Eliminate the null case.\n if (text1_length == 0 || text2_length == 0) {\n return 0;\n }\n // Truncate the longer string.\n if (text1_length > text2_length) {\n text1 = text1.substring(text1_length - text2_length);\n } else if (text1_length < text2_length) {\n text2 = text2.substring(0, text1_length);\n }\n var text_length = Math.min(text1_length, text2_length);\n // Quick check for the worst case.\n if (text1 == text2) {\n return text_length;\n }\n\n // Start by looking for a single character match\n // and increase length until no match is found.\n // Performance analysis: https://neil.fraser.name/news/2010/11/04/\n var best = 0;\n var length = 1;\n while (true) {\n var pattern = text1.substring(text_length - length);\n var found = text2.indexOf(pattern);\n if (found == -1) {\n return best;\n }\n length += found;\n if (found == 0 || text1.substring(text_length - length) ==\n text2.substring(0, length)) {\n best = length;\n length++;\n }\n }\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.} Five element Array, containing the prefix of\n * text1, the suffix of text1, the prefix of text2, the suffix of\n * text2 and the common middle. Or null if there was no match.\n * @private\n */\ndiff_match_patch.prototype.diff_halfMatch_ = function(text1, text2) {\n if (this.Diff_Timeout <= 0) {\n // Don't risk returning a non-optimal diff if we have unlimited time.\n return null;\n }\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\n }\n var dmp = this; // 'this' becomes 'window' in a closure.\n\n /**\n * Does a substring of shorttext exist within longtext such that the substring\n * is at least half the length of longtext?\n * Closure, but does not reference any external variables.\n * @param {string} longtext Longer string.\n * @param {string} shorttext Shorter string.\n * @param {number} i Start index of quarter length substring within longtext.\n * @return {Array.} Five element Array, containing the prefix of\n * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n * of shorttext and the common middle. Or null if there was no match.\n * @private\n */\n function diff_halfMatchI_(longtext, shorttext, i) {\n // Start with a 1/4 length substring at position i as a seed.\n var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n var j = -1;\n var best_common = '';\n var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n var prefixLength = dmp.diff_commonPrefix(longtext.substring(i),\n shorttext.substring(j));\n var suffixLength = dmp.diff_commonSuffix(longtext.substring(0, i),\n shorttext.substring(0, j));\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(j - suffixLength, j) +\n shorttext.substring(j, j + prefixLength);\n best_longtext_a = longtext.substring(0, i - suffixLength);\n best_longtext_b = longtext.substring(i + prefixLength);\n best_shorttext_a = shorttext.substring(0, j - suffixLength);\n best_shorttext_b = shorttext.substring(j + prefixLength);\n }\n }\n if (best_common.length * 2 >= longtext.length) {\n return [best_longtext_a, best_longtext_b,\n best_shorttext_a, best_shorttext_b, best_common];\n } else {\n return null;\n }\n }\n\n // First check if the second quarter is the seed for a half-match.\n var hm1 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 4));\n // Check again based on the third quarter.\n var hm2 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 2));\n var hm;\n if (!hm1 && !hm2) {\n return null;\n } else if (!hm2) {\n hm = hm1;\n } else if (!hm1) {\n hm = hm2;\n } else {\n // Both matched. Select the longest.\n hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n }\n\n // A half-match was found, sort out the return data.\n var text1_a, text1_b, text2_a, text2_b;\n if (text1.length > text2.length) {\n text1_a = hm[0];\n text1_b = hm[1];\n text2_a = hm[2];\n text2_b = hm[3];\n } else {\n text2_a = hm[0];\n text2_b = hm[1];\n text1_a = hm[2];\n text1_b = hm[3];\n }\n var mid_common = hm[4];\n return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reduce the number of edits by eliminating semantically trivial equalities.\n * @param {!Array.} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupSemantic = function(diffs) {\n var changes = false;\n var equalities = []; // Stack of indices where equalities are found.\n var equalitiesLength = 0; // Keeping our own length var is faster in JS.\n /** @type {?string} */\n var lastEquality = null;\n // Always equal to diffs[equalities[equalitiesLength - 1]][1]\n var pointer = 0; // Index of current position.\n // Number of characters that changed prior to the equality.\n var length_insertions1 = 0;\n var length_deletions1 = 0;\n // Number of characters that changed after the equality.\n var length_insertions2 = 0;\n var length_deletions2 = 0;\n while (pointer < diffs.length) {\n if (diffs[pointer][0] == DIFF_EQUAL) { // Equality found.\n equalities[equalitiesLength++] = pointer;\n length_insertions1 = length_insertions2;\n length_deletions1 = length_deletions2;\n length_insertions2 = 0;\n length_deletions2 = 0;\n lastEquality = diffs[pointer][1];\n } else { // An insertion or deletion.\n if (diffs[pointer][0] == DIFF_INSERT) {\n length_insertions2 += diffs[pointer][1].length;\n } else {\n length_deletions2 += diffs[pointer][1].length;\n }\n // Eliminate an equality that is smaller or equal to the edits on both\n // sides of it.\n if (lastEquality && (lastEquality.length <=\n Math.max(length_insertions1, length_deletions1)) &&\n (lastEquality.length <= Math.max(length_insertions2,\n length_deletions2))) {\n // Duplicate record.\n diffs.splice(equalities[equalitiesLength - 1], 0,\n new diff_match_patch.Diff(DIFF_DELETE, lastEquality));\n // Change second copy to insert.\n diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;\n // Throw away the equality we just deleted.\n equalitiesLength--;\n // Throw away the previous equality (it needs to be reevaluated).\n equalitiesLength--;\n pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;\n length_insertions1 = 0; // Reset the counters.\n length_deletions1 = 0;\n length_insertions2 = 0;\n length_deletions2 = 0;\n lastEquality = null;\n changes = true;\n }\n }\n pointer++;\n }\n\n // Normalize the diff.\n if (changes) {\n this.diff_cleanupMerge(diffs);\n }\n this.diff_cleanupSemanticLossless(diffs);\n\n // Find any overlaps between deletions and insertions.\n // e.g: abcxxxxxxdef\n // -> abcxxxdef\n // e.g: xxxabcdefxxx\n // -> defxxxabc\n // Only extract an overlap if it is as big as the edit ahead or behind it.\n pointer = 1;\n while (pointer < diffs.length) {\n if (diffs[pointer - 1][0] == DIFF_DELETE &&\n diffs[pointer][0] == DIFF_INSERT) {\n var deletion = diffs[pointer - 1][1];\n var insertion = diffs[pointer][1];\n var overlap_length1 = this.diff_commonOverlap_(deletion, insertion);\n var overlap_length2 = this.diff_commonOverlap_(insertion, deletion);\n if (overlap_length1 >= overlap_length2) {\n if (overlap_length1 >= deletion.length / 2 ||\n overlap_length1 >= insertion.length / 2) {\n // Overlap found. Insert an equality and trim the surrounding edits.\n diffs.splice(pointer, 0, new diff_match_patch.Diff(DIFF_EQUAL,\n insertion.substring(0, overlap_length1)));\n diffs[pointer - 1][1] =\n deletion.substring(0, deletion.length - overlap_length1);\n diffs[pointer + 1][1] = insertion.substring(overlap_length1);\n pointer++;\n }\n } else {\n if (overlap_length2 >= deletion.length / 2 ||\n overlap_length2 >= insertion.length / 2) {\n // Reverse overlap found.\n // Insert an equality and swap and trim the surrounding edits.\n diffs.splice(pointer, 0, new diff_match_patch.Diff(DIFF_EQUAL,\n deletion.substring(0, overlap_length2)));\n diffs[pointer - 1][0] = DIFF_INSERT;\n diffs[pointer - 1][1] =\n insertion.substring(0, insertion.length - overlap_length2);\n diffs[pointer + 1][0] = DIFF_DELETE;\n diffs[pointer + 1][1] =\n deletion.substring(overlap_length2);\n pointer++;\n }\n }\n pointer++;\n }\n pointer++;\n }\n};\n\n\n/**\n * Look for single edits surrounded on both sides by equalities\n * which can be shifted sideways to align the edit to a word boundary.\n * e.g: The cat came. -> The cat came.\n * @param {!Array.} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupSemanticLossless = function(diffs) {\n /**\n * Given two strings, compute a score representing whether the internal\n * boundary falls on logical boundaries.\n * Scores range from 6 (best) to 0 (worst).\n * Closure, but does not reference any external variables.\n * @param {string} one First string.\n * @param {string} two Second string.\n * @return {number} The score.\n * @private\n */\n function diff_cleanupSemanticScore_(one, two) {\n if (!one || !two) {\n // Edges are the best.\n return 6;\n }\n\n // Each port of this function behaves slightly differently due to\n // subtle differences in each language's definition of things like\n // 'whitespace'. Since this function's purpose is largely cosmetic,\n // the choice has been made to use each language's native features\n // rather than force total conformity.\n var char1 = one.charAt(one.length - 1);\n var char2 = two.charAt(0);\n var nonAlphaNumeric1 = char1.match(diff_match_patch.nonAlphaNumericRegex_);\n var nonAlphaNumeric2 = char2.match(diff_match_patch.nonAlphaNumericRegex_);\n var whitespace1 = nonAlphaNumeric1 &&\n char1.match(diff_match_patch.whitespaceRegex_);\n var whitespace2 = nonAlphaNumeric2 &&\n char2.match(diff_match_patch.whitespaceRegex_);\n var lineBreak1 = whitespace1 &&\n char1.match(diff_match_patch.linebreakRegex_);\n var lineBreak2 = whitespace2 &&\n char2.match(diff_match_patch.linebreakRegex_);\n var blankLine1 = lineBreak1 &&\n one.match(diff_match_patch.blanklineEndRegex_);\n var blankLine2 = lineBreak2 &&\n two.match(diff_match_patch.blanklineStartRegex_);\n\n if (blankLine1 || blankLine2) {\n // Five points for blank lines.\n return 5;\n } else if (lineBreak1 || lineBreak2) {\n // Four points for line breaks.\n return 4;\n } else if (nonAlphaNumeric1 && !whitespace1 && whitespace2) {\n // Three points for end of sentences.\n return 3;\n } else if (whitespace1 || whitespace2) {\n // Two points for whitespace.\n return 2;\n } else if (nonAlphaNumeric1 || nonAlphaNumeric2) {\n // One point for non-alphanumeric.\n return 1;\n }\n return 0;\n }\n\n var pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n var equality1 = diffs[pointer - 1][1];\n var edit = diffs[pointer][1];\n var equality2 = diffs[pointer + 1][1];\n\n // First, shift the edit as far left as possible.\n var commonOffset = this.diff_commonSuffix(equality1, edit);\n if (commonOffset) {\n var commonString = edit.substring(edit.length - commonOffset);\n equality1 = equality1.substring(0, equality1.length - commonOffset);\n edit = commonString + edit.substring(0, edit.length - commonOffset);\n equality2 = commonString + equality2;\n }\n\n // Second, step character by character right, looking for the best fit.\n var bestEquality1 = equality1;\n var bestEdit = edit;\n var bestEquality2 = equality2;\n var bestScore = diff_cleanupSemanticScore_(equality1, edit) +\n diff_cleanupSemanticScore_(edit, equality2);\n while (edit.charAt(0) === equality2.charAt(0)) {\n equality1 += edit.charAt(0);\n edit = edit.substring(1) + equality2.charAt(0);\n equality2 = equality2.substring(1);\n var score = diff_cleanupSemanticScore_(equality1, edit) +\n diff_cleanupSemanticScore_(edit, equality2);\n // The >= encourages trailing rather than leading whitespace on edits.\n if (score >= bestScore) {\n bestScore = score;\n bestEquality1 = equality1;\n bestEdit = edit;\n bestEquality2 = equality2;\n }\n }\n\n if (diffs[pointer - 1][1] != bestEquality1) {\n // We have an improvement, save it back to the diff.\n if (bestEquality1) {\n diffs[pointer - 1][1] = bestEquality1;\n } else {\n diffs.splice(pointer - 1, 1);\n pointer--;\n }\n diffs[pointer][1] = bestEdit;\n if (bestEquality2) {\n diffs[pointer + 1][1] = bestEquality2;\n } else {\n diffs.splice(pointer + 1, 1);\n pointer--;\n }\n }\n }\n pointer++;\n }\n};\n\n// Define some regex patterns for matching boundaries.\ndiff_match_patch.nonAlphaNumericRegex_ = /[^a-zA-Z0-9]/;\ndiff_match_patch.whitespaceRegex_ = /\\s/;\ndiff_match_patch.linebreakRegex_ = /[\\r\\n]/;\ndiff_match_patch.blanklineEndRegex_ = /\\n\\r?\\n$/;\ndiff_match_patch.blanklineStartRegex_ = /^\\r?\\n\\r?\\n/;\n\n/**\n * Reduce the number of edits by eliminating operationally trivial equalities.\n * @param {!Array.} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupEfficiency = function(diffs) {\n var changes = false;\n var equalities = []; // Stack of indices where equalities are found.\n var equalitiesLength = 0; // Keeping our own length var is faster in JS.\n /** @type {?string} */\n var lastEquality = null;\n // Always equal to diffs[equalities[equalitiesLength - 1]][1]\n var pointer = 0; // Index of current position.\n // Is there an insertion operation before the last equality.\n var pre_ins = false;\n // Is there a deletion operation before the last equality.\n var pre_del = false;\n // Is there an insertion operation after the last equality.\n var post_ins = false;\n // Is there a deletion operation after the last equality.\n var post_del = false;\n while (pointer < diffs.length) {\n if (diffs[pointer][0] == DIFF_EQUAL) { // Equality found.\n if (diffs[pointer][1].length < this.Diff_EditCost &&\n (post_ins || post_del)) {\n // Candidate found.\n equalities[equalitiesLength++] = pointer;\n pre_ins = post_ins;\n pre_del = post_del;\n lastEquality = diffs[pointer][1];\n } else {\n // Not a candidate, and can never become one.\n equalitiesLength = 0;\n lastEquality = null;\n }\n post_ins = post_del = false;\n } else { // An insertion or deletion.\n if (diffs[pointer][0] == DIFF_DELETE) {\n post_del = true;\n } else {\n post_ins = true;\n }\n /*\n * Five types to be split:\n * ABXYCD\n * AXCD\n * ABXC\n * AXCD\n * ABXC\n */\n if (lastEquality && ((pre_ins && pre_del && post_ins && post_del) ||\n ((lastEquality.length < this.Diff_EditCost / 2) &&\n (pre_ins + pre_del + post_ins + post_del) == 3))) {\n // Duplicate record.\n diffs.splice(equalities[equalitiesLength - 1], 0,\n new diff_match_patch.Diff(DIFF_DELETE, lastEquality));\n // Change second copy to insert.\n diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;\n equalitiesLength--; // Throw away the equality we just deleted;\n lastEquality = null;\n if (pre_ins && pre_del) {\n // No changes made which could affect previous entry, keep going.\n post_ins = post_del = true;\n equalitiesLength = 0;\n } else {\n equalitiesLength--; // Throw away the previous equality.\n pointer = equalitiesLength > 0 ?\n equalities[equalitiesLength - 1] : -1;\n post_ins = post_del = false;\n }\n changes = true;\n }\n }\n pointer++;\n }\n\n if (changes) {\n this.diff_cleanupMerge(diffs);\n }\n};\n\n\n/**\n * Reorder and merge like edit sections. Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {!Array.} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupMerge = function(diffs) {\n // Add a dummy entry at the end.\n diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, ''));\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n var commonlength;\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete + count_insert > 1) {\n if (count_delete !== 0 && count_insert !== 0) {\n // Factor out any common prefixies.\n commonlength = this.diff_commonPrefix(text_insert, text_delete);\n if (commonlength !== 0) {\n if ((pointer - count_delete - count_insert) > 0 &&\n diffs[pointer - count_delete - count_insert - 1][0] ==\n DIFF_EQUAL) {\n diffs[pointer - count_delete - count_insert - 1][1] +=\n text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, new diff_match_patch.Diff(DIFF_EQUAL,\n text_insert.substring(0, commonlength)));\n pointer++;\n }\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n }\n // Factor out any common suffixies.\n commonlength = this.diff_commonSuffix(text_insert, text_delete);\n if (commonlength !== 0) {\n diffs[pointer][1] = text_insert.substring(text_insert.length -\n commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length -\n commonlength);\n text_delete = text_delete.substring(0, text_delete.length -\n commonlength);\n }\n }\n // Delete the offending records and add the merged ones.\n pointer -= count_delete + count_insert;\n diffs.splice(pointer, count_delete + count_insert);\n if (text_delete.length) {\n diffs.splice(pointer, 0,\n new diff_match_patch.Diff(DIFF_DELETE, text_delete));\n pointer++;\n }\n if (text_insert.length) {\n diffs.splice(pointer, 0,\n new diff_match_patch.Diff(DIFF_INSERT, text_insert));\n pointer++;\n }\n pointer++;\n } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n // Merge this equality with the previous one.\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\n }\n\n // Second pass: look for single edits surrounded on both sides by equalities\n // which can be shifted sideways to eliminate an equality.\n // e.g: ABAC -> ABAC\n var changes = false;\n pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n if (diffs[pointer][1].substring(diffs[pointer][1].length -\n diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n // Shift the edit over the previous equality.\n diffs[pointer][1] = diffs[pointer - 1][1] +\n diffs[pointer][1].substring(0, diffs[pointer][1].length -\n diffs[pointer - 1][1].length);\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n changes = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n diffs[pointer + 1][1]) {\n // Shift the edit over the next equality.\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] =\n diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n pointer++;\n }\n // If shifts were made, the diff needs reordering and another shift sweep.\n if (changes) {\n this.diff_cleanupMerge(diffs);\n }\n};\n\n\n/**\n * loc is a location in text1, compute and return the equivalent location in\n * text2.\n * e.g. 'The cat' vs 'The big cat', 1->1, 5->8\n * @param {!Array.} diffs Array of diff tuples.\n * @param {number} loc Location within text1.\n * @return {number} Location within text2.\n */\ndiff_match_patch.prototype.diff_xIndex = function(diffs, loc) {\n var chars1 = 0;\n var chars2 = 0;\n var last_chars1 = 0;\n var last_chars2 = 0;\n var x;\n for (x = 0; x < diffs.length; x++) {\n if (diffs[x][0] !== DIFF_INSERT) { // Equality or deletion.\n chars1 += diffs[x][1].length;\n }\n if (diffs[x][0] !== DIFF_DELETE) { // Equality or insertion.\n chars2 += diffs[x][1].length;\n }\n if (chars1 > loc) { // Overshot the location.\n break;\n }\n last_chars1 = chars1;\n last_chars2 = chars2;\n }\n // Was the location was deleted?\n if (diffs.length != x && diffs[x][0] === DIFF_DELETE) {\n return last_chars2;\n }\n // Add the remaining character length.\n return last_chars2 + (loc - last_chars1);\n};\n\n\n/**\n * Convert a diff array into a pretty HTML report.\n * @param {!Array.} diffs Array of diff tuples.\n * @return {string} HTML representation.\n */\ndiff_match_patch.prototype.diff_prettyHtml = function(diffs) {\n var html = [];\n var pattern_amp = /&/g;\n var pattern_lt = //g;\n var pattern_para = /\\n/g;\n for (var x = 0; x < diffs.length; x++) {\n var op = diffs[x][0]; // Operation (insert, delete, equal)\n var data = diffs[x][1]; // Text of change.\n var text = data.replace(pattern_amp, '&').replace(pattern_lt, '<')\n .replace(pattern_gt, '>').replace(pattern_para, '¶
');\n switch (op) {\n case DIFF_INSERT:\n html[x] = '' + text + '';\n break;\n case DIFF_DELETE:\n html[x] = '' + text + '';\n break;\n case DIFF_EQUAL:\n html[x] = '' + text + '';\n break;\n }\n }\n return html.join('');\n};\n\n\n/**\n * Compute and return the source text (all equalities and deletions).\n * @param {!Array.} diffs Array of diff tuples.\n * @return {string} Source text.\n */\ndiff_match_patch.prototype.diff_text1 = function(diffs) {\n var text = [];\n for (var x = 0; x < diffs.length; x++) {\n if (diffs[x][0] !== DIFF_INSERT) {\n text[x] = diffs[x][1];\n }\n }\n return text.join('');\n};\n\n\n/**\n * Compute and return the destination text (all equalities and insertions).\n * @param {!Array.} diffs Array of diff tuples.\n * @return {string} Destination text.\n */\ndiff_match_patch.prototype.diff_text2 = function(diffs) {\n var text = [];\n for (var x = 0; x < diffs.length; x++) {\n if (diffs[x][0] !== DIFF_DELETE) {\n text[x] = diffs[x][1];\n }\n }\n return text.join('');\n};\n\n\n/**\n * Compute the Levenshtein distance; the number of inserted, deleted or\n * substituted characters.\n * @param {!Array.} diffs Array of diff tuples.\n * @return {number} Number of changes.\n */\ndiff_match_patch.prototype.diff_levenshtein = function(diffs) {\n var levenshtein = 0;\n var insertions = 0;\n var deletions = 0;\n for (var x = 0; x < diffs.length; x++) {\n var op = diffs[x][0];\n var data = diffs[x][1];\n switch (op) {\n case DIFF_INSERT:\n insertions += data.length;\n break;\n case DIFF_DELETE:\n deletions += data.length;\n break;\n case DIFF_EQUAL:\n // A deletion and an insertion is one substitution.\n levenshtein += Math.max(insertions, deletions);\n insertions = 0;\n deletions = 0;\n break;\n }\n }\n levenshtein += Math.max(insertions, deletions);\n return levenshtein;\n};\n\n\n/**\n * Crush the diff into an encoded string which describes the operations\n * required to transform text1 into text2.\n * E.g. =3\\t-2\\t+ing -> Keep 3 chars, delete 2 chars, insert 'ing'.\n * Operations are tab-separated. Inserted text is escaped using %xx notation.\n * @param {!Array.} diffs Array of diff tuples.\n * @return {string} Delta text.\n */\ndiff_match_patch.prototype.diff_toDelta = function(diffs) {\n var text = [];\n for (var x = 0; x < diffs.length; x++) {\n switch (diffs[x][0]) {\n case DIFF_INSERT:\n text[x] = '+' + encodeURI(diffs[x][1]);\n break;\n case DIFF_DELETE:\n text[x] = '-' + diffs[x][1].length;\n break;\n case DIFF_EQUAL:\n text[x] = '=' + diffs[x][1].length;\n break;\n }\n }\n return text.join('\\t').replace(/%20/g, ' ');\n};\n\n\n/**\n * Given the original text1, and an encoded string which describes the\n * operations required to transform text1 into text2, compute the full diff.\n * @param {string} text1 Source string for the diff.\n * @param {string} delta Delta text.\n * @return {!Array.} Array of diff tuples.\n * @throws {!Error} If invalid input.\n */\ndiff_match_patch.prototype.diff_fromDelta = function(text1, delta) {\n var diffs = [];\n var diffsLength = 0; // Keeping our own length var is faster in JS.\n var pointer = 0; // Cursor in text1\n var tokens = delta.split(/\\t/g);\n for (var x = 0; x < tokens.length; x++) {\n // Each token begins with a one character parameter which specifies the\n // operation of this token (delete, insert, equality).\n var param = tokens[x].substring(1);\n switch (tokens[x].charAt(0)) {\n case '+':\n try {\n diffs[diffsLength++] =\n new diff_match_patch.Diff(DIFF_INSERT, decodeURI(param));\n } catch (ex) {\n // Malformed URI sequence.\n throw new Error('Illegal escape in diff_fromDelta: ' + param);\n }\n break;\n case '-':\n // Fall through.\n case '=':\n var n = parseInt(param, 10);\n if (isNaN(n) || n < 0) {\n throw new Error('Invalid number in diff_fromDelta: ' + param);\n }\n var text = text1.substring(pointer, pointer += n);\n if (tokens[x].charAt(0) == '=') {\n diffs[diffsLength++] = new diff_match_patch.Diff(DIFF_EQUAL, text);\n } else {\n diffs[diffsLength++] = new diff_match_patch.Diff(DIFF_DELETE, text);\n }\n break;\n default:\n // Blank tokens are ok (from a trailing \\t).\n // Anything else is an error.\n if (tokens[x]) {\n throw new Error('Invalid diff operation in diff_fromDelta: ' +\n tokens[x]);\n }\n }\n }\n if (pointer != text1.length) {\n throw new Error('Delta length (' + pointer +\n ') does not equal source text length (' + text1.length + ').');\n }\n return diffs;\n};\n\n\n// MATCH FUNCTIONS\n\n\n/**\n * Locate the best instance of 'pattern' in 'text' near 'loc'.\n * @param {string} text The text to search.\n * @param {string} pattern The pattern to search for.\n * @param {number} loc The location to search around.\n * @return {number} Best match index or -1.\n */\ndiff_match_patch.prototype.match_main = function(text, pattern, loc) {\n // Check for null inputs.\n if (text == null || pattern == null || loc == null) {\n throw new Error('Null input. (match_main)');\n }\n\n loc = Math.max(0, Math.min(loc, text.length));\n if (text == pattern) {\n // Shortcut (potentially not guaranteed by the algorithm)\n return 0;\n } else if (!text.length) {\n // Nothing to match.\n return -1;\n } else if (text.substring(loc, loc + pattern.length) == pattern) {\n // Perfect match at the perfect spot! (Includes case of null pattern)\n return loc;\n } else {\n // Do a fuzzy compare.\n return this.match_bitap_(text, pattern, loc);\n }\n};\n\n\n/**\n * Locate the best instance of 'pattern' in 'text' near 'loc' using the\n * Bitap algorithm.\n * @param {string} text The text to search.\n * @param {string} pattern The pattern to search for.\n * @param {number} loc The location to search around.\n * @return {number} Best match index or -1.\n * @private\n */\ndiff_match_patch.prototype.match_bitap_ = function(text, pattern, loc) {\n if (pattern.length > this.Match_MaxBits) {\n throw new Error('Pattern too long for this browser.');\n }\n\n // Initialise the alphabet.\n var s = this.match_alphabet_(pattern);\n\n var dmp = this; // 'this' becomes 'window' in a closure.\n\n /**\n * Compute and return the score for a match with e errors and x location.\n * Accesses loc and pattern through being a closure.\n * @param {number} e Number of errors in match.\n * @param {number} x Location of match.\n * @return {number} Overall score for match (0.0 = good, 1.0 = bad).\n * @private\n */\n function match_bitapScore_(e, x) {\n var accuracy = e / pattern.length;\n var proximity = Math.abs(loc - x);\n if (!dmp.Match_Distance) {\n // Dodge divide by zero error.\n return proximity ? 1.0 : accuracy;\n }\n return accuracy + (proximity / dmp.Match_Distance);\n }\n\n // Highest score beyond which we give up.\n var score_threshold = this.Match_Threshold;\n // Is there a nearby exact match? (speedup)\n var best_loc = text.indexOf(pattern, loc);\n if (best_loc != -1) {\n score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold);\n // What about in the other direction? (speedup)\n best_loc = text.lastIndexOf(pattern, loc + pattern.length);\n if (best_loc != -1) {\n score_threshold =\n Math.min(match_bitapScore_(0, best_loc), score_threshold);\n }\n }\n\n // Initialise the bit arrays.\n var matchmask = 1 << (pattern.length - 1);\n best_loc = -1;\n\n var bin_min, bin_mid;\n var bin_max = pattern.length + text.length;\n var last_rd;\n for (var d = 0; d < pattern.length; d++) {\n // Scan for the best match; each iteration allows for one more error.\n // Run a binary search to determine how far from 'loc' we can stray at this\n // error level.\n bin_min = 0;\n bin_mid = bin_max;\n while (bin_min < bin_mid) {\n if (match_bitapScore_(d, loc + bin_mid) <= score_threshold) {\n bin_min = bin_mid;\n } else {\n bin_max = bin_mid;\n }\n bin_mid = Math.floor((bin_max - bin_min) / 2 + bin_min);\n }\n // Use the result from this iteration as the maximum for the next.\n bin_max = bin_mid;\n var start = Math.max(1, loc - bin_mid + 1);\n var finish = Math.min(loc + bin_mid, text.length) + pattern.length;\n\n var rd = Array(finish + 2);\n rd[finish + 1] = (1 << d) - 1;\n for (var j = finish; j >= start; j--) {\n // The alphabet (s) is a sparse hash, so the following line generates\n // warnings.\n var charMatch = s[text.charAt(j - 1)];\n if (d === 0) { // First pass: exact match.\n rd[j] = ((rd[j + 1] << 1) | 1) & charMatch;\n } else { // Subsequent passes: fuzzy match.\n rd[j] = (((rd[j + 1] << 1) | 1) & charMatch) |\n (((last_rd[j + 1] | last_rd[j]) << 1) | 1) |\n last_rd[j + 1];\n }\n if (rd[j] & matchmask) {\n var score = match_bitapScore_(d, j - 1);\n // This match will almost certainly be better than any existing match.\n // But check anyway.\n if (score <= score_threshold) {\n // Told you so.\n score_threshold = score;\n best_loc = j - 1;\n if (best_loc > loc) {\n // When passing loc, don't exceed our current distance from loc.\n start = Math.max(1, 2 * loc - best_loc);\n } else {\n // Already passed loc, downhill from here on in.\n break;\n }\n }\n }\n }\n // No hope for a (better) match at greater error levels.\n if (match_bitapScore_(d + 1, loc) > score_threshold) {\n break;\n }\n last_rd = rd;\n }\n return best_loc;\n};\n\n\n/**\n * Initialise the alphabet for the Bitap algorithm.\n * @param {string} pattern The text to encode.\n * @return {!Object} Hash of character locations.\n * @private\n */\ndiff_match_patch.prototype.match_alphabet_ = function(pattern) {\n var s = {};\n for (var i = 0; i < pattern.length; i++) {\n s[pattern.charAt(i)] = 0;\n }\n for (var i = 0; i < pattern.length; i++) {\n s[pattern.charAt(i)] |= 1 << (pattern.length - i - 1);\n }\n return s;\n};\n\n\n// PATCH FUNCTIONS\n\n\n/**\n * Increase the context until it is unique,\n * but don't let the pattern expand beyond Match_MaxBits.\n * @param {!diff_match_patch.patch_obj} patch The patch to grow.\n * @param {string} text Source text.\n * @private\n */\ndiff_match_patch.prototype.patch_addContext_ = function(patch, text) {\n if (text.length == 0) {\n return;\n }\n if (patch.start2 === null) {\n throw Error('patch not initialized');\n }\n var pattern = text.substring(patch.start2, patch.start2 + patch.length1);\n var padding = 0;\n\n // Look for the first and last matches of pattern in text. If two different\n // matches are found, increase the pattern length.\n while (text.indexOf(pattern) != text.lastIndexOf(pattern) &&\n pattern.length < this.Match_MaxBits - this.Patch_Margin -\n this.Patch_Margin) {\n padding += this.Patch_Margin;\n pattern = text.substring(patch.start2 - padding,\n patch.start2 + patch.length1 + padding);\n }\n // Add one chunk for good luck.\n padding += this.Patch_Margin;\n\n // Add the prefix.\n var prefix = text.substring(patch.start2 - padding, patch.start2);\n if (prefix) {\n patch.diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, prefix));\n }\n // Add the suffix.\n var suffix = text.substring(patch.start2 + patch.length1,\n patch.start2 + patch.length1 + padding);\n if (suffix) {\n patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, suffix));\n }\n\n // Roll back the start points.\n patch.start1 -= prefix.length;\n patch.start2 -= prefix.length;\n // Extend the lengths.\n patch.length1 += prefix.length + suffix.length;\n patch.length2 += prefix.length + suffix.length;\n};\n\n\n/**\n * Compute a list of patches to turn text1 into text2.\n * Use diffs if provided, otherwise compute it ourselves.\n * There are four ways to call this function, depending on what data is\n * available to the caller:\n * Method 1:\n * a = text1, b = text2\n * Method 2:\n * a = diffs\n * Method 3 (optimal):\n * a = text1, b = diffs\n * Method 4 (deprecated, use method 3):\n * a = text1, b = text2, c = diffs\n *\n * @param {string|!Array.} a text1 (methods 1,3,4) or\n * Array of diff tuples for text1 to text2 (method 2).\n * @param {string|!Array.=} opt_b text2 (methods 1,4) or\n * Array of diff tuples for text1 to text2 (method 3) or undefined (method 2).\n * @param {string|!Array.=} opt_c Array of diff tuples\n * for text1 to text2 (method 4) or undefined (methods 1,2,3).\n * @return {!Array.} Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_make = function(a, opt_b, opt_c) {\n var text1, diffs;\n if (typeof a == 'string' && typeof opt_b == 'string' &&\n typeof opt_c == 'undefined') {\n // Method 1: text1, text2\n // Compute diffs from text1 and text2.\n text1 = /** @type {string} */(a);\n diffs = this.diff_main(text1, /** @type {string} */(opt_b), true);\n if (diffs.length > 2) {\n this.diff_cleanupSemantic(diffs);\n this.diff_cleanupEfficiency(diffs);\n }\n } else if (a && typeof a == 'object' && typeof opt_b == 'undefined' &&\n typeof opt_c == 'undefined') {\n // Method 2: diffs\n // Compute text1 from diffs.\n diffs = /** @type {!Array.} */(a);\n text1 = this.diff_text1(diffs);\n } else if (typeof a == 'string' && opt_b && typeof opt_b == 'object' &&\n typeof opt_c == 'undefined') {\n // Method 3: text1, diffs\n text1 = /** @type {string} */(a);\n diffs = /** @type {!Array.} */(opt_b);\n } else if (typeof a == 'string' && typeof opt_b == 'string' &&\n opt_c && typeof opt_c == 'object') {\n // Method 4: text1, text2, diffs\n // text2 is not used.\n text1 = /** @type {string} */(a);\n diffs = /** @type {!Array.} */(opt_c);\n } else {\n throw new Error('Unknown call format to patch_make.');\n }\n\n if (diffs.length === 0) {\n return []; // Get rid of the null case.\n }\n var patches = [];\n var patch = new diff_match_patch.patch_obj();\n var patchDiffLength = 0; // Keeping our own length var is faster in JS.\n var char_count1 = 0; // Number of characters into the text1 string.\n var char_count2 = 0; // Number of characters into the text2 string.\n // Start with text1 (prepatch_text) and apply the diffs until we arrive at\n // text2 (postpatch_text). We recreate the patches one by one to determine\n // context info.\n var prepatch_text = text1;\n var postpatch_text = text1;\n for (var x = 0; x < diffs.length; x++) {\n var diff_type = diffs[x][0];\n var diff_text = diffs[x][1];\n\n if (!patchDiffLength && diff_type !== DIFF_EQUAL) {\n // A new patch starts here.\n patch.start1 = char_count1;\n patch.start2 = char_count2;\n }\n\n switch (diff_type) {\n case DIFF_INSERT:\n patch.diffs[patchDiffLength++] = diffs[x];\n patch.length2 += diff_text.length;\n postpatch_text = postpatch_text.substring(0, char_count2) + diff_text +\n postpatch_text.substring(char_count2);\n break;\n case DIFF_DELETE:\n patch.length1 += diff_text.length;\n patch.diffs[patchDiffLength++] = diffs[x];\n postpatch_text = postpatch_text.substring(0, char_count2) +\n postpatch_text.substring(char_count2 +\n diff_text.length);\n break;\n case DIFF_EQUAL:\n if (diff_text.length <= 2 * this.Patch_Margin &&\n patchDiffLength && diffs.length != x + 1) {\n // Small equality inside a patch.\n patch.diffs[patchDiffLength++] = diffs[x];\n patch.length1 += diff_text.length;\n patch.length2 += diff_text.length;\n } else if (diff_text.length >= 2 * this.Patch_Margin) {\n // Time for a new patch.\n if (patchDiffLength) {\n this.patch_addContext_(patch, prepatch_text);\n patches.push(patch);\n patch = new diff_match_patch.patch_obj();\n patchDiffLength = 0;\n // Unlike Unidiff, our patch lists have a rolling context.\n // https://github.com/google/diff-match-patch/wiki/Unidiff\n // Update prepatch text & pos to reflect the application of the\n // just completed patch.\n prepatch_text = postpatch_text;\n char_count1 = char_count2;\n }\n }\n break;\n }\n\n // Update the current character count.\n if (diff_type !== DIFF_INSERT) {\n char_count1 += diff_text.length;\n }\n if (diff_type !== DIFF_DELETE) {\n char_count2 += diff_text.length;\n }\n }\n // Pick up the leftover patch if not empty.\n if (patchDiffLength) {\n this.patch_addContext_(patch, prepatch_text);\n patches.push(patch);\n }\n\n return patches;\n};\n\n\n/**\n * Given an array of patches, return another array that is identical.\n * @param {!Array.} patches Array of Patch objects.\n * @return {!Array.} Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_deepCopy = function(patches) {\n // Making deep copies is hard in JavaScript.\n var patchesCopy = [];\n for (var x = 0; x < patches.length; x++) {\n var patch = patches[x];\n var patchCopy = new diff_match_patch.patch_obj();\n patchCopy.diffs = [];\n for (var y = 0; y < patch.diffs.length; y++) {\n patchCopy.diffs[y] =\n new diff_match_patch.Diff(patch.diffs[y][0], patch.diffs[y][1]);\n }\n patchCopy.start1 = patch.start1;\n patchCopy.start2 = patch.start2;\n patchCopy.length1 = patch.length1;\n patchCopy.length2 = patch.length2;\n patchesCopy[x] = patchCopy;\n }\n return patchesCopy;\n};\n\n\n/**\n * Merge a set of patches onto the text. Return a patched text, as well\n * as a list of true/false values indicating which patches were applied.\n * @param {!Array.} patches Array of Patch objects.\n * @param {string} text Old text.\n * @return {!Array.>} Two element Array, containing the\n * new text and an array of boolean values.\n */\ndiff_match_patch.prototype.patch_apply = function(patches, text) {\n if (patches.length == 0) {\n return [text, []];\n }\n\n // Deep copy the patches so that no changes are made to originals.\n patches = this.patch_deepCopy(patches);\n\n var nullPadding = this.patch_addPadding(patches);\n text = nullPadding + text + nullPadding;\n\n this.patch_splitMax(patches);\n // delta keeps track of the offset between the expected and actual location\n // of the previous patch. If there are patches expected at positions 10 and\n // 20, but the first patch was found at 12, delta is 2 and the second patch\n // has an effective expected position of 22.\n var delta = 0;\n var results = [];\n for (var x = 0; x < patches.length; x++) {\n var expected_loc = patches[x].start2 + delta;\n var text1 = this.diff_text1(patches[x].diffs);\n var start_loc;\n var end_loc = -1;\n if (text1.length > this.Match_MaxBits) {\n // patch_splitMax will only provide an oversized pattern in the case of\n // a monster delete.\n start_loc = this.match_main(text, text1.substring(0, this.Match_MaxBits),\n expected_loc);\n if (start_loc != -1) {\n end_loc = this.match_main(text,\n text1.substring(text1.length - this.Match_MaxBits),\n expected_loc + text1.length - this.Match_MaxBits);\n if (end_loc == -1 || start_loc >= end_loc) {\n // Can't find valid trailing context. Drop this patch.\n start_loc = -1;\n }\n }\n } else {\n start_loc = this.match_main(text, text1, expected_loc);\n }\n if (start_loc == -1) {\n // No match found. :(\n results[x] = false;\n // Subtract the delta for this failed patch from subsequent patches.\n delta -= patches[x].length2 - patches[x].length1;\n } else {\n // Found a match. :)\n results[x] = true;\n delta = start_loc - expected_loc;\n var text2;\n if (end_loc == -1) {\n text2 = text.substring(start_loc, start_loc + text1.length);\n } else {\n text2 = text.substring(start_loc, end_loc + this.Match_MaxBits);\n }\n if (text1 == text2) {\n // Perfect match, just shove the replacement text in.\n text = text.substring(0, start_loc) +\n this.diff_text2(patches[x].diffs) +\n text.substring(start_loc + text1.length);\n } else {\n // Imperfect match. Run a diff to get a framework of equivalent\n // indices.\n var diffs = this.diff_main(text1, text2, false);\n if (text1.length > this.Match_MaxBits &&\n this.diff_levenshtein(diffs) / text1.length >\n this.Patch_DeleteThreshold) {\n // The end points match, but the content is unacceptably bad.\n results[x] = false;\n } else {\n this.diff_cleanupSemanticLossless(diffs);\n var index1 = 0;\n var index2;\n for (var y = 0; y < patches[x].diffs.length; y++) {\n var mod = patches[x].diffs[y];\n if (mod[0] !== DIFF_EQUAL) {\n index2 = this.diff_xIndex(diffs, index1);\n }\n if (mod[0] === DIFF_INSERT) { // Insertion\n text = text.substring(0, start_loc + index2) + mod[1] +\n text.substring(start_loc + index2);\n } else if (mod[0] === DIFF_DELETE) { // Deletion\n text = text.substring(0, start_loc + index2) +\n text.substring(start_loc + this.diff_xIndex(diffs,\n index1 + mod[1].length));\n }\n if (mod[0] !== DIFF_DELETE) {\n index1 += mod[1].length;\n }\n }\n }\n }\n }\n }\n // Strip the padding off.\n text = text.substring(nullPadding.length, text.length - nullPadding.length);\n return [text, results];\n};\n\n\n/**\n * Add some padding on text start and end so that edges can match something.\n * Intended to be called only from within patch_apply.\n * @param {!Array.} patches Array of Patch objects.\n * @return {string} The padding string added to each side.\n */\ndiff_match_patch.prototype.patch_addPadding = function(patches) {\n var paddingLength = this.Patch_Margin;\n var nullPadding = '';\n for (var x = 1; x <= paddingLength; x++) {\n nullPadding += String.fromCharCode(x);\n }\n\n // Bump all the patches forward.\n for (var x = 0; x < patches.length; x++) {\n patches[x].start1 += paddingLength;\n patches[x].start2 += paddingLength;\n }\n\n // Add some padding on start of first diff.\n var patch = patches[0];\n var diffs = patch.diffs;\n if (diffs.length == 0 || diffs[0][0] != DIFF_EQUAL) {\n // Add nullPadding equality.\n diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, nullPadding));\n patch.start1 -= paddingLength; // Should be 0.\n patch.start2 -= paddingLength; // Should be 0.\n patch.length1 += paddingLength;\n patch.length2 += paddingLength;\n } else if (paddingLength > diffs[0][1].length) {\n // Grow first equality.\n var extraLength = paddingLength - diffs[0][1].length;\n diffs[0][1] = nullPadding.substring(diffs[0][1].length) + diffs[0][1];\n patch.start1 -= extraLength;\n patch.start2 -= extraLength;\n patch.length1 += extraLength;\n patch.length2 += extraLength;\n }\n\n // Add some padding on end of last diff.\n patch = patches[patches.length - 1];\n diffs = patch.diffs;\n if (diffs.length == 0 || diffs[diffs.length - 1][0] != DIFF_EQUAL) {\n // Add nullPadding equality.\n diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, nullPadding));\n patch.length1 += paddingLength;\n patch.length2 += paddingLength;\n } else if (paddingLength > diffs[diffs.length - 1][1].length) {\n // Grow last equality.\n var extraLength = paddingLength - diffs[diffs.length - 1][1].length;\n diffs[diffs.length - 1][1] += nullPadding.substring(0, extraLength);\n patch.length1 += extraLength;\n patch.length2 += extraLength;\n }\n\n return nullPadding;\n};\n\n\n/**\n * Look through the patches and break up any which are longer than the maximum\n * limit of the match algorithm.\n * Intended to be called only from within patch_apply.\n * @param {!Array.} patches Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_splitMax = function(patches) {\n var patch_size = this.Match_MaxBits;\n for (var x = 0; x < patches.length; x++) {\n if (patches[x].length1 <= patch_size) {\n continue;\n }\n var bigpatch = patches[x];\n // Remove the big old patch.\n patches.splice(x--, 1);\n var start1 = bigpatch.start1;\n var start2 = bigpatch.start2;\n var precontext = '';\n while (bigpatch.diffs.length !== 0) {\n // Create one of several smaller patches.\n var patch = new diff_match_patch.patch_obj();\n var empty = true;\n patch.start1 = start1 - precontext.length;\n patch.start2 = start2 - precontext.length;\n if (precontext !== '') {\n patch.length1 = patch.length2 = precontext.length;\n patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, precontext));\n }\n while (bigpatch.diffs.length !== 0 &&\n patch.length1 < patch_size - this.Patch_Margin) {\n var diff_type = bigpatch.diffs[0][0];\n var diff_text = bigpatch.diffs[0][1];\n if (diff_type === DIFF_INSERT) {\n // Insertions are harmless.\n patch.length2 += diff_text.length;\n start2 += diff_text.length;\n patch.diffs.push(bigpatch.diffs.shift());\n empty = false;\n } else if (diff_type === DIFF_DELETE && patch.diffs.length == 1 &&\n patch.diffs[0][0] == DIFF_EQUAL &&\n diff_text.length > 2 * patch_size) {\n // This is a large deletion. Let it pass in one chunk.\n patch.length1 += diff_text.length;\n start1 += diff_text.length;\n empty = false;\n patch.diffs.push(new diff_match_patch.Diff(diff_type, diff_text));\n bigpatch.diffs.shift();\n } else {\n // Deletion or equality. Only take as much as we can stomach.\n diff_text = diff_text.substring(0,\n patch_size - patch.length1 - this.Patch_Margin);\n patch.length1 += diff_text.length;\n start1 += diff_text.length;\n if (diff_type === DIFF_EQUAL) {\n patch.length2 += diff_text.length;\n start2 += diff_text.length;\n } else {\n empty = false;\n }\n patch.diffs.push(new diff_match_patch.Diff(diff_type, diff_text));\n if (diff_text == bigpatch.diffs[0][1]) {\n bigpatch.diffs.shift();\n } else {\n bigpatch.diffs[0][1] =\n bigpatch.diffs[0][1].substring(diff_text.length);\n }\n }\n }\n // Compute the head context for the next patch.\n precontext = this.diff_text2(patch.diffs);\n precontext =\n precontext.substring(precontext.length - this.Patch_Margin);\n // Append the end context for this patch.\n var postcontext = this.diff_text1(bigpatch.diffs)\n .substring(0, this.Patch_Margin);\n if (postcontext !== '') {\n patch.length1 += postcontext.length;\n patch.length2 += postcontext.length;\n if (patch.diffs.length !== 0 &&\n patch.diffs[patch.diffs.length - 1][0] === DIFF_EQUAL) {\n patch.diffs[patch.diffs.length - 1][1] += postcontext;\n } else {\n patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, postcontext));\n }\n }\n if (!empty) {\n patches.splice(++x, 0, patch);\n }\n }\n }\n};\n\n\n/**\n * Take a list of patches and return a textual representation.\n * @param {!Array.} patches Array of Patch objects.\n * @return {string} Text representation of patches.\n */\ndiff_match_patch.prototype.patch_toText = function(patches) {\n var text = [];\n for (var x = 0; x < patches.length; x++) {\n text[x] = patches[x];\n }\n return text.join('');\n};\n\n\n/**\n * Parse a textual representation of patches and return a list of Patch objects.\n * @param {string} textline Text representation of patches.\n * @return {!Array.} Array of Patch objects.\n * @throws {!Error} If invalid input.\n */\ndiff_match_patch.prototype.patch_fromText = function(textline) {\n var patches = [];\n if (!textline) {\n return patches;\n }\n var text = textline.split('\\n');\n var textPointer = 0;\n var patchHeader = /^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;\n while (textPointer < text.length) {\n var m = text[textPointer].match(patchHeader);\n if (!m) {\n throw new Error('Invalid patch string: ' + text[textPointer]);\n }\n var patch = new diff_match_patch.patch_obj();\n patches.push(patch);\n patch.start1 = parseInt(m[1], 10);\n if (m[2] === '') {\n patch.start1--;\n patch.length1 = 1;\n } else if (m[2] == '0') {\n patch.length1 = 0;\n } else {\n patch.start1--;\n patch.length1 = parseInt(m[2], 10);\n }\n\n patch.start2 = parseInt(m[3], 10);\n if (m[4] === '') {\n patch.start2--;\n patch.length2 = 1;\n } else if (m[4] == '0') {\n patch.length2 = 0;\n } else {\n patch.start2--;\n patch.length2 = parseInt(m[4], 10);\n }\n textPointer++;\n\n while (textPointer < text.length) {\n var sign = text[textPointer].charAt(0);\n try {\n var line = decodeURI(text[textPointer].substring(1));\n } catch (ex) {\n // Malformed URI sequence.\n throw new Error('Illegal escape in patch_fromText: ' + line);\n }\n if (sign == '-') {\n // Deletion.\n patch.diffs.push(new diff_match_patch.Diff(DIFF_DELETE, line));\n } else if (sign == '+') {\n // Insertion.\n patch.diffs.push(new diff_match_patch.Diff(DIFF_INSERT, line));\n } else if (sign == ' ') {\n // Minor equality.\n patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, line));\n } else if (sign == '@') {\n // Start of next patch.\n break;\n } else if (sign === '') {\n // Blank line? Whatever.\n } else {\n // WTF?\n throw new Error('Invalid patch mode \"' + sign + '\" in: ' + line);\n }\n textPointer++;\n }\n }\n return patches;\n};\n\n\n/**\n * Class representing one patch operation.\n * @constructor\n */\ndiff_match_patch.patch_obj = function() {\n /** @type {!Array.} */\n this.diffs = [];\n /** @type {?number} */\n this.start1 = null;\n /** @type {?number} */\n this.start2 = null;\n /** @type {number} */\n this.length1 = 0;\n /** @type {number} */\n this.length2 = 0;\n};\n\n\n/**\n * Emulate GNU diff's format.\n * Header: @@ -382,8 +481,9 @@\n * Indices are printed as 1-based, not 0-based.\n * @return {string} The GNU diff string.\n */\ndiff_match_patch.patch_obj.prototype.toString = function() {\n var coords1, coords2;\n if (this.length1 === 0) {\n coords1 = this.start1 + ',0';\n } else if (this.length1 == 1) {\n coords1 = this.start1 + 1;\n } else {\n coords1 = (this.start1 + 1) + ',' + this.length1;\n }\n if (this.length2 === 0) {\n coords2 = this.start2 + ',0';\n } else if (this.length2 == 1) {\n coords2 = this.start2 + 1;\n } else {\n coords2 = (this.start2 + 1) + ',' + this.length2;\n }\n var text = ['@@ -' + coords1 + ' +' + coords2 + ' @@\\n'];\n var op;\n // Escape the body of the patch with %xx notation.\n for (var x = 0; x < this.diffs.length; x++) {\n switch (this.diffs[x][0]) {\n case DIFF_INSERT:\n op = '+';\n break;\n case DIFF_DELETE:\n op = '-';\n break;\n case DIFF_EQUAL:\n op = ' ';\n break;\n }\n text[x + 1] = op + encodeURI(this.diffs[x][1]) + '\\n';\n }\n return text.join('').replace(/%20/g, ' ');\n};\n\n\n// The following export code was added by @ForbesLindesay\nmodule.exports = diff_match_patch;\nmodule.exports['diff_match_patch'] = diff_match_patch;\nmodule.exports['DIFF_DELETE'] = DIFF_DELETE;\nmodule.exports['DIFF_INSERT'] = DIFF_INSERT;\nmodule.exports['DIFF_EQUAL'] = DIFF_EQUAL;","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","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;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\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;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function(style, options) {\n if (typeof style !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n\n if (!style) return [];\n\n options = options || {};\n\n /**\n * Positional.\n */\n var lineno = 1;\n var column = 1;\n\n /**\n * Update lineno and column based on `str`.\n *\n * @param {String} str\n */\n function updatePosition(str) {\n var lines = str.match(NEWLINE_REGEX);\n if (lines) lineno += lines.length;\n var i = str.lastIndexOf(NEWLINE);\n column = ~i ? str.length - i : column + str.length;\n }\n\n /**\n * Mark position and patch `node.position`.\n *\n * @return {Function}\n */\n function position() {\n var start = { line: lineno, column: column };\n return function(node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n\n /**\n * Store position information for a node.\n *\n * @constructor\n * @property {Object} start\n * @property {Object} end\n * @property {undefined|String} source\n */\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n\n /**\n * Non-enumerable source string.\n */\n Position.prototype.content = style;\n\n var errorsList = [];\n\n /**\n * Error `msg`.\n *\n * @param {String} msg\n * @throws {Error}\n */\n function error(msg) {\n var err = new Error(\n options.source + ':' + lineno + ':' + column + ': ' + msg\n );\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = style;\n\n if (options.silent) {\n errorsList.push(err);\n } else {\n throw err;\n }\n }\n\n /**\n * Match `re` and return captures.\n *\n * @param {RegExp} re\n * @return {undefined|Array}\n */\n function match(re) {\n var m = re.exec(style);\n if (!m) return;\n var str = m[0];\n updatePosition(str);\n style = style.slice(str.length);\n return m;\n }\n\n /**\n * Parse whitespace.\n */\n function whitespace() {\n match(WHITESPACE_REGEX);\n }\n\n /**\n * Parse comments.\n *\n * @param {Object[]} [rules]\n * @return {Object[]}\n */\n function comments(rules) {\n var c;\n rules = rules || [];\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n }\n return rules;\n }\n\n /**\n * Parse comment.\n *\n * @return {Object}\n * @throws {Error}\n */\n function comment() {\n var pos = position();\n if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n var i = 2;\n while (\n EMPTY_STRING != style.charAt(i) &&\n (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n ) {\n ++i;\n }\n i += 2;\n\n if (EMPTY_STRING === style.charAt(i - 1)) {\n return error('End of comment missing');\n }\n\n var str = style.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n style = style.slice(i);\n column += 2;\n\n return pos({\n type: TYPE_COMMENT,\n comment: str\n });\n }\n\n /**\n * Parse declaration.\n *\n * @return {Object}\n * @throws {Error}\n */\n function declaration() {\n var pos = position();\n\n // prop\n var prop = match(PROPERTY_REGEX);\n if (!prop) return;\n comment();\n\n // :\n if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n // val\n var val = match(VALUE_REGEX);\n\n var ret = pos({\n type: TYPE_DECLARATION,\n property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n value: val\n ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n : EMPTY_STRING\n });\n\n // ;\n match(SEMICOLON_REGEX);\n\n return ret;\n }\n\n /**\n * Parse declarations.\n *\n * @return {Object[]}\n */\n function declarations() {\n var decls = [];\n\n comments(decls);\n\n // declarations\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n }\n\n return decls;\n }\n\n whitespace();\n return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n","function areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (newInputs[i] !== lastInputs[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n return memoized;\n}\n\nexport default memoizeOne;\n","function omit(obj, fields) {\n // eslint-disable-next-line prefer-object-spread\n var shallowCopy = Object.assign({}, obj);\n\n for (var i = 0; i < fields.length; i += 1) {\n var key = fields[i];\n delete shallowCopy[key];\n }\n\n return shallowCopy;\n}\n\nexport default omit;","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _wrapNativeSuper from '@babel/runtime/helpers/esm/wrapNativeSuper';\nimport _taggedTemplateLiteralLoose from '@babel/runtime/helpers/esm/taggedTemplateLiteralLoose';\n\nfunction last() {\n var _ref;\n return _ref = arguments.length - 1, _ref < 0 || arguments.length <= _ref ? undefined : arguments[_ref];\n}\nfunction negation(a) {\n return -a;\n}\nfunction addition(a, b) {\n return a + b;\n}\nfunction subtraction(a, b) {\n return a - b;\n}\nfunction multiplication(a, b) {\n return a * b;\n}\nfunction division(a, b) {\n return a / b;\n}\nfunction max() {\n return Math.max.apply(Math, arguments);\n}\nfunction min() {\n return Math.min.apply(Math, arguments);\n}\nfunction comma() {\n return Array.of.apply(Array, arguments);\n}\nvar defaultSymbols = {\n symbols: {\n '*': {\n infix: {\n symbol: '*',\n f: multiplication,\n notation: 'infix',\n precedence: 4,\n rightToLeft: 0,\n argCount: 2\n },\n symbol: '*',\n regSymbol: '\\\\*'\n },\n '/': {\n infix: {\n symbol: '/',\n f: division,\n notation: 'infix',\n precedence: 4,\n rightToLeft: 0,\n argCount: 2\n },\n symbol: '/',\n regSymbol: '/'\n },\n '+': {\n infix: {\n symbol: '+',\n f: addition,\n notation: 'infix',\n precedence: 2,\n rightToLeft: 0,\n argCount: 2\n },\n prefix: {\n symbol: '+',\n f: last,\n notation: 'prefix',\n precedence: 3,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: '+',\n regSymbol: '\\\\+'\n },\n '-': {\n infix: {\n symbol: '-',\n f: subtraction,\n notation: 'infix',\n precedence: 2,\n rightToLeft: 0,\n argCount: 2\n },\n prefix: {\n symbol: '-',\n f: negation,\n notation: 'prefix',\n precedence: 3,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: '-',\n regSymbol: '-'\n },\n ',': {\n infix: {\n symbol: ',',\n f: comma,\n notation: 'infix',\n precedence: 1,\n rightToLeft: 0,\n argCount: 2\n },\n symbol: ',',\n regSymbol: ','\n },\n '(': {\n prefix: {\n symbol: '(',\n f: last,\n notation: 'prefix',\n precedence: 0,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: '(',\n regSymbol: '\\\\('\n },\n ')': {\n postfix: {\n symbol: ')',\n f: undefined,\n notation: 'postfix',\n precedence: 0,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: ')',\n regSymbol: '\\\\)'\n },\n min: {\n func: {\n symbol: 'min',\n f: min,\n notation: 'func',\n precedence: 0,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: 'min',\n regSymbol: 'min\\\\b'\n },\n max: {\n func: {\n symbol: 'max',\n f: max,\n notation: 'func',\n precedence: 0,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: 'max',\n regSymbol: 'max\\\\b'\n }\n }\n};\nvar defaultSymbolMap = defaultSymbols;\n\n// based on https://github.com/styled-components/styled-components/blob/fcf6f3804c57a14dd7984dfab7bc06ee2edca044/src/utils/error.js\n/**\n * Parse errors.md and turn it into a simple hash of code: message\n * @private\n */\nvar ERRORS = {\n \"1\": \"Passed invalid arguments to hsl, please pass multiple numbers e.g. hsl(360, 0.75, 0.4) or an object e.g. rgb({ hue: 255, saturation: 0.4, lightness: 0.75 }).\\n\\n\",\n \"2\": \"Passed invalid arguments to hsla, please pass multiple numbers e.g. hsla(360, 0.75, 0.4, 0.7) or an object e.g. rgb({ hue: 255, saturation: 0.4, lightness: 0.75, alpha: 0.7 }).\\n\\n\",\n \"3\": \"Passed an incorrect argument to a color function, please pass a string representation of a color.\\n\\n\",\n \"4\": \"Couldn't generate valid rgb string from %s, it returned %s.\\n\\n\",\n \"5\": \"Couldn't parse the color string. Please provide the color as a string in hex, rgb, rgba, hsl or hsla notation.\\n\\n\",\n \"6\": \"Passed invalid arguments to rgb, please pass multiple numbers e.g. rgb(255, 205, 100) or an object e.g. rgb({ red: 255, green: 205, blue: 100 }).\\n\\n\",\n \"7\": \"Passed invalid arguments to rgba, please pass multiple numbers e.g. rgb(255, 205, 100, 0.75) or an object e.g. rgb({ red: 255, green: 205, blue: 100, alpha: 0.75 }).\\n\\n\",\n \"8\": \"Passed invalid argument to toColorString, please pass a RgbColor, RgbaColor, HslColor or HslaColor object.\\n\\n\",\n \"9\": \"Please provide a number of steps to the modularScale helper.\\n\\n\",\n \"10\": \"Please pass a number or one of the predefined scales to the modularScale helper as the ratio.\\n\\n\",\n \"11\": \"Invalid value passed as base to modularScale, expected number or em string but got \\\"%s\\\"\\n\\n\",\n \"12\": \"Expected a string ending in \\\"px\\\" or a number passed as the first argument to %s(), got \\\"%s\\\" instead.\\n\\n\",\n \"13\": \"Expected a string ending in \\\"px\\\" or a number passed as the second argument to %s(), got \\\"%s\\\" instead.\\n\\n\",\n \"14\": \"Passed invalid pixel value (\\\"%s\\\") to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n \"15\": \"Passed invalid base value (\\\"%s\\\") to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n \"16\": \"You must provide a template to this method.\\n\\n\",\n \"17\": \"You passed an unsupported selector state to this method.\\n\\n\",\n \"18\": \"minScreen and maxScreen must be provided as stringified numbers with the same units.\\n\\n\",\n \"19\": \"fromSize and toSize must be provided as stringified numbers with the same units.\\n\\n\",\n \"20\": \"expects either an array of objects or a single object with the properties prop, fromSize, and toSize.\\n\\n\",\n \"21\": \"expects the objects in the first argument array to have the properties `prop`, `fromSize`, and `toSize`.\\n\\n\",\n \"22\": \"expects the first argument object to have the properties `prop`, `fromSize`, and `toSize`.\\n\\n\",\n \"23\": \"fontFace expects a name of a font-family.\\n\\n\",\n \"24\": \"fontFace expects either the path to the font file(s) or a name of a local copy.\\n\\n\",\n \"25\": \"fontFace expects localFonts to be an array.\\n\\n\",\n \"26\": \"fontFace expects fileFormats to be an array.\\n\\n\",\n \"27\": \"radialGradient requries at least 2 color-stops to properly render.\\n\\n\",\n \"28\": \"Please supply a filename to retinaImage() as the first argument.\\n\\n\",\n \"29\": \"Passed invalid argument to triangle, please pass correct pointingDirection e.g. 'right'.\\n\\n\",\n \"30\": \"Passed an invalid value to `height` or `width`. Please provide a pixel based unit.\\n\\n\",\n \"31\": \"The animation shorthand only takes 8 arguments. See the specification for more information: http://mdn.io/animation\\n\\n\",\n \"32\": \"To pass multiple animations please supply them in arrays, e.g. animation(['rotate', '2s'], ['move', '1s'])\\nTo pass a single animation please supply them in simple values, e.g. animation('rotate', '2s')\\n\\n\",\n \"33\": \"The animation shorthand arrays can only have 8 elements. See the specification for more information: http://mdn.io/animation\\n\\n\",\n \"34\": \"borderRadius expects a radius value as a string or number as the second argument.\\n\\n\",\n \"35\": \"borderRadius expects one of \\\"top\\\", \\\"bottom\\\", \\\"left\\\" or \\\"right\\\" as the first argument.\\n\\n\",\n \"36\": \"Property must be a string value.\\n\\n\",\n \"37\": \"Syntax Error at %s.\\n\\n\",\n \"38\": \"Formula contains a function that needs parentheses at %s.\\n\\n\",\n \"39\": \"Formula is missing closing parenthesis at %s.\\n\\n\",\n \"40\": \"Formula has too many closing parentheses at %s.\\n\\n\",\n \"41\": \"All values in a formula must have the same unit or be unitless.\\n\\n\",\n \"42\": \"Please provide a number of steps to the modularScale helper.\\n\\n\",\n \"43\": \"Please pass a number or one of the predefined scales to the modularScale helper as the ratio.\\n\\n\",\n \"44\": \"Invalid value passed as base to modularScale, expected number or em/rem string but got %s.\\n\\n\",\n \"45\": \"Passed invalid argument to hslToColorString, please pass a HslColor or HslaColor object.\\n\\n\",\n \"46\": \"Passed invalid argument to rgbToColorString, please pass a RgbColor or RgbaColor object.\\n\\n\",\n \"47\": \"minScreen and maxScreen must be provided as stringified numbers with the same units.\\n\\n\",\n \"48\": \"fromSize and toSize must be provided as stringified numbers with the same units.\\n\\n\",\n \"49\": \"Expects either an array of objects or a single object with the properties prop, fromSize, and toSize.\\n\\n\",\n \"50\": \"Expects the objects in the first argument array to have the properties prop, fromSize, and toSize.\\n\\n\",\n \"51\": \"Expects the first argument object to have the properties prop, fromSize, and toSize.\\n\\n\",\n \"52\": \"fontFace expects either the path to the font file(s) or a name of a local copy.\\n\\n\",\n \"53\": \"fontFace expects localFonts to be an array.\\n\\n\",\n \"54\": \"fontFace expects fileFormats to be an array.\\n\\n\",\n \"55\": \"fontFace expects a name of a font-family.\\n\\n\",\n \"56\": \"linearGradient requries at least 2 color-stops to properly render.\\n\\n\",\n \"57\": \"radialGradient requries at least 2 color-stops to properly render.\\n\\n\",\n \"58\": \"Please supply a filename to retinaImage() as the first argument.\\n\\n\",\n \"59\": \"Passed invalid argument to triangle, please pass correct pointingDirection e.g. 'right'.\\n\\n\",\n \"60\": \"Passed an invalid value to `height` or `width`. Please provide a pixel based unit.\\n\\n\",\n \"61\": \"Property must be a string value.\\n\\n\",\n \"62\": \"borderRadius expects a radius value as a string or number as the second argument.\\n\\n\",\n \"63\": \"borderRadius expects one of \\\"top\\\", \\\"bottom\\\", \\\"left\\\" or \\\"right\\\" as the first argument.\\n\\n\",\n \"64\": \"The animation shorthand only takes 8 arguments. See the specification for more information: http://mdn.io/animation.\\n\\n\",\n \"65\": \"To pass multiple animations please supply them in arrays, e.g. animation(['rotate', '2s'], ['move', '1s'])\\\\nTo pass a single animation please supply them in simple values, e.g. animation('rotate', '2s').\\n\\n\",\n \"66\": \"The animation shorthand arrays can only have 8 elements. See the specification for more information: http://mdn.io/animation.\\n\\n\",\n \"67\": \"You must provide a template to this method.\\n\\n\",\n \"68\": \"You passed an unsupported selector state to this method.\\n\\n\",\n \"69\": \"Expected a string ending in \\\"px\\\" or a number passed as the first argument to %s(), got %s instead.\\n\\n\",\n \"70\": \"Expected a string ending in \\\"px\\\" or a number passed as the second argument to %s(), got %s instead.\\n\\n\",\n \"71\": \"Passed invalid pixel value %s to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n \"72\": \"Passed invalid base value %s to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n \"73\": \"Please provide a valid CSS variable.\\n\\n\",\n \"74\": \"CSS variable not found and no default was provided.\\n\\n\",\n \"75\": \"important requires a valid style object, got a %s instead.\\n\\n\",\n \"76\": \"fromSize and toSize must be provided as stringified numbers with the same units as minScreen and maxScreen.\\n\\n\",\n \"77\": \"remToPx expects a value in \\\"rem\\\" but you provided it in \\\"%s\\\".\\n\\n\",\n \"78\": \"base must be set in \\\"px\\\" or \\\"%\\\" but you set it in \\\"%s\\\".\\n\"\n};\n\n/**\n * super basic version of sprintf\n * @private\n */\nfunction format() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var a = args[0];\n var b = [];\n var c;\n for (c = 1; c < args.length; c += 1) {\n b.push(args[c]);\n }\n b.forEach(function (d) {\n a = a.replace(/%[a-z]/, d);\n });\n return a;\n}\n\n/**\n * Create an error file out of errors.md for development and a simple web link to the full errors\n * in production mode.\n * @private\n */\nvar PolishedError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(PolishedError, _Error);\n function PolishedError(code) {\n var _this;\n if (process.env.NODE_ENV === 'production') {\n _this = _Error.call(this, \"An error occurred. See https://github.com/styled-components/polished/blob/main/src/internalHelpers/errors.md#\" + code + \" for more information.\") || this;\n } else {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n _this = _Error.call(this, format.apply(void 0, [ERRORS[code]].concat(args))) || this;\n }\n return _assertThisInitialized(_this);\n }\n return PolishedError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nvar unitRegExp = /((?!\\w)a|na|hc|mc|dg|me[r]?|xe|ni(?![a-zA-Z])|mm|cp|tp|xp|q(?!s)|hv|xamv|nimv|wv|sm|s(?!\\D|$)|ged|darg?|nrut)/g;\n\n// Merges additional math functionality into the defaults.\nfunction mergeSymbolMaps(additionalSymbols) {\n var symbolMap = {};\n symbolMap.symbols = additionalSymbols ? _extends({}, defaultSymbolMap.symbols, additionalSymbols.symbols) : _extends({}, defaultSymbolMap.symbols);\n return symbolMap;\n}\nfunction exec(operators, values) {\n var _ref;\n var op = operators.pop();\n values.push(op.f.apply(op, (_ref = []).concat.apply(_ref, values.splice(-op.argCount))));\n return op.precedence;\n}\nfunction calculate(expression, additionalSymbols) {\n var symbolMap = mergeSymbolMaps(additionalSymbols);\n var match;\n var operators = [symbolMap.symbols['('].prefix];\n var values = [];\n var pattern = new RegExp( // Pattern for numbers\n \"\\\\d+(?:\\\\.\\\\d+)?|\" +\n // ...and patterns for individual operators/function names\n Object.keys(symbolMap.symbols).map(function (key) {\n return symbolMap.symbols[key];\n })\n // longer symbols should be listed first\n // $FlowFixMe\n .sort(function (a, b) {\n return b.symbol.length - a.symbol.length;\n })\n // $FlowFixMe\n .map(function (val) {\n return val.regSymbol;\n }).join('|') + \"|(\\\\S)\", 'g');\n pattern.lastIndex = 0; // Reset regular expression object\n\n var afterValue = false;\n do {\n match = pattern.exec(expression);\n var _ref2 = match || [')', undefined],\n token = _ref2[0],\n bad = _ref2[1];\n var notNumber = symbolMap.symbols[token];\n var notNewValue = notNumber && !notNumber.prefix && !notNumber.func;\n var notAfterValue = !notNumber || !notNumber.postfix && !notNumber.infix;\n\n // Check for syntax errors:\n if (bad || (afterValue ? notAfterValue : notNewValue)) {\n throw new PolishedError(37, match ? match.index : expression.length, expression);\n }\n if (afterValue) {\n // We either have an infix or postfix operator (they should be mutually exclusive)\n var curr = notNumber.postfix || notNumber.infix;\n do {\n var prev = operators[operators.length - 1];\n if ((curr.precedence - prev.precedence || prev.rightToLeft) > 0) break;\n // Apply previous operator, since it has precedence over current one\n } while (exec(operators, values)); // Exit loop after executing an opening parenthesis or function\n afterValue = curr.notation === 'postfix';\n if (curr.symbol !== ')') {\n operators.push(curr);\n // Postfix always has precedence over any operator that follows after it\n if (afterValue) exec(operators, values);\n }\n } else if (notNumber) {\n // prefix operator or function\n operators.push(notNumber.prefix || notNumber.func);\n if (notNumber.func) {\n // Require an opening parenthesis\n match = pattern.exec(expression);\n if (!match || match[0] !== '(') {\n throw new PolishedError(38, match ? match.index : expression.length, expression);\n }\n }\n } else {\n // number\n values.push(+token);\n afterValue = true;\n }\n } while (match && operators.length);\n if (operators.length) {\n throw new PolishedError(39, match ? match.index : expression.length, expression);\n } else if (match) {\n throw new PolishedError(40, match ? match.index : expression.length, expression);\n } else {\n return values.pop();\n }\n}\nfunction reverseString(str) {\n return str.split('').reverse().join('');\n}\n\n/**\n * Helper for doing math with CSS Units. Accepts a formula as a string. All values in the formula must have the same unit (or be unitless). Supports complex formulas utliziing addition, subtraction, multiplication, division, square root, powers, factorial, min, max, as well as parentheses for order of operation.\n *\n *In cases where you need to do calculations with mixed units where one unit is a [relative length unit](https://developer.mozilla.org/en-US/docs/Web/CSS/length#Relative_length_units), you will want to use [CSS Calc](https://developer.mozilla.org/en-US/docs/Web/CSS/calc).\n *\n * *warning* While we've done everything possible to ensure math safely evalutes formulas expressed as strings, you should always use extreme caution when passing `math` user provided values.\n * @example\n * // Styles as object usage\n * const styles = {\n * fontSize: math('12rem + 8rem'),\n * fontSize: math('(12px + 2px) * 3'),\n * fontSize: math('3px^2 + sqrt(4)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * fontSize: ${math('12rem + 8rem')};\n * fontSize: ${math('(12px + 2px) * 3')};\n * fontSize: ${math('3px^2 + sqrt(4)')};\n * `\n *\n * // CSS as JS Output\n *\n * div: {\n * fontSize: '20rem',\n * fontSize: '42px',\n * fontSize: '11px',\n * }\n */\nfunction math(formula, additionalSymbols) {\n var reversedFormula = reverseString(formula);\n var formulaMatch = reversedFormula.match(unitRegExp);\n\n // Check that all units are the same\n if (formulaMatch && !formulaMatch.every(function (unit) {\n return unit === formulaMatch[0];\n })) {\n throw new PolishedError(41);\n }\n var cleanFormula = reverseString(reversedFormula.replace(unitRegExp, ''));\n return \"\" + calculate(cleanFormula, additionalSymbols) + (formulaMatch ? reverseString(formulaMatch[0]) : '');\n}\n\nvar cssVariableRegex = /--[\\S]*/g;\n\n/**\n * Fetches the value of a passed CSS Variable in the :root scope, or otherwise returns a defaultValue if provided.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * 'background': cssVar('--background-color'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${cssVar('--background-color')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * 'background': 'red'\n * }\n */\nfunction cssVar(cssVariable, defaultValue) {\n if (!cssVariable || !cssVariable.match(cssVariableRegex)) {\n throw new PolishedError(73);\n }\n var variableValue;\n\n /* eslint-disable */\n /* istanbul ignore next */\n if (typeof document !== 'undefined' && document.documentElement !== null) {\n variableValue = getComputedStyle(document.documentElement).getPropertyValue(cssVariable);\n }\n /* eslint-enable */\n\n if (variableValue) {\n return variableValue.trim();\n } else if (defaultValue) {\n return defaultValue;\n }\n throw new PolishedError(74);\n}\n\n// @private\nfunction capitalizeString(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nvar positionMap$1 = ['Top', 'Right', 'Bottom', 'Left'];\nfunction generateProperty(property, position) {\n if (!property) return position.toLowerCase();\n var splitProperty = property.split('-');\n if (splitProperty.length > 1) {\n splitProperty.splice(1, 0, position);\n return splitProperty.reduce(function (acc, val) {\n return \"\" + acc + capitalizeString(val);\n });\n }\n var joinedProperty = property.replace(/([a-z])([A-Z])/g, \"$1\" + position + \"$2\");\n return property === joinedProperty ? \"\" + property + position : joinedProperty;\n}\nfunction generateStyles(property, valuesWithDefaults) {\n var styles = {};\n for (var i = 0; i < valuesWithDefaults.length; i += 1) {\n if (valuesWithDefaults[i] || valuesWithDefaults[i] === 0) {\n styles[generateProperty(property, positionMap$1[i])] = valuesWithDefaults[i];\n }\n }\n return styles;\n}\n\n/**\n * Enables shorthand for direction-based properties. It accepts a property (hyphenated or camelCased) and up to four values that map to top, right, bottom, and left, respectively. You can optionally pass an empty string to get only the directional values as properties. You can also optionally pass a null argument for a directional value to ignore it.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...directionalProperty('padding', '12px', '24px', '36px', '48px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${directionalProperty('padding', '12px', '24px', '36px', '48px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'paddingTop': '12px',\n * 'paddingRight': '24px',\n * 'paddingBottom': '36px',\n * 'paddingLeft': '48px'\n * }\n */\nfunction directionalProperty(property) {\n for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n values[_key - 1] = arguments[_key];\n }\n // prettier-ignore\n var firstValue = values[0],\n _values$ = values[1],\n secondValue = _values$ === void 0 ? firstValue : _values$,\n _values$2 = values[2],\n thirdValue = _values$2 === void 0 ? firstValue : _values$2,\n _values$3 = values[3],\n fourthValue = _values$3 === void 0 ? secondValue : _values$3;\n var valuesWithDefaults = [firstValue, secondValue, thirdValue, fourthValue];\n return generateStyles(property, valuesWithDefaults);\n}\n\n/**\n * Check if a string ends with something\n * @private\n */\nfunction endsWith(string, suffix) {\n return string.substr(-suffix.length) === suffix;\n}\n\nvar cssRegex$1 = /^([+-]?(?:\\d+|\\d*\\.\\d+))([a-z]*|%)$/;\n\n/**\n * Returns a given CSS value minus its unit of measure.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * '--dimension': stripUnit('100px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * --dimension: ${stripUnit('100px')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * '--dimension': 100\n * }\n */\nfunction stripUnit(value) {\n if (typeof value !== 'string') return value;\n var matchedValue = value.match(cssRegex$1);\n return matchedValue ? parseFloat(value) : value;\n}\n\n/**\n * Factory function that creates pixel-to-x converters\n * @private\n */\nvar pxtoFactory = function pxtoFactory(to) {\n return function (pxval, base) {\n if (base === void 0) {\n base = '16px';\n }\n var newPxval = pxval;\n var newBase = base;\n if (typeof pxval === 'string') {\n if (!endsWith(pxval, 'px')) {\n throw new PolishedError(69, to, pxval);\n }\n newPxval = stripUnit(pxval);\n }\n if (typeof base === 'string') {\n if (!endsWith(base, 'px')) {\n throw new PolishedError(70, to, base);\n }\n newBase = stripUnit(base);\n }\n if (typeof newPxval === 'string') {\n throw new PolishedError(71, pxval, to);\n }\n if (typeof newBase === 'string') {\n throw new PolishedError(72, base, to);\n }\n return \"\" + newPxval / newBase + to;\n };\n};\nvar pixelsto = pxtoFactory;\n\n/**\n * Convert pixel value to ems. The default base value is 16px, but can be changed by passing a\n * second argument to the function.\n * @function\n * @param {string|number} pxval\n * @param {string|number} [base='16px']\n * @example\n * // Styles as object usage\n * const styles = {\n * 'height': em('16px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * height: ${em('16px')}\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * 'height': '1em'\n * }\n */\nvar em = pixelsto('em');\nvar em$1 = em;\n\nvar cssRegex = /^([+-]?(?:\\d+|\\d*\\.\\d+))([a-z]*|%)$/;\n\n/**\n * Returns a given CSS value and its unit as elements of an array.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * '--dimension': getValueAndUnit('100px')[0],\n * '--unit': getValueAndUnit('100px')[1],\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * --dimension: ${getValueAndUnit('100px')[0]};\n * --unit: ${getValueAndUnit('100px')[1]};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * '--dimension': 100,\n * '--unit': 'px',\n * }\n */\nfunction getValueAndUnit(value) {\n if (typeof value !== 'string') return [value, ''];\n var matchedValue = value.match(cssRegex);\n if (matchedValue) return [parseFloat(value), matchedValue[2]];\n return [value, undefined];\n}\n\n/**\n * Helper for targeting rules in a style block generated by polished modules that need !important-level specificity. Can optionally specify a rule (or rules) to target specific rules.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...important(cover())\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${important(cover())}\n * `\n *\n * // CSS as JS Output\n *\n * div: {\n * 'position': 'absolute !important',\n * 'top': '0 !important',\n * 'right: '0 !important',\n * 'bottom': '0 !important',\n * 'left: '0 !important'\n * }\n */\nfunction important(styleBlock, rules) {\n if (typeof styleBlock !== 'object' || styleBlock === null) {\n throw new PolishedError(75, typeof styleBlock);\n }\n var newStyleBlock = {};\n Object.keys(styleBlock).forEach(function (key) {\n if (typeof styleBlock[key] === 'object' && styleBlock[key] !== null) {\n newStyleBlock[key] = important(styleBlock[key], rules);\n } else if (!rules || rules && (rules === key || rules.indexOf(key) >= 0)) {\n newStyleBlock[key] = styleBlock[key] + \" !important\";\n } else {\n newStyleBlock[key] = styleBlock[key];\n }\n });\n return newStyleBlock;\n}\n\nvar ratioNames = {\n minorSecond: 1.067,\n majorSecond: 1.125,\n minorThird: 1.2,\n majorThird: 1.25,\n perfectFourth: 1.333,\n augFourth: 1.414,\n perfectFifth: 1.5,\n minorSixth: 1.6,\n goldenSection: 1.618,\n majorSixth: 1.667,\n minorSeventh: 1.778,\n majorSeventh: 1.875,\n octave: 2,\n majorTenth: 2.5,\n majorEleventh: 2.667,\n majorTwelfth: 3,\n doubleOctave: 4\n};\nfunction getRatio(ratioName) {\n return ratioNames[ratioName];\n}\n\n/**\n * Establish consistent measurements and spacial relationships throughout your projects by incrementing an em or rem value up or down a defined scale. We provide a list of commonly used scales as pre-defined variables.\n * @example\n * // Styles as object usage\n * const styles = {\n * // Increment two steps up the default scale\n * 'fontSize': modularScale(2)\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * // Increment two steps up the default scale\n * fontSize: ${modularScale(2)}\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * 'fontSize': '1.77689em'\n * }\n */\nfunction modularScale(steps, base, ratio) {\n if (base === void 0) {\n base = '1em';\n }\n if (ratio === void 0) {\n ratio = 1.333;\n }\n if (typeof steps !== 'number') {\n throw new PolishedError(42);\n }\n if (typeof ratio === 'string' && !ratioNames[ratio]) {\n throw new PolishedError(43);\n }\n var _ref = typeof base === 'string' ? getValueAndUnit(base) : [base, ''],\n realBase = _ref[0],\n unit = _ref[1];\n var realRatio = typeof ratio === 'string' ? getRatio(ratio) : ratio;\n if (typeof realBase === 'string') {\n throw new PolishedError(44, base);\n }\n return \"\" + realBase * Math.pow(realRatio, steps) + (unit || '');\n}\n\n/**\n * Convert pixel value to rems. The default base value is 16px, but can be changed by passing a\n * second argument to the function.\n * @function\n * @param {string|number} pxval\n * @param {string|number} [base='16px']\n * @example\n * // Styles as object usage\n * const styles = {\n * 'height': rem('16px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * height: ${rem('16px')}\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * 'height': '1rem'\n * }\n */\nvar rem = pixelsto('rem');\nvar rem$1 = rem;\n\nvar defaultFontSize = 16;\nfunction convertBase(base) {\n var deconstructedValue = getValueAndUnit(base);\n if (deconstructedValue[1] === 'px') {\n return parseFloat(base);\n }\n if (deconstructedValue[1] === '%') {\n return parseFloat(base) / 100 * defaultFontSize;\n }\n throw new PolishedError(78, deconstructedValue[1]);\n}\nfunction getBaseFromDoc() {\n /* eslint-disable */\n /* istanbul ignore next */\n if (typeof document !== 'undefined' && document.documentElement !== null) {\n var rootFontSize = getComputedStyle(document.documentElement).fontSize;\n return rootFontSize ? convertBase(rootFontSize) : defaultFontSize;\n }\n /* eslint-enable */\n /* istanbul ignore next */\n return defaultFontSize;\n}\n\n/**\n * Convert rem values to px. By default, the base value is pulled from the font-size property on the root element (if it is set in % or px). It defaults to 16px if not found on the root. You can also override the base value by providing your own base in % or px.\n * @example\n * // Styles as object usage\n * const styles = {\n * 'height': remToPx('1.6rem')\n * 'height': remToPx('1.6rem', '10px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * height: ${remToPx('1.6rem')}\n * height: ${remToPx('1.6rem', '10px')}\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * 'height': '25.6px',\n * 'height': '16px',\n * }\n */\nfunction remToPx(value, base) {\n var deconstructedValue = getValueAndUnit(value);\n if (deconstructedValue[1] !== 'rem' && deconstructedValue[1] !== '') {\n throw new PolishedError(77, deconstructedValue[1]);\n }\n var newBase = base ? convertBase(base) : getBaseFromDoc();\n return deconstructedValue[0] * newBase + \"px\";\n}\n\nvar functionsMap$3 = {\n back: 'cubic-bezier(0.600, -0.280, 0.735, 0.045)',\n circ: 'cubic-bezier(0.600, 0.040, 0.980, 0.335)',\n cubic: 'cubic-bezier(0.550, 0.055, 0.675, 0.190)',\n expo: 'cubic-bezier(0.950, 0.050, 0.795, 0.035)',\n quad: 'cubic-bezier(0.550, 0.085, 0.680, 0.530)',\n quart: 'cubic-bezier(0.895, 0.030, 0.685, 0.220)',\n quint: 'cubic-bezier(0.755, 0.050, 0.855, 0.060)',\n sine: 'cubic-bezier(0.470, 0.000, 0.745, 0.715)'\n};\n\n/**\n * String to represent common easing functions as demonstrated here: (github.com/jaukia/easie).\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * 'transitionTimingFunction': easeIn('quad')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * transitionTimingFunction: ${easeIn('quad')};\n * `\n *\n * // CSS as JS Output\n *\n * 'div': {\n * 'transitionTimingFunction': 'cubic-bezier(0.550, 0.085, 0.680, 0.530)',\n * }\n */\nfunction easeIn(functionName) {\n return functionsMap$3[functionName.toLowerCase().trim()];\n}\n\nvar functionsMap$2 = {\n back: 'cubic-bezier(0.680, -0.550, 0.265, 1.550)',\n circ: 'cubic-bezier(0.785, 0.135, 0.150, 0.860)',\n cubic: 'cubic-bezier(0.645, 0.045, 0.355, 1.000)',\n expo: 'cubic-bezier(1.000, 0.000, 0.000, 1.000)',\n quad: 'cubic-bezier(0.455, 0.030, 0.515, 0.955)',\n quart: 'cubic-bezier(0.770, 0.000, 0.175, 1.000)',\n quint: 'cubic-bezier(0.860, 0.000, 0.070, 1.000)',\n sine: 'cubic-bezier(0.445, 0.050, 0.550, 0.950)'\n};\n\n/**\n * String to represent common easing functions as demonstrated here: (github.com/jaukia/easie).\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * 'transitionTimingFunction': easeInOut('quad')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * transitionTimingFunction: ${easeInOut('quad')};\n * `\n *\n * // CSS as JS Output\n *\n * 'div': {\n * 'transitionTimingFunction': 'cubic-bezier(0.455, 0.030, 0.515, 0.955)',\n * }\n */\nfunction easeInOut(functionName) {\n return functionsMap$2[functionName.toLowerCase().trim()];\n}\n\nvar functionsMap$1 = {\n back: 'cubic-bezier(0.175, 0.885, 0.320, 1.275)',\n cubic: 'cubic-bezier(0.215, 0.610, 0.355, 1.000)',\n circ: 'cubic-bezier(0.075, 0.820, 0.165, 1.000)',\n expo: 'cubic-bezier(0.190, 1.000, 0.220, 1.000)',\n quad: 'cubic-bezier(0.250, 0.460, 0.450, 0.940)',\n quart: 'cubic-bezier(0.165, 0.840, 0.440, 1.000)',\n quint: 'cubic-bezier(0.230, 1.000, 0.320, 1.000)',\n sine: 'cubic-bezier(0.390, 0.575, 0.565, 1.000)'\n};\n\n/**\n * String to represent common easing functions as demonstrated here: (github.com/jaukia/easie).\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * 'transitionTimingFunction': easeOut('quad')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * transitionTimingFunction: ${easeOut('quad')};\n * `\n *\n * // CSS as JS Output\n *\n * 'div': {\n * 'transitionTimingFunction': 'cubic-bezier(0.250, 0.460, 0.450, 0.940)',\n * }\n */\nfunction easeOut(functionName) {\n return functionsMap$1[functionName.toLowerCase().trim()];\n}\n\n/**\n * Returns a CSS calc formula for linear interpolation of a property between two values. Accepts optional minScreen (defaults to '320px') and maxScreen (defaults to '1200px').\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * fontSize: between('20px', '100px', '400px', '1000px'),\n * fontSize: between('20px', '100px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * fontSize: ${between('20px', '100px', '400px', '1000px')};\n * fontSize: ${between('20px', '100px')}\n * `\n *\n * // CSS as JS Output\n *\n * h1: {\n * 'fontSize': 'calc(-33.33333333333334px + 13.333333333333334vw)',\n * 'fontSize': 'calc(-9.090909090909093px + 9.090909090909092vw)'\n * }\n */\nfunction between(fromSize, toSize, minScreen, maxScreen) {\n if (minScreen === void 0) {\n minScreen = '320px';\n }\n if (maxScreen === void 0) {\n maxScreen = '1200px';\n }\n var _getValueAndUnit = getValueAndUnit(fromSize),\n unitlessFromSize = _getValueAndUnit[0],\n fromSizeUnit = _getValueAndUnit[1];\n var _getValueAndUnit2 = getValueAndUnit(toSize),\n unitlessToSize = _getValueAndUnit2[0],\n toSizeUnit = _getValueAndUnit2[1];\n var _getValueAndUnit3 = getValueAndUnit(minScreen),\n unitlessMinScreen = _getValueAndUnit3[0],\n minScreenUnit = _getValueAndUnit3[1];\n var _getValueAndUnit4 = getValueAndUnit(maxScreen),\n unitlessMaxScreen = _getValueAndUnit4[0],\n maxScreenUnit = _getValueAndUnit4[1];\n if (typeof unitlessMinScreen !== 'number' || typeof unitlessMaxScreen !== 'number' || !minScreenUnit || !maxScreenUnit || minScreenUnit !== maxScreenUnit) {\n throw new PolishedError(47);\n }\n if (typeof unitlessFromSize !== 'number' || typeof unitlessToSize !== 'number' || fromSizeUnit !== toSizeUnit) {\n throw new PolishedError(48);\n }\n if (fromSizeUnit !== minScreenUnit || toSizeUnit !== maxScreenUnit) {\n throw new PolishedError(76);\n }\n var slope = (unitlessFromSize - unitlessToSize) / (unitlessMinScreen - unitlessMaxScreen);\n var base = unitlessToSize - slope * unitlessMaxScreen;\n return \"calc(\" + base.toFixed(2) + (fromSizeUnit || '') + \" + \" + (100 * slope).toFixed(2) + \"vw)\";\n}\n\n/**\n * CSS to contain a float (credit to CSSMojo).\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...clearFix(),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${clearFix()}\n * `\n *\n * // CSS as JS Output\n *\n * '&::after': {\n * 'clear': 'both',\n * 'content': '\"\"',\n * 'display': 'table'\n * }\n */\nfunction clearFix(parent) {\n var _ref;\n if (parent === void 0) {\n parent = '&';\n }\n var pseudoSelector = parent + \"::after\";\n return _ref = {}, _ref[pseudoSelector] = {\n clear: 'both',\n content: '\"\"',\n display: 'table'\n }, _ref;\n}\n\n/**\n * CSS to fully cover an area. Can optionally be passed an offset to act as a \"padding\".\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...cover()\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${cover()}\n * `\n *\n * // CSS as JS Output\n *\n * div: {\n * 'position': 'absolute',\n * 'top': '0',\n * 'right: '0',\n * 'bottom': '0',\n * 'left: '0'\n * }\n */\nfunction cover(offset) {\n if (offset === void 0) {\n offset = 0;\n }\n return {\n position: 'absolute',\n top: offset,\n right: offset,\n bottom: offset,\n left: offset\n };\n}\n\n/**\n * CSS to represent truncated text with an ellipsis. You can optionally pass a max-width and number of lines before truncating.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...ellipsis('250px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${ellipsis('250px')}\n * `\n *\n * // CSS as JS Output\n *\n * div: {\n * 'display': 'inline-block',\n * 'maxWidth': '250px',\n * 'overflow': 'hidden',\n * 'textOverflow': 'ellipsis',\n * 'whiteSpace': 'nowrap',\n * 'wordWrap': 'normal'\n * }\n */\nfunction ellipsis(width, lines) {\n if (lines === void 0) {\n lines = 1;\n }\n var styles = {\n display: 'inline-block',\n maxWidth: width || '100%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n wordWrap: 'normal'\n };\n return lines > 1 ? _extends({}, styles, {\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: lines,\n display: '-webkit-box',\n whiteSpace: 'normal'\n }) : styles;\n}\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\n/**\n * Returns a set of media queries that resizes a property (or set of properties) between a provided fromSize and toSize. Accepts optional minScreen (defaults to '320px') and maxScreen (defaults to '1200px') to constrain the interpolation.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...fluidRange(\n * {\n * prop: 'padding',\n * fromSize: '20px',\n * toSize: '100px',\n * },\n * '400px',\n * '1000px',\n * )\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${fluidRange(\n * {\n * prop: 'padding',\n * fromSize: '20px',\n * toSize: '100px',\n * },\n * '400px',\n * '1000px',\n * )}\n * `\n *\n * // CSS as JS Output\n *\n * div: {\n * \"@media (min-width: 1000px)\": Object {\n * \"padding\": \"100px\",\n * },\n * \"@media (min-width: 400px)\": Object {\n * \"padding\": \"calc(-33.33333333333334px + 13.333333333333334vw)\",\n * },\n * \"padding\": \"20px\",\n * }\n */\nfunction fluidRange(cssProp, minScreen, maxScreen) {\n if (minScreen === void 0) {\n minScreen = '320px';\n }\n if (maxScreen === void 0) {\n maxScreen = '1200px';\n }\n if (!Array.isArray(cssProp) && typeof cssProp !== 'object' || cssProp === null) {\n throw new PolishedError(49);\n }\n if (Array.isArray(cssProp)) {\n var mediaQueries = {};\n var fallbacks = {};\n for (var _iterator = _createForOfIteratorHelperLoose(cssProp), _step; !(_step = _iterator()).done;) {\n var _extends2, _extends3;\n var obj = _step.value;\n if (!obj.prop || !obj.fromSize || !obj.toSize) {\n throw new PolishedError(50);\n }\n fallbacks[obj.prop] = obj.fromSize;\n mediaQueries[\"@media (min-width: \" + minScreen + \")\"] = _extends({}, mediaQueries[\"@media (min-width: \" + minScreen + \")\"], (_extends2 = {}, _extends2[obj.prop] = between(obj.fromSize, obj.toSize, minScreen, maxScreen), _extends2));\n mediaQueries[\"@media (min-width: \" + maxScreen + \")\"] = _extends({}, mediaQueries[\"@media (min-width: \" + maxScreen + \")\"], (_extends3 = {}, _extends3[obj.prop] = obj.toSize, _extends3));\n }\n return _extends({}, fallbacks, mediaQueries);\n } else {\n var _ref, _ref2, _ref3;\n if (!cssProp.prop || !cssProp.fromSize || !cssProp.toSize) {\n throw new PolishedError(51);\n }\n return _ref3 = {}, _ref3[cssProp.prop] = cssProp.fromSize, _ref3[\"@media (min-width: \" + minScreen + \")\"] = (_ref = {}, _ref[cssProp.prop] = between(cssProp.fromSize, cssProp.toSize, minScreen, maxScreen), _ref), _ref3[\"@media (min-width: \" + maxScreen + \")\"] = (_ref2 = {}, _ref2[cssProp.prop] = cssProp.toSize, _ref2), _ref3;\n }\n}\n\nvar dataURIRegex = /^\\s*data:([a-z]+\\/[a-z-]+(;[a-z-]+=[a-z-]+)?)?(;charset=[a-z0-9-]+)?(;base64)?,[a-z0-9!$&',()*+,;=\\-._~:@/?%\\s]*\\s*$/i;\nvar formatHintMap = {\n woff: 'woff',\n woff2: 'woff2',\n ttf: 'truetype',\n otf: 'opentype',\n eot: 'embedded-opentype',\n svg: 'svg',\n svgz: 'svg'\n};\nfunction generateFormatHint(format, formatHint) {\n if (!formatHint) return '';\n return \" format(\\\"\" + formatHintMap[format] + \"\\\")\";\n}\nfunction isDataURI(fontFilePath) {\n return !!fontFilePath.replace(/\\s+/g, ' ').match(dataURIRegex);\n}\nfunction generateFileReferences(fontFilePath, fileFormats, formatHint) {\n if (isDataURI(fontFilePath)) {\n return \"url(\\\"\" + fontFilePath + \"\\\")\" + generateFormatHint(fileFormats[0], formatHint);\n }\n var fileFontReferences = fileFormats.map(function (format) {\n return \"url(\\\"\" + fontFilePath + \".\" + format + \"\\\")\" + generateFormatHint(format, formatHint);\n });\n return fileFontReferences.join(', ');\n}\nfunction generateLocalReferences(localFonts) {\n var localFontReferences = localFonts.map(function (font) {\n return \"local(\\\"\" + font + \"\\\")\";\n });\n return localFontReferences.join(', ');\n}\nfunction generateSources(fontFilePath, localFonts, fileFormats, formatHint) {\n var fontReferences = [];\n if (localFonts) fontReferences.push(generateLocalReferences(localFonts));\n if (fontFilePath) {\n fontReferences.push(generateFileReferences(fontFilePath, fileFormats, formatHint));\n }\n return fontReferences.join(', ');\n}\n\n/**\n * CSS for a @font-face declaration. Defaults to check for local copies of the font on the user's machine. You can disable this by passing `null` to localFonts.\n *\n * @example\n * // Styles as object basic usage\n * const styles = {\n * ...fontFace({\n * 'fontFamily': 'Sans-Pro',\n * 'fontFilePath': 'path/to/file'\n * })\n * }\n *\n * // styled-components basic usage\n * const GlobalStyle = createGlobalStyle`${\n * fontFace({\n * 'fontFamily': 'Sans-Pro',\n * 'fontFilePath': 'path/to/file'\n * }\n * )}`\n *\n * // CSS as JS Output\n *\n * '@font-face': {\n * 'fontFamily': 'Sans-Pro',\n * 'src': 'url(\"path/to/file.eot\"), url(\"path/to/file.woff2\"), url(\"path/to/file.woff\"), url(\"path/to/file.ttf\"), url(\"path/to/file.svg\")',\n * }\n */\n\nfunction fontFace(_ref) {\n var fontFamily = _ref.fontFamily,\n fontFilePath = _ref.fontFilePath,\n fontStretch = _ref.fontStretch,\n fontStyle = _ref.fontStyle,\n fontVariant = _ref.fontVariant,\n fontWeight = _ref.fontWeight,\n _ref$fileFormats = _ref.fileFormats,\n fileFormats = _ref$fileFormats === void 0 ? ['eot', 'woff2', 'woff', 'ttf', 'svg'] : _ref$fileFormats,\n _ref$formatHint = _ref.formatHint,\n formatHint = _ref$formatHint === void 0 ? false : _ref$formatHint,\n _ref$localFonts = _ref.localFonts,\n localFonts = _ref$localFonts === void 0 ? [fontFamily] : _ref$localFonts,\n unicodeRange = _ref.unicodeRange,\n fontDisplay = _ref.fontDisplay,\n fontVariationSettings = _ref.fontVariationSettings,\n fontFeatureSettings = _ref.fontFeatureSettings;\n // Error Handling\n if (!fontFamily) throw new PolishedError(55);\n if (!fontFilePath && !localFonts) {\n throw new PolishedError(52);\n }\n if (localFonts && !Array.isArray(localFonts)) {\n throw new PolishedError(53);\n }\n if (!Array.isArray(fileFormats)) {\n throw new PolishedError(54);\n }\n var fontFaceDeclaration = {\n '@font-face': {\n fontFamily: fontFamily,\n src: generateSources(fontFilePath, localFonts, fileFormats, formatHint),\n unicodeRange: unicodeRange,\n fontStretch: fontStretch,\n fontStyle: fontStyle,\n fontVariant: fontVariant,\n fontWeight: fontWeight,\n fontDisplay: fontDisplay,\n fontVariationSettings: fontVariationSettings,\n fontFeatureSettings: fontFeatureSettings\n }\n };\n\n // Removes undefined fields for cleaner css object.\n return JSON.parse(JSON.stringify(fontFaceDeclaration));\n}\n\n/**\n * CSS to hide text to show a background image in a SEO-friendly way.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * 'backgroundImage': 'url(logo.png)',\n * ...hideText(),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * backgroundImage: url(logo.png);\n * ${hideText()};\n * `\n *\n * // CSS as JS Output\n *\n * 'div': {\n * 'backgroundImage': 'url(logo.png)',\n * 'textIndent': '101%',\n * 'overflow': 'hidden',\n * 'whiteSpace': 'nowrap',\n * }\n */\nfunction hideText() {\n return {\n textIndent: '101%',\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n };\n}\n\n/**\n * CSS to hide content visually but remain accessible to screen readers.\n * from [HTML5 Boilerplate](https://github.com/h5bp/html5-boilerplate/blob/9a176f57af1cfe8ec70300da4621fb9b07e5fa31/src/css/main.css#L121)\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...hideVisually(),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${hideVisually()};\n * `\n *\n * // CSS as JS Output\n *\n * 'div': {\n * 'border': '0',\n * 'clip': 'rect(0 0 0 0)',\n * 'height': '1px',\n * 'margin': '-1px',\n * 'overflow': 'hidden',\n * 'padding': '0',\n * 'position': 'absolute',\n * 'whiteSpace': 'nowrap',\n * 'width': '1px',\n * }\n */\nfunction hideVisually() {\n return {\n border: '0',\n clip: 'rect(0 0 0 0)',\n height: '1px',\n margin: '-1px',\n overflow: 'hidden',\n padding: '0',\n position: 'absolute',\n whiteSpace: 'nowrap',\n width: '1px'\n };\n}\n\n/**\n * Generates a media query to target HiDPI devices.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * [hiDPI(1.5)]: {\n * width: 200px;\n * }\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${hiDPI(1.5)} {\n * width: 200px;\n * }\n * `\n *\n * // CSS as JS Output\n *\n * '@media only screen and (-webkit-min-device-pixel-ratio: 1.5),\n * only screen and (min--moz-device-pixel-ratio: 1.5),\n * only screen and (-o-min-device-pixel-ratio: 1.5/1),\n * only screen and (min-resolution: 144dpi),\n * only screen and (min-resolution: 1.5dppx)': {\n * 'width': '200px',\n * }\n */\nfunction hiDPI(ratio) {\n if (ratio === void 0) {\n ratio = 1.3;\n }\n return \"\\n @media only screen and (-webkit-min-device-pixel-ratio: \" + ratio + \"),\\n only screen and (min--moz-device-pixel-ratio: \" + ratio + \"),\\n only screen and (-o-min-device-pixel-ratio: \" + ratio + \"/1),\\n only screen and (min-resolution: \" + Math.round(ratio * 96) + \"dpi),\\n only screen and (min-resolution: \" + ratio + \"dppx)\\n \";\n}\n\nfunction constructGradientValue(literals) {\n var template = '';\n for (var _len = arguments.length, substitutions = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n substitutions[_key - 1] = arguments[_key];\n }\n for (var i = 0; i < literals.length; i += 1) {\n template += literals[i];\n if (i === substitutions.length - 1 && substitutions[i]) {\n var definedValues = substitutions.filter(function (substitute) {\n return !!substitute;\n });\n // Adds leading coma if properties preceed color-stops\n if (definedValues.length > 1) {\n template = template.slice(0, -1);\n template += \", \" + substitutions[i];\n // No trailing space if color-stops is the only param provided\n } else if (definedValues.length === 1) {\n template += \"\" + substitutions[i];\n }\n } else if (substitutions[i]) {\n template += substitutions[i] + \" \";\n }\n }\n return template.trim();\n}\n\nvar _templateObject$1;\n/**\n * CSS for declaring a linear gradient, including a fallback background-color. The fallback is either the first color-stop or an explicitly passed fallback color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...linearGradient({\n colorStops: ['#00FFFF 0%', 'rgba(0, 0, 255, 0) 50%', '#0000FF 95%'],\n toDirection: 'to top right',\n fallback: '#FFF',\n })\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${linearGradient({\n colorStops: ['#00FFFF 0%', 'rgba(0, 0, 255, 0) 50%', '#0000FF 95%'],\n toDirection: 'to top right',\n fallback: '#FFF',\n })}\n *`\n *\n * // CSS as JS Output\n *\n * div: {\n * 'backgroundColor': '#FFF',\n * 'backgroundImage': 'linear-gradient(to top right, #00FFFF 0%, rgba(0, 0, 255, 0) 50%, #0000FF 95%)',\n * }\n */\nfunction linearGradient(_ref) {\n var colorStops = _ref.colorStops,\n fallback = _ref.fallback,\n _ref$toDirection = _ref.toDirection,\n toDirection = _ref$toDirection === void 0 ? '' : _ref$toDirection;\n if (!colorStops || colorStops.length < 2) {\n throw new PolishedError(56);\n }\n return {\n backgroundColor: fallback || colorStops[0].replace(/,\\s+/g, ',').split(' ')[0].replace(/,(?=\\S)/g, ', '),\n backgroundImage: constructGradientValue(_templateObject$1 || (_templateObject$1 = _taggedTemplateLiteralLoose([\"linear-gradient(\", \"\", \")\"])), toDirection, colorStops.join(', ').replace(/,(?=\\S)/g, ', '))\n };\n}\n\n/**\n * CSS to normalize abnormalities across browsers (normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css)\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...normalize(),\n * }\n *\n * // styled-components usage\n * const GlobalStyle = createGlobalStyle`${normalize()}`\n *\n * // CSS as JS Output\n *\n * html {\n * lineHeight: 1.15,\n * textSizeAdjust: 100%,\n * } ...\n */\nfunction normalize() {\n var _ref;\n return [(_ref = {\n html: {\n lineHeight: '1.15',\n textSizeAdjust: '100%'\n },\n body: {\n margin: '0'\n },\n main: {\n display: 'block'\n },\n h1: {\n fontSize: '2em',\n margin: '0.67em 0'\n },\n hr: {\n boxSizing: 'content-box',\n height: '0',\n overflow: 'visible'\n },\n pre: {\n fontFamily: 'monospace, monospace',\n fontSize: '1em'\n },\n a: {\n backgroundColor: 'transparent'\n },\n 'abbr[title]': {\n borderBottom: 'none',\n textDecoration: 'underline'\n }\n }, _ref[\"b,\\n strong\"] = {\n fontWeight: 'bolder'\n }, _ref[\"code,\\n kbd,\\n samp\"] = {\n fontFamily: 'monospace, monospace',\n fontSize: '1em'\n }, _ref.small = {\n fontSize: '80%'\n }, _ref[\"sub,\\n sup\"] = {\n fontSize: '75%',\n lineHeight: '0',\n position: 'relative',\n verticalAlign: 'baseline'\n }, _ref.sub = {\n bottom: '-0.25em'\n }, _ref.sup = {\n top: '-0.5em'\n }, _ref.img = {\n borderStyle: 'none'\n }, _ref[\"button,\\n input,\\n optgroup,\\n select,\\n textarea\"] = {\n fontFamily: 'inherit',\n fontSize: '100%',\n lineHeight: '1.15',\n margin: '0'\n }, _ref[\"button,\\n input\"] = {\n overflow: 'visible'\n }, _ref[\"button,\\n select\"] = {\n textTransform: 'none'\n }, _ref[\"button,\\n html [type=\\\"button\\\"],\\n [type=\\\"reset\\\"],\\n [type=\\\"submit\\\"]\"] = {\n WebkitAppearance: 'button'\n }, _ref[\"button::-moz-focus-inner,\\n [type=\\\"button\\\"]::-moz-focus-inner,\\n [type=\\\"reset\\\"]::-moz-focus-inner,\\n [type=\\\"submit\\\"]::-moz-focus-inner\"] = {\n borderStyle: 'none',\n padding: '0'\n }, _ref[\"button:-moz-focusring,\\n [type=\\\"button\\\"]:-moz-focusring,\\n [type=\\\"reset\\\"]:-moz-focusring,\\n [type=\\\"submit\\\"]:-moz-focusring\"] = {\n outline: '1px dotted ButtonText'\n }, _ref.fieldset = {\n padding: '0.35em 0.625em 0.75em'\n }, _ref.legend = {\n boxSizing: 'border-box',\n color: 'inherit',\n display: 'table',\n maxWidth: '100%',\n padding: '0',\n whiteSpace: 'normal'\n }, _ref.progress = {\n verticalAlign: 'baseline'\n }, _ref.textarea = {\n overflow: 'auto'\n }, _ref[\"[type=\\\"checkbox\\\"],\\n [type=\\\"radio\\\"]\"] = {\n boxSizing: 'border-box',\n padding: '0'\n }, _ref[\"[type=\\\"number\\\"]::-webkit-inner-spin-button,\\n [type=\\\"number\\\"]::-webkit-outer-spin-button\"] = {\n height: 'auto'\n }, _ref['[type=\"search\"]'] = {\n WebkitAppearance: 'textfield',\n outlineOffset: '-2px'\n }, _ref['[type=\"search\"]::-webkit-search-decoration'] = {\n WebkitAppearance: 'none'\n }, _ref['::-webkit-file-upload-button'] = {\n WebkitAppearance: 'button',\n font: 'inherit'\n }, _ref.details = {\n display: 'block'\n }, _ref.summary = {\n display: 'list-item'\n }, _ref.template = {\n display: 'none'\n }, _ref['[hidden]'] = {\n display: 'none'\n }, _ref), {\n 'abbr[title]': {\n textDecoration: 'underline dotted'\n }\n }];\n}\n\nvar _templateObject;\n/**\n * CSS for declaring a radial gradient, including a fallback background-color. The fallback is either the first color-stop or an explicitly passed fallback color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...radialGradient({\n * colorStops: ['#00FFFF 0%', 'rgba(0, 0, 255, 0) 50%', '#0000FF 95%'],\n * extent: 'farthest-corner at 45px 45px',\n * position: 'center',\n * shape: 'ellipse',\n * })\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${radialGradient({\n * colorStops: ['#00FFFF 0%', 'rgba(0, 0, 255, 0) 50%', '#0000FF 95%'],\n * extent: 'farthest-corner at 45px 45px',\n * position: 'center',\n * shape: 'ellipse',\n * })}\n *`\n *\n * // CSS as JS Output\n *\n * div: {\n * 'backgroundColor': '#00FFFF',\n * 'backgroundImage': 'radial-gradient(center ellipse farthest-corner at 45px 45px, #00FFFF 0%, rgba(0, 0, 255, 0) 50%, #0000FF 95%)',\n * }\n */\nfunction radialGradient(_ref) {\n var colorStops = _ref.colorStops,\n _ref$extent = _ref.extent,\n extent = _ref$extent === void 0 ? '' : _ref$extent,\n fallback = _ref.fallback,\n _ref$position = _ref.position,\n position = _ref$position === void 0 ? '' : _ref$position,\n _ref$shape = _ref.shape,\n shape = _ref$shape === void 0 ? '' : _ref$shape;\n if (!colorStops || colorStops.length < 2) {\n throw new PolishedError(57);\n }\n return {\n backgroundColor: fallback || colorStops[0].split(' ')[0],\n backgroundImage: constructGradientValue(_templateObject || (_templateObject = _taggedTemplateLiteralLoose([\"radial-gradient(\", \"\", \"\", \"\", \")\"])), position, shape, extent, colorStops.join(', '))\n };\n}\n\n/**\n * A helper to generate a retina background image and non-retina\n * background image. The retina background image will output to a HiDPI media query. The mixin uses\n * a _2x.png filename suffix by default.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...retinaImage('my-img')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${retinaImage('my-img')}\n * `\n *\n * // CSS as JS Output\n * div {\n * backgroundImage: 'url(my-img.png)',\n * '@media only screen and (-webkit-min-device-pixel-ratio: 1.3),\n * only screen and (min--moz-device-pixel-ratio: 1.3),\n * only screen and (-o-min-device-pixel-ratio: 1.3/1),\n * only screen and (min-resolution: 144dpi),\n * only screen and (min-resolution: 1.5dppx)': {\n * backgroundImage: 'url(my-img_2x.png)',\n * }\n * }\n */\nfunction retinaImage(filename, backgroundSize, extension, retinaFilename, retinaSuffix) {\n var _ref;\n if (extension === void 0) {\n extension = 'png';\n }\n if (retinaSuffix === void 0) {\n retinaSuffix = '_2x';\n }\n if (!filename) {\n throw new PolishedError(58);\n }\n // Replace the dot at the beginning of the passed extension if one exists\n var ext = extension.replace(/^\\./, '');\n var rFilename = retinaFilename ? retinaFilename + \".\" + ext : \"\" + filename + retinaSuffix + \".\" + ext;\n return _ref = {\n backgroundImage: \"url(\" + filename + \".\" + ext + \")\"\n }, _ref[hiDPI()] = _extends({\n backgroundImage: \"url(\" + rFilename + \")\"\n }, backgroundSize ? {\n backgroundSize: backgroundSize\n } : {}), _ref;\n}\n\n/* eslint-disable key-spacing */\nvar functionsMap = {\n easeInBack: 'cubic-bezier(0.600, -0.280, 0.735, 0.045)',\n easeInCirc: 'cubic-bezier(0.600, 0.040, 0.980, 0.335)',\n easeInCubic: 'cubic-bezier(0.550, 0.055, 0.675, 0.190)',\n easeInExpo: 'cubic-bezier(0.950, 0.050, 0.795, 0.035)',\n easeInQuad: 'cubic-bezier(0.550, 0.085, 0.680, 0.530)',\n easeInQuart: 'cubic-bezier(0.895, 0.030, 0.685, 0.220)',\n easeInQuint: 'cubic-bezier(0.755, 0.050, 0.855, 0.060)',\n easeInSine: 'cubic-bezier(0.470, 0.000, 0.745, 0.715)',\n easeOutBack: 'cubic-bezier(0.175, 0.885, 0.320, 1.275)',\n easeOutCubic: 'cubic-bezier(0.215, 0.610, 0.355, 1.000)',\n easeOutCirc: 'cubic-bezier(0.075, 0.820, 0.165, 1.000)',\n easeOutExpo: 'cubic-bezier(0.190, 1.000, 0.220, 1.000)',\n easeOutQuad: 'cubic-bezier(0.250, 0.460, 0.450, 0.940)',\n easeOutQuart: 'cubic-bezier(0.165, 0.840, 0.440, 1.000)',\n easeOutQuint: 'cubic-bezier(0.230, 1.000, 0.320, 1.000)',\n easeOutSine: 'cubic-bezier(0.390, 0.575, 0.565, 1.000)',\n easeInOutBack: 'cubic-bezier(0.680, -0.550, 0.265, 1.550)',\n easeInOutCirc: 'cubic-bezier(0.785, 0.135, 0.150, 0.860)',\n easeInOutCubic: 'cubic-bezier(0.645, 0.045, 0.355, 1.000)',\n easeInOutExpo: 'cubic-bezier(1.000, 0.000, 0.000, 1.000)',\n easeInOutQuad: 'cubic-bezier(0.455, 0.030, 0.515, 0.955)',\n easeInOutQuart: 'cubic-bezier(0.770, 0.000, 0.175, 1.000)',\n easeInOutQuint: 'cubic-bezier(0.860, 0.000, 0.070, 1.000)',\n easeInOutSine: 'cubic-bezier(0.445, 0.050, 0.550, 0.950)'\n};\n/* eslint-enable key-spacing */\n\nfunction getTimingFunction(functionName) {\n return functionsMap[functionName];\n}\n\n/**\n * String to represent common easing functions as demonstrated here: (github.com/jaukia/easie).\n *\n * @deprecated - This will be deprecated in v5 in favor of `easeIn`, `easeOut`, `easeInOut`.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * 'transitionTimingFunction': timingFunctions('easeInQuad')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * transitionTimingFunction: ${timingFunctions('easeInQuad')};\n * `\n *\n * // CSS as JS Output\n *\n * 'div': {\n * 'transitionTimingFunction': 'cubic-bezier(0.550, 0.085, 0.680, 0.530)',\n * }\n */\n\nfunction timingFunctions(timingFunction) {\n return getTimingFunction(timingFunction);\n}\n\nvar getBorderWidth = function getBorderWidth(pointingDirection, height, width) {\n var fullWidth = \"\" + width[0] + (width[1] || '');\n var halfWidth = \"\" + width[0] / 2 + (width[1] || '');\n var fullHeight = \"\" + height[0] + (height[1] || '');\n var halfHeight = \"\" + height[0] / 2 + (height[1] || '');\n switch (pointingDirection) {\n case 'top':\n return \"0 \" + halfWidth + \" \" + fullHeight + \" \" + halfWidth;\n case 'topLeft':\n return fullWidth + \" \" + fullHeight + \" 0 0\";\n case 'left':\n return halfHeight + \" \" + fullWidth + \" \" + halfHeight + \" 0\";\n case 'bottomLeft':\n return fullWidth + \" 0 0 \" + fullHeight;\n case 'bottom':\n return fullHeight + \" \" + halfWidth + \" 0 \" + halfWidth;\n case 'bottomRight':\n return \"0 0 \" + fullWidth + \" \" + fullHeight;\n case 'right':\n return halfHeight + \" 0 \" + halfHeight + \" \" + fullWidth;\n case 'topRight':\n default:\n return \"0 \" + fullWidth + \" \" + fullHeight + \" 0\";\n }\n};\nvar getBorderColor = function getBorderColor(pointingDirection, foregroundColor) {\n switch (pointingDirection) {\n case 'top':\n case 'bottomRight':\n return {\n borderBottomColor: foregroundColor\n };\n case 'right':\n case 'bottomLeft':\n return {\n borderLeftColor: foregroundColor\n };\n case 'bottom':\n case 'topLeft':\n return {\n borderTopColor: foregroundColor\n };\n case 'left':\n case 'topRight':\n return {\n borderRightColor: foregroundColor\n };\n default:\n throw new PolishedError(59);\n }\n};\n\n/**\n * CSS to represent triangle with any pointing direction with an optional background color.\n *\n * @example\n * // Styles as object usage\n *\n * const styles = {\n * ...triangle({ pointingDirection: 'right', width: '100px', height: '100px', foregroundColor: 'red' })\n * }\n *\n *\n * // styled-components usage\n * const div = styled.div`\n * ${triangle({ pointingDirection: 'right', width: '100px', height: '100px', foregroundColor: 'red' })}\n *\n *\n * // CSS as JS Output\n *\n * div: {\n * 'borderColor': 'transparent transparent transparent red',\n * 'borderStyle': 'solid',\n * 'borderWidth': '50px 0 50px 100px',\n * 'height': '0',\n * 'width': '0',\n * }\n */\nfunction triangle(_ref) {\n var pointingDirection = _ref.pointingDirection,\n height = _ref.height,\n width = _ref.width,\n foregroundColor = _ref.foregroundColor,\n _ref$backgroundColor = _ref.backgroundColor,\n backgroundColor = _ref$backgroundColor === void 0 ? 'transparent' : _ref$backgroundColor;\n var widthAndUnit = getValueAndUnit(width);\n var heightAndUnit = getValueAndUnit(height);\n if (isNaN(heightAndUnit[0]) || isNaN(widthAndUnit[0])) {\n throw new PolishedError(60);\n }\n return _extends({\n width: '0',\n height: '0',\n borderColor: backgroundColor\n }, getBorderColor(pointingDirection, foregroundColor), {\n borderStyle: 'solid',\n borderWidth: getBorderWidth(pointingDirection, heightAndUnit, widthAndUnit)\n });\n}\n\n/**\n * Provides an easy way to change the `wordWrap` property.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...wordWrap('break-word')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${wordWrap('break-word')}\n * `\n *\n * // CSS as JS Output\n *\n * const styles = {\n * overflowWrap: 'break-word',\n * wordWrap: 'break-word',\n * wordBreak: 'break-all',\n * }\n */\nfunction wordWrap(wrap) {\n if (wrap === void 0) {\n wrap = 'break-word';\n }\n var wordBreak = wrap === 'break-word' ? 'break-all' : wrap;\n return {\n overflowWrap: wrap,\n wordWrap: wrap,\n wordBreak: wordBreak\n };\n}\n\nfunction colorToInt(color) {\n return Math.round(color * 255);\n}\nfunction convertToInt(red, green, blue) {\n return colorToInt(red) + \",\" + colorToInt(green) + \",\" + colorToInt(blue);\n}\nfunction hslToRgb(hue, saturation, lightness, convert) {\n if (convert === void 0) {\n convert = convertToInt;\n }\n if (saturation === 0) {\n // achromatic\n return convert(lightness, lightness, lightness);\n }\n\n // formulae from https://en.wikipedia.org/wiki/HSL_and_HSV\n var huePrime = (hue % 360 + 360) % 360 / 60;\n var chroma = (1 - Math.abs(2 * lightness - 1)) * saturation;\n var secondComponent = chroma * (1 - Math.abs(huePrime % 2 - 1));\n var red = 0;\n var green = 0;\n var blue = 0;\n if (huePrime >= 0 && huePrime < 1) {\n red = chroma;\n green = secondComponent;\n } else if (huePrime >= 1 && huePrime < 2) {\n red = secondComponent;\n green = chroma;\n } else if (huePrime >= 2 && huePrime < 3) {\n green = chroma;\n blue = secondComponent;\n } else if (huePrime >= 3 && huePrime < 4) {\n green = secondComponent;\n blue = chroma;\n } else if (huePrime >= 4 && huePrime < 5) {\n red = secondComponent;\n blue = chroma;\n } else if (huePrime >= 5 && huePrime < 6) {\n red = chroma;\n blue = secondComponent;\n }\n var lightnessModification = lightness - chroma / 2;\n var finalRed = red + lightnessModification;\n var finalGreen = green + lightnessModification;\n var finalBlue = blue + lightnessModification;\n return convert(finalRed, finalGreen, finalBlue);\n}\n\nvar namedColorMap = {\n aliceblue: 'f0f8ff',\n antiquewhite: 'faebd7',\n aqua: '00ffff',\n aquamarine: '7fffd4',\n azure: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '000',\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 darkgreen: '006400',\n darkgrey: 'a9a9a9',\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 green: '008000',\n greenyellow: 'adff2f',\n grey: '808080',\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 lightgreen: '90ee90',\n lightgrey: 'd3d3d3',\n lightpink: 'ffb6c1',\n lightsalmon: 'ffa07a',\n lightseagreen: '20b2aa',\n lightskyblue: '87cefa',\n lightslategray: '789',\n lightslategrey: '789',\n lightsteelblue: 'b0c4de',\n lightyellow: 'ffffe0',\n lime: '0f0',\n limegreen: '32cd32',\n linen: 'faf0e6',\n magenta: 'f0f',\n maroon: '800000',\n mediumaquamarine: '66cdaa',\n mediumblue: '0000cd',\n mediumorchid: 'ba55d3',\n mediumpurple: '9370db',\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: 'db7093',\n papayawhip: 'ffefd5',\n peachpuff: 'ffdab9',\n peru: 'cd853f',\n pink: 'ffc0cb',\n plum: 'dda0dd',\n powderblue: 'b0e0e6',\n purple: '800080',\n rebeccapurple: '639',\n red: 'f00',\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: 'fff',\n whitesmoke: 'f5f5f5',\n yellow: 'ff0',\n yellowgreen: '9acd32'\n};\n\n/**\n * Checks if a string is a CSS named color and returns its equivalent hex value, otherwise returns the original color.\n * @private\n */\nfunction nameToHex(color) {\n if (typeof color !== 'string') return color;\n var normalizedColorName = color.toLowerCase();\n return namedColorMap[normalizedColorName] ? \"#\" + namedColorMap[normalizedColorName] : color;\n}\n\nvar hexRegex = /^#[a-fA-F0-9]{6}$/;\nvar hexRgbaRegex = /^#[a-fA-F0-9]{8}$/;\nvar reducedHexRegex = /^#[a-fA-F0-9]{3}$/;\nvar reducedRgbaHexRegex = /^#[a-fA-F0-9]{4}$/;\nvar rgbRegex = /^rgb\\(\\s*(\\d{1,3})\\s*(?:,)?\\s*(\\d{1,3})\\s*(?:,)?\\s*(\\d{1,3})\\s*\\)$/i;\nvar rgbaRegex = /^rgb(?:a)?\\(\\s*(\\d{1,3})\\s*(?:,)?\\s*(\\d{1,3})\\s*(?:,)?\\s*(\\d{1,3})\\s*(?:,|\\/)\\s*([-+]?\\d*[.]?\\d+[%]?)\\s*\\)$/i;\nvar hslRegex = /^hsl\\(\\s*(\\d{0,3}[.]?[0-9]+(?:deg)?)\\s*(?:,)?\\s*(\\d{1,3}[.]?[0-9]?)%\\s*(?:,)?\\s*(\\d{1,3}[.]?[0-9]?)%\\s*\\)$/i;\nvar hslaRegex = /^hsl(?:a)?\\(\\s*(\\d{0,3}[.]?[0-9]+(?:deg)?)\\s*(?:,)?\\s*(\\d{1,3}[.]?[0-9]?)%\\s*(?:,)?\\s*(\\d{1,3}[.]?[0-9]?)%\\s*(?:,|\\/)\\s*([-+]?\\d*[.]?\\d+[%]?)\\s*\\)$/i;\n\n/**\n * Returns an RgbColor or RgbaColor object. This utility function is only useful\n * if want to extract a color component. With the color util `toColorString` you\n * can convert a RgbColor or RgbaColor object back to a string.\n *\n * @example\n * // Assigns `{ red: 255, green: 0, blue: 0 }` to color1\n * const color1 = parseToRgb('rgb(255, 0, 0)');\n * // Assigns `{ red: 92, green: 102, blue: 112, alpha: 0.75 }` to color2\n * const color2 = parseToRgb('hsla(210, 10%, 40%, 0.75)');\n */\nfunction parseToRgb(color) {\n if (typeof color !== 'string') {\n throw new PolishedError(3);\n }\n var normalizedColor = nameToHex(color);\n if (normalizedColor.match(hexRegex)) {\n return {\n red: parseInt(\"\" + normalizedColor[1] + normalizedColor[2], 16),\n green: parseInt(\"\" + normalizedColor[3] + normalizedColor[4], 16),\n blue: parseInt(\"\" + normalizedColor[5] + normalizedColor[6], 16)\n };\n }\n if (normalizedColor.match(hexRgbaRegex)) {\n var alpha = parseFloat((parseInt(\"\" + normalizedColor[7] + normalizedColor[8], 16) / 255).toFixed(2));\n return {\n red: parseInt(\"\" + normalizedColor[1] + normalizedColor[2], 16),\n green: parseInt(\"\" + normalizedColor[3] + normalizedColor[4], 16),\n blue: parseInt(\"\" + normalizedColor[5] + normalizedColor[6], 16),\n alpha: alpha\n };\n }\n if (normalizedColor.match(reducedHexRegex)) {\n return {\n red: parseInt(\"\" + normalizedColor[1] + normalizedColor[1], 16),\n green: parseInt(\"\" + normalizedColor[2] + normalizedColor[2], 16),\n blue: parseInt(\"\" + normalizedColor[3] + normalizedColor[3], 16)\n };\n }\n if (normalizedColor.match(reducedRgbaHexRegex)) {\n var _alpha = parseFloat((parseInt(\"\" + normalizedColor[4] + normalizedColor[4], 16) / 255).toFixed(2));\n return {\n red: parseInt(\"\" + normalizedColor[1] + normalizedColor[1], 16),\n green: parseInt(\"\" + normalizedColor[2] + normalizedColor[2], 16),\n blue: parseInt(\"\" + normalizedColor[3] + normalizedColor[3], 16),\n alpha: _alpha\n };\n }\n var rgbMatched = rgbRegex.exec(normalizedColor);\n if (rgbMatched) {\n return {\n red: parseInt(\"\" + rgbMatched[1], 10),\n green: parseInt(\"\" + rgbMatched[2], 10),\n blue: parseInt(\"\" + rgbMatched[3], 10)\n };\n }\n var rgbaMatched = rgbaRegex.exec(normalizedColor.substring(0, 50));\n if (rgbaMatched) {\n return {\n red: parseInt(\"\" + rgbaMatched[1], 10),\n green: parseInt(\"\" + rgbaMatched[2], 10),\n blue: parseInt(\"\" + rgbaMatched[3], 10),\n alpha: parseFloat(\"\" + rgbaMatched[4]) > 1 ? parseFloat(\"\" + rgbaMatched[4]) / 100 : parseFloat(\"\" + rgbaMatched[4])\n };\n }\n var hslMatched = hslRegex.exec(normalizedColor);\n if (hslMatched) {\n var hue = parseInt(\"\" + hslMatched[1], 10);\n var saturation = parseInt(\"\" + hslMatched[2], 10) / 100;\n var lightness = parseInt(\"\" + hslMatched[3], 10) / 100;\n var rgbColorString = \"rgb(\" + hslToRgb(hue, saturation, lightness) + \")\";\n var hslRgbMatched = rgbRegex.exec(rgbColorString);\n if (!hslRgbMatched) {\n throw new PolishedError(4, normalizedColor, rgbColorString);\n }\n return {\n red: parseInt(\"\" + hslRgbMatched[1], 10),\n green: parseInt(\"\" + hslRgbMatched[2], 10),\n blue: parseInt(\"\" + hslRgbMatched[3], 10)\n };\n }\n var hslaMatched = hslaRegex.exec(normalizedColor.substring(0, 50));\n if (hslaMatched) {\n var _hue = parseInt(\"\" + hslaMatched[1], 10);\n var _saturation = parseInt(\"\" + hslaMatched[2], 10) / 100;\n var _lightness = parseInt(\"\" + hslaMatched[3], 10) / 100;\n var _rgbColorString = \"rgb(\" + hslToRgb(_hue, _saturation, _lightness) + \")\";\n var _hslRgbMatched = rgbRegex.exec(_rgbColorString);\n if (!_hslRgbMatched) {\n throw new PolishedError(4, normalizedColor, _rgbColorString);\n }\n return {\n red: parseInt(\"\" + _hslRgbMatched[1], 10),\n green: parseInt(\"\" + _hslRgbMatched[2], 10),\n blue: parseInt(\"\" + _hslRgbMatched[3], 10),\n alpha: parseFloat(\"\" + hslaMatched[4]) > 1 ? parseFloat(\"\" + hslaMatched[4]) / 100 : parseFloat(\"\" + hslaMatched[4])\n };\n }\n throw new PolishedError(5);\n}\n\nfunction rgbToHsl(color) {\n // make sure rgb are contained in a set of [0, 255]\n var red = color.red / 255;\n var green = color.green / 255;\n var blue = color.blue / 255;\n var max = Math.max(red, green, blue);\n var min = Math.min(red, green, blue);\n var lightness = (max + min) / 2;\n if (max === min) {\n // achromatic\n if (color.alpha !== undefined) {\n return {\n hue: 0,\n saturation: 0,\n lightness: lightness,\n alpha: color.alpha\n };\n } else {\n return {\n hue: 0,\n saturation: 0,\n lightness: lightness\n };\n }\n }\n var hue;\n var delta = max - min;\n var saturation = lightness > 0.5 ? delta / (2 - max - min) : delta / (max + min);\n switch (max) {\n case red:\n hue = (green - blue) / delta + (green < blue ? 6 : 0);\n break;\n case green:\n hue = (blue - red) / delta + 2;\n break;\n default:\n // blue case\n hue = (red - green) / delta + 4;\n break;\n }\n hue *= 60;\n if (color.alpha !== undefined) {\n return {\n hue: hue,\n saturation: saturation,\n lightness: lightness,\n alpha: color.alpha\n };\n }\n return {\n hue: hue,\n saturation: saturation,\n lightness: lightness\n };\n}\n\n/**\n * Returns an HslColor or HslaColor object. This utility function is only useful\n * if want to extract a color component. With the color util `toColorString` you\n * can convert a HslColor or HslaColor object back to a string.\n *\n * @example\n * // Assigns `{ hue: 0, saturation: 1, lightness: 0.5 }` to color1\n * const color1 = parseToHsl('rgb(255, 0, 0)');\n * // Assigns `{ hue: 128, saturation: 1, lightness: 0.5, alpha: 0.75 }` to color2\n * const color2 = parseToHsl('hsla(128, 100%, 50%, 0.75)');\n */\nfunction parseToHsl(color) {\n // Note: At a later stage we can optimize this function as right now a hsl\n // color would be parsed converted to rgb values and converted back to hsl.\n return rgbToHsl(parseToRgb(color));\n}\n\n/**\n * Reduces hex values if possible e.g. #ff8866 to #f86\n * @private\n */\nvar reduceHexValue = function reduceHexValue(value) {\n if (value.length === 7 && value[1] === value[2] && value[3] === value[4] && value[5] === value[6]) {\n return \"#\" + value[1] + value[3] + value[5];\n }\n return value;\n};\nvar reduceHexValue$1 = reduceHexValue;\n\nfunction numberToHex(value) {\n var hex = value.toString(16);\n return hex.length === 1 ? \"0\" + hex : hex;\n}\n\nfunction colorToHex(color) {\n return numberToHex(Math.round(color * 255));\n}\nfunction convertToHex(red, green, blue) {\n return reduceHexValue$1(\"#\" + colorToHex(red) + colorToHex(green) + colorToHex(blue));\n}\nfunction hslToHex(hue, saturation, lightness) {\n return hslToRgb(hue, saturation, lightness, convertToHex);\n}\n\n/**\n * Returns a string value for the color. The returned result is the smallest possible hex notation.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: hsl(359, 0.75, 0.4),\n * background: hsl({ hue: 360, saturation: 0.75, lightness: 0.4 }),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${hsl(359, 0.75, 0.4)};\n * background: ${hsl({ hue: 360, saturation: 0.75, lightness: 0.4 })};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#b3191c\";\n * background: \"#b3191c\";\n * }\n */\nfunction hsl(value, saturation, lightness) {\n if (typeof value === 'number' && typeof saturation === 'number' && typeof lightness === 'number') {\n return hslToHex(value, saturation, lightness);\n } else if (typeof value === 'object' && saturation === undefined && lightness === undefined) {\n return hslToHex(value.hue, value.saturation, value.lightness);\n }\n throw new PolishedError(1);\n}\n\n/**\n * Returns a string value for the color. The returned result is the smallest possible rgba or hex notation.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: hsla(359, 0.75, 0.4, 0.7),\n * background: hsla({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0,7 }),\n * background: hsla(359, 0.75, 0.4, 1),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${hsla(359, 0.75, 0.4, 0.7)};\n * background: ${hsla({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0,7 })};\n * background: ${hsla(359, 0.75, 0.4, 1)};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"rgba(179,25,28,0.7)\";\n * background: \"rgba(179,25,28,0.7)\";\n * background: \"#b3191c\";\n * }\n */\nfunction hsla(value, saturation, lightness, alpha) {\n if (typeof value === 'number' && typeof saturation === 'number' && typeof lightness === 'number' && typeof alpha === 'number') {\n return alpha >= 1 ? hslToHex(value, saturation, lightness) : \"rgba(\" + hslToRgb(value, saturation, lightness) + \",\" + alpha + \")\";\n } else if (typeof value === 'object' && saturation === undefined && lightness === undefined && alpha === undefined) {\n return value.alpha >= 1 ? hslToHex(value.hue, value.saturation, value.lightness) : \"rgba(\" + hslToRgb(value.hue, value.saturation, value.lightness) + \",\" + value.alpha + \")\";\n }\n throw new PolishedError(2);\n}\n\n/**\n * Returns a string value for the color. The returned result is the smallest possible hex notation.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: rgb(255, 205, 100),\n * background: rgb({ red: 255, green: 205, blue: 100 }),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${rgb(255, 205, 100)};\n * background: ${rgb({ red: 255, green: 205, blue: 100 })};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#ffcd64\";\n * background: \"#ffcd64\";\n * }\n */\nfunction rgb(value, green, blue) {\n if (typeof value === 'number' && typeof green === 'number' && typeof blue === 'number') {\n return reduceHexValue$1(\"#\" + numberToHex(value) + numberToHex(green) + numberToHex(blue));\n } else if (typeof value === 'object' && green === undefined && blue === undefined) {\n return reduceHexValue$1(\"#\" + numberToHex(value.red) + numberToHex(value.green) + numberToHex(value.blue));\n }\n throw new PolishedError(6);\n}\n\n/**\n * Returns a string value for the color. The returned result is the smallest possible rgba or hex notation.\n *\n * Can also be used to fade a color by passing a hex value or named CSS color along with an alpha value.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: rgba(255, 205, 100, 0.7),\n * background: rgba({ red: 255, green: 205, blue: 100, alpha: 0.7 }),\n * background: rgba(255, 205, 100, 1),\n * background: rgba('#ffffff', 0.4),\n * background: rgba('black', 0.7),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${rgba(255, 205, 100, 0.7)};\n * background: ${rgba({ red: 255, green: 205, blue: 100, alpha: 0.7 })};\n * background: ${rgba(255, 205, 100, 1)};\n * background: ${rgba('#ffffff', 0.4)};\n * background: ${rgba('black', 0.7)};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"rgba(255,205,100,0.7)\";\n * background: \"rgba(255,205,100,0.7)\";\n * background: \"#ffcd64\";\n * background: \"rgba(255,255,255,0.4)\";\n * background: \"rgba(0,0,0,0.7)\";\n * }\n */\nfunction rgba(firstValue, secondValue, thirdValue, fourthValue) {\n if (typeof firstValue === 'string' && typeof secondValue === 'number') {\n var rgbValue = parseToRgb(firstValue);\n return \"rgba(\" + rgbValue.red + \",\" + rgbValue.green + \",\" + rgbValue.blue + \",\" + secondValue + \")\";\n } else if (typeof firstValue === 'number' && typeof secondValue === 'number' && typeof thirdValue === 'number' && typeof fourthValue === 'number') {\n return fourthValue >= 1 ? rgb(firstValue, secondValue, thirdValue) : \"rgba(\" + firstValue + \",\" + secondValue + \",\" + thirdValue + \",\" + fourthValue + \")\";\n } else if (typeof firstValue === 'object' && secondValue === undefined && thirdValue === undefined && fourthValue === undefined) {\n return firstValue.alpha >= 1 ? rgb(firstValue.red, firstValue.green, firstValue.blue) : \"rgba(\" + firstValue.red + \",\" + firstValue.green + \",\" + firstValue.blue + \",\" + firstValue.alpha + \")\";\n }\n throw new PolishedError(7);\n}\n\nvar isRgb = function isRgb(color) {\n return typeof color.red === 'number' && typeof color.green === 'number' && typeof color.blue === 'number' && (typeof color.alpha !== 'number' || typeof color.alpha === 'undefined');\n};\nvar isRgba = function isRgba(color) {\n return typeof color.red === 'number' && typeof color.green === 'number' && typeof color.blue === 'number' && typeof color.alpha === 'number';\n};\nvar isHsl = function isHsl(color) {\n return typeof color.hue === 'number' && typeof color.saturation === 'number' && typeof color.lightness === 'number' && (typeof color.alpha !== 'number' || typeof color.alpha === 'undefined');\n};\nvar isHsla = function isHsla(color) {\n return typeof color.hue === 'number' && typeof color.saturation === 'number' && typeof color.lightness === 'number' && typeof color.alpha === 'number';\n};\n\n/**\n * Converts a RgbColor, RgbaColor, HslColor or HslaColor object to a color string.\n * This util is useful in case you only know on runtime which color object is\n * used. Otherwise we recommend to rely on `rgb`, `rgba`, `hsl` or `hsla`.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: toColorString({ red: 255, green: 205, blue: 100 }),\n * background: toColorString({ red: 255, green: 205, blue: 100, alpha: 0.72 }),\n * background: toColorString({ hue: 240, saturation: 1, lightness: 0.5 }),\n * background: toColorString({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0.72 }),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${toColorString({ red: 255, green: 205, blue: 100 })};\n * background: ${toColorString({ red: 255, green: 205, blue: 100, alpha: 0.72 })};\n * background: ${toColorString({ hue: 240, saturation: 1, lightness: 0.5 })};\n * background: ${toColorString({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0.72 })};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#ffcd64\";\n * background: \"rgba(255,205,100,0.72)\";\n * background: \"#00f\";\n * background: \"rgba(179,25,25,0.72)\";\n * }\n */\n\nfunction toColorString(color) {\n if (typeof color !== 'object') throw new PolishedError(8);\n if (isRgba(color)) return rgba(color);\n if (isRgb(color)) return rgb(color);\n if (isHsla(color)) return hsla(color);\n if (isHsl(color)) return hsl(color);\n throw new PolishedError(8);\n}\n\n// Type definitions taken from https://github.com/gcanti/flow-static-land/blob/master/src/Fun.js\n// eslint-disable-next-line no-unused-vars\n// eslint-disable-next-line no-unused-vars\n// eslint-disable-next-line no-redeclare\nfunction curried(f, length, acc) {\n return function fn() {\n // eslint-disable-next-line prefer-rest-params\n var combined = acc.concat(Array.prototype.slice.call(arguments));\n return combined.length >= length ? f.apply(this, combined) : curried(f, length, combined);\n };\n}\n\n// eslint-disable-next-line no-redeclare\nfunction curry(f) {\n // eslint-disable-line no-redeclare\n return curried(f, f.length, []);\n}\n\n/**\n * Changes the hue of the color. Hue is a number between 0 to 360. The first\n * argument for adjustHue is the amount of degrees the color is rotated around\n * the color wheel, always producing a positive hue value.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: adjustHue(180, '#448'),\n * background: adjustHue('180', 'rgba(101,100,205,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${adjustHue(180, '#448')};\n * background: ${adjustHue('180', 'rgba(101,100,205,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#888844\";\n * background: \"rgba(136,136,68,0.7)\";\n * }\n */\nfunction adjustHue(degree, color) {\n if (color === 'transparent') return color;\n var hslColor = parseToHsl(color);\n return toColorString(_extends({}, hslColor, {\n hue: hslColor.hue + parseFloat(degree)\n }));\n}\n\n// prettier-ignore\nvar curriedAdjustHue = curry /* :: */(adjustHue);\nvar curriedAdjustHue$1 = curriedAdjustHue;\n\n/**\n * Returns the complement of the provided color. This is identical to adjustHue(180, ).\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: complement('#448'),\n * background: complement('rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${complement('#448')};\n * background: ${complement('rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#884\";\n * background: \"rgba(153,153,153,0.7)\";\n * }\n */\nfunction complement(color) {\n if (color === 'transparent') return color;\n var hslColor = parseToHsl(color);\n return toColorString(_extends({}, hslColor, {\n hue: (hslColor.hue + 180) % 360\n }));\n}\n\nfunction guard(lowerBoundary, upperBoundary, value) {\n return Math.max(lowerBoundary, Math.min(upperBoundary, value));\n}\n\n/**\n * Returns a string value for the darkened color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: darken(0.2, '#FFCD64'),\n * background: darken('0.2', 'rgba(255,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${darken(0.2, '#FFCD64')};\n * background: ${darken('0.2', 'rgba(255,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#ffbd31\";\n * background: \"rgba(255,189,49,0.7)\";\n * }\n */\nfunction darken(amount, color) {\n if (color === 'transparent') return color;\n var hslColor = parseToHsl(color);\n return toColorString(_extends({}, hslColor, {\n lightness: guard(0, 1, hslColor.lightness - parseFloat(amount))\n }));\n}\n\n// prettier-ignore\nvar curriedDarken = curry /* :: */(darken);\nvar curriedDarken$1 = curriedDarken;\n\n/**\n * Decreases the intensity of a color. Its range is between 0 to 1. The first\n * argument of the desaturate function is the amount by how much the color\n * intensity should be decreased.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: desaturate(0.2, '#CCCD64'),\n * background: desaturate('0.2', 'rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${desaturate(0.2, '#CCCD64')};\n * background: ${desaturate('0.2', 'rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#b8b979\";\n * background: \"rgba(184,185,121,0.7)\";\n * }\n */\nfunction desaturate(amount, color) {\n if (color === 'transparent') return color;\n var hslColor = parseToHsl(color);\n return toColorString(_extends({}, hslColor, {\n saturation: guard(0, 1, hslColor.saturation - parseFloat(amount))\n }));\n}\n\n// prettier-ignore\nvar curriedDesaturate = curry /* :: */(desaturate);\nvar curriedDesaturate$1 = curriedDesaturate;\n\n/**\n * Returns a number (float) representing the luminance of a color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: getLuminance('#CCCD64') >= getLuminance('#0000ff') ? '#CCCD64' : '#0000ff',\n * background: getLuminance('rgba(58, 133, 255, 1)') >= getLuminance('rgba(255, 57, 149, 1)') ?\n * 'rgba(58, 133, 255, 1)' :\n * 'rgba(255, 57, 149, 1)',\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${getLuminance('#CCCD64') >= getLuminance('#0000ff') ? '#CCCD64' : '#0000ff'};\n * background: ${getLuminance('rgba(58, 133, 255, 1)') >= getLuminance('rgba(255, 57, 149, 1)') ?\n * 'rgba(58, 133, 255, 1)' :\n * 'rgba(255, 57, 149, 1)'};\n *\n * // CSS in JS Output\n *\n * div {\n * background: \"#CCCD64\";\n * background: \"rgba(58, 133, 255, 1)\";\n * }\n */\nfunction getLuminance(color) {\n if (color === 'transparent') return 0;\n var rgbColor = parseToRgb(color);\n var _Object$keys$map = Object.keys(rgbColor).map(function (key) {\n var channel = rgbColor[key] / 255;\n return channel <= 0.03928 ? channel / 12.92 : Math.pow((channel + 0.055) / 1.055, 2.4);\n }),\n r = _Object$keys$map[0],\n g = _Object$keys$map[1],\n b = _Object$keys$map[2];\n return parseFloat((0.2126 * r + 0.7152 * g + 0.0722 * b).toFixed(3));\n}\n\n/**\n * Returns the contrast ratio between two colors based on\n * [W3's recommended equation for calculating contrast](http://www.w3.org/TR/WCAG20/#contrast-ratiodef).\n *\n * @example\n * const contrastRatio = getContrast('#444', '#fff');\n */\nfunction getContrast(color1, color2) {\n var luminance1 = getLuminance(color1);\n var luminance2 = getLuminance(color2);\n return parseFloat((luminance1 > luminance2 ? (luminance1 + 0.05) / (luminance2 + 0.05) : (luminance2 + 0.05) / (luminance1 + 0.05)).toFixed(2));\n}\n\n/**\n * Converts the color to a grayscale, by reducing its saturation to 0.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: grayscale('#CCCD64'),\n * background: grayscale('rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${grayscale('#CCCD64')};\n * background: ${grayscale('rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#999\";\n * background: \"rgba(153,153,153,0.7)\";\n * }\n */\nfunction grayscale(color) {\n if (color === 'transparent') return color;\n return toColorString(_extends({}, parseToHsl(color), {\n saturation: 0\n }));\n}\n\n/**\n * Converts a HslColor or HslaColor object to a color string.\n * This util is useful in case you only know on runtime which color object is\n * used. Otherwise we recommend to rely on `hsl` or `hsla`.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: hslToColorString({ hue: 240, saturation: 1, lightness: 0.5 }),\n * background: hslToColorString({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0.72 }),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${hslToColorString({ hue: 240, saturation: 1, lightness: 0.5 })};\n * background: ${hslToColorString({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0.72 })};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#00f\";\n * background: \"rgba(179,25,25,0.72)\";\n * }\n */\nfunction hslToColorString(color) {\n if (typeof color === 'object' && typeof color.hue === 'number' && typeof color.saturation === 'number' && typeof color.lightness === 'number') {\n if (color.alpha && typeof color.alpha === 'number') {\n return hsla({\n hue: color.hue,\n saturation: color.saturation,\n lightness: color.lightness,\n alpha: color.alpha\n });\n }\n return hsl({\n hue: color.hue,\n saturation: color.saturation,\n lightness: color.lightness\n });\n }\n throw new PolishedError(45);\n}\n\n/**\n * Inverts the red, green and blue values of a color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: invert('#CCCD64'),\n * background: invert('rgba(101,100,205,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${invert('#CCCD64')};\n * background: ${invert('rgba(101,100,205,0.7)')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#33329b\";\n * background: \"rgba(154,155,50,0.7)\";\n * }\n */\nfunction invert(color) {\n if (color === 'transparent') return color;\n // parse color string to rgb\n var value = parseToRgb(color);\n return toColorString(_extends({}, value, {\n red: 255 - value.red,\n green: 255 - value.green,\n blue: 255 - value.blue\n }));\n}\n\n/**\n * Returns a string value for the lightened color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: lighten(0.2, '#CCCD64'),\n * background: lighten('0.2', 'rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${lighten(0.2, '#FFCD64')};\n * background: ${lighten('0.2', 'rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#e5e6b1\";\n * background: \"rgba(229,230,177,0.7)\";\n * }\n */\nfunction lighten(amount, color) {\n if (color === 'transparent') return color;\n var hslColor = parseToHsl(color);\n return toColorString(_extends({}, hslColor, {\n lightness: guard(0, 1, hslColor.lightness + parseFloat(amount))\n }));\n}\n\n// prettier-ignore\nvar curriedLighten = curry /* :: */(lighten);\nvar curriedLighten$1 = curriedLighten;\n\n/**\n * Determines which contrast guidelines have been met for two colors.\n * Based on the [contrast calculations recommended by W3](https://www.w3.org/WAI/WCAG21/Understanding/contrast-enhanced.html).\n *\n * @example\n * const scores = meetsContrastGuidelines('#444', '#fff');\n */\nfunction meetsContrastGuidelines(color1, color2) {\n var contrastRatio = getContrast(color1, color2);\n return {\n AA: contrastRatio >= 4.5,\n AALarge: contrastRatio >= 3,\n AAA: contrastRatio >= 7,\n AAALarge: contrastRatio >= 4.5\n };\n}\n\n/**\n * Mixes the two provided colors together by calculating the average of each of the RGB components weighted to the first color by the provided weight.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: mix(0.5, '#f00', '#00f')\n * background: mix(0.25, '#f00', '#00f')\n * background: mix('0.5', 'rgba(255, 0, 0, 0.5)', '#00f')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${mix(0.5, '#f00', '#00f')};\n * background: ${mix(0.25, '#f00', '#00f')};\n * background: ${mix('0.5', 'rgba(255, 0, 0, 0.5)', '#00f')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#7f007f\";\n * background: \"#3f00bf\";\n * background: \"rgba(63, 0, 191, 0.75)\";\n * }\n */\nfunction mix(weight, color, otherColor) {\n if (color === 'transparent') return otherColor;\n if (otherColor === 'transparent') return color;\n if (weight === 0) return otherColor;\n var parsedColor1 = parseToRgb(color);\n var color1 = _extends({}, parsedColor1, {\n alpha: typeof parsedColor1.alpha === 'number' ? parsedColor1.alpha : 1\n });\n var parsedColor2 = parseToRgb(otherColor);\n var color2 = _extends({}, parsedColor2, {\n alpha: typeof parsedColor2.alpha === 'number' ? parsedColor2.alpha : 1\n });\n\n // The formula is copied from the original Sass implementation:\n // http://sass-lang.com/documentation/Sass/Script/Functions.html#mix-instance_method\n var alphaDelta = color1.alpha - color2.alpha;\n var x = parseFloat(weight) * 2 - 1;\n var y = x * alphaDelta === -1 ? x : x + alphaDelta;\n var z = 1 + x * alphaDelta;\n var weight1 = (y / z + 1) / 2.0;\n var weight2 = 1 - weight1;\n var mixedColor = {\n red: Math.floor(color1.red * weight1 + color2.red * weight2),\n green: Math.floor(color1.green * weight1 + color2.green * weight2),\n blue: Math.floor(color1.blue * weight1 + color2.blue * weight2),\n alpha: color1.alpha * parseFloat(weight) + color2.alpha * (1 - parseFloat(weight))\n };\n return rgba(mixedColor);\n}\n\n// prettier-ignore\nvar curriedMix = curry /* :: */(mix);\nvar mix$1 = curriedMix;\n\n/**\n * Increases the opacity of a color. Its range for the amount is between 0 to 1.\n *\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: opacify(0.1, 'rgba(255, 255, 255, 0.9)');\n * background: opacify(0.2, 'hsla(0, 0%, 100%, 0.5)'),\n * background: opacify('0.5', 'rgba(255, 0, 0, 0.2)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${opacify(0.1, 'rgba(255, 255, 255, 0.9)')};\n * background: ${opacify(0.2, 'hsla(0, 0%, 100%, 0.5)')},\n * background: ${opacify('0.5', 'rgba(255, 0, 0, 0.2)')},\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#fff\";\n * background: \"rgba(255,255,255,0.7)\";\n * background: \"rgba(255,0,0,0.7)\";\n * }\n */\nfunction opacify(amount, color) {\n if (color === 'transparent') return color;\n var parsedColor = parseToRgb(color);\n var alpha = typeof parsedColor.alpha === 'number' ? parsedColor.alpha : 1;\n var colorWithAlpha = _extends({}, parsedColor, {\n alpha: guard(0, 1, (alpha * 100 + parseFloat(amount) * 100) / 100)\n });\n return rgba(colorWithAlpha);\n}\n\n// prettier-ignore\nvar curriedOpacify = curry /* :: */(opacify);\nvar curriedOpacify$1 = curriedOpacify;\n\nvar defaultReturnIfLightColor = '#000';\nvar defaultReturnIfDarkColor = '#fff';\n\n/**\n * Returns black or white (or optional passed colors) for best\n * contrast depending on the luminosity of the given color.\n * When passing custom return colors, strict mode ensures that the\n * return color always meets or exceeds WCAG level AA or greater. If this test\n * fails, the default return color (black or white) is returned in place of the\n * custom return color. You can optionally turn off strict mode.\n *\n * Follows [W3C specs for readability](https://www.w3.org/TR/WCAG20-TECHS/G18.html).\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * color: readableColor('#000'),\n * color: readableColor('black', '#001', '#ff8'),\n * color: readableColor('white', '#001', '#ff8'),\n * color: readableColor('red', '#333', '#ddd', true)\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * color: ${readableColor('#000')};\n * color: ${readableColor('black', '#001', '#ff8')};\n * color: ${readableColor('white', '#001', '#ff8')};\n * color: ${readableColor('red', '#333', '#ddd', true)};\n * `\n *\n * // CSS in JS Output\n * element {\n * color: \"#fff\";\n * color: \"#ff8\";\n * color: \"#001\";\n * color: \"#000\";\n * }\n */\nfunction readableColor(color, returnIfLightColor, returnIfDarkColor, strict) {\n if (returnIfLightColor === void 0) {\n returnIfLightColor = defaultReturnIfLightColor;\n }\n if (returnIfDarkColor === void 0) {\n returnIfDarkColor = defaultReturnIfDarkColor;\n }\n if (strict === void 0) {\n strict = true;\n }\n var isColorLight = getLuminance(color) > 0.179;\n var preferredReturnColor = isColorLight ? returnIfLightColor : returnIfDarkColor;\n if (!strict || getContrast(color, preferredReturnColor) >= 4.5) {\n return preferredReturnColor;\n }\n return isColorLight ? defaultReturnIfLightColor : defaultReturnIfDarkColor;\n}\n\n/**\n * Converts a RgbColor or RgbaColor object to a color string.\n * This util is useful in case you only know on runtime which color object is\n * used. Otherwise we recommend to rely on `rgb` or `rgba`.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: rgbToColorString({ red: 255, green: 205, blue: 100 }),\n * background: rgbToColorString({ red: 255, green: 205, blue: 100, alpha: 0.72 }),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${rgbToColorString({ red: 255, green: 205, blue: 100 })};\n * background: ${rgbToColorString({ red: 255, green: 205, blue: 100, alpha: 0.72 })};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#ffcd64\";\n * background: \"rgba(255,205,100,0.72)\";\n * }\n */\nfunction rgbToColorString(color) {\n if (typeof color === 'object' && typeof color.red === 'number' && typeof color.green === 'number' && typeof color.blue === 'number') {\n if (typeof color.alpha === 'number') {\n return rgba({\n red: color.red,\n green: color.green,\n blue: color.blue,\n alpha: color.alpha\n });\n }\n return rgb({\n red: color.red,\n green: color.green,\n blue: color.blue\n });\n }\n throw new PolishedError(46);\n}\n\n/**\n * Increases the intensity of a color. Its range is between 0 to 1. The first\n * argument of the saturate function is the amount by how much the color\n * intensity should be increased.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: saturate(0.2, '#CCCD64'),\n * background: saturate('0.2', 'rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${saturate(0.2, '#FFCD64')};\n * background: ${saturate('0.2', 'rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#e0e250\";\n * background: \"rgba(224,226,80,0.7)\";\n * }\n */\nfunction saturate(amount, color) {\n if (color === 'transparent') return color;\n var hslColor = parseToHsl(color);\n return toColorString(_extends({}, hslColor, {\n saturation: guard(0, 1, hslColor.saturation + parseFloat(amount))\n }));\n}\n\n// prettier-ignore\nvar curriedSaturate = curry /* :: */(saturate);\nvar curriedSaturate$1 = curriedSaturate;\n\n/**\n * Sets the hue of a color to the provided value. The hue range can be\n * from 0 and 359.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: setHue(42, '#CCCD64'),\n * background: setHue('244', 'rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${setHue(42, '#CCCD64')};\n * background: ${setHue('244', 'rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#cdae64\";\n * background: \"rgba(107,100,205,0.7)\";\n * }\n */\nfunction setHue(hue, color) {\n if (color === 'transparent') return color;\n return toColorString(_extends({}, parseToHsl(color), {\n hue: parseFloat(hue)\n }));\n}\n\n// prettier-ignore\nvar curriedSetHue = curry /* :: */(setHue);\nvar curriedSetHue$1 = curriedSetHue;\n\n/**\n * Sets the lightness of a color to the provided value. The lightness range can be\n * from 0 and 1.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: setLightness(0.2, '#CCCD64'),\n * background: setLightness('0.75', 'rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${setLightness(0.2, '#CCCD64')};\n * background: ${setLightness('0.75', 'rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#4d4d19\";\n * background: \"rgba(223,224,159,0.7)\";\n * }\n */\nfunction setLightness(lightness, color) {\n if (color === 'transparent') return color;\n return toColorString(_extends({}, parseToHsl(color), {\n lightness: parseFloat(lightness)\n }));\n}\n\n// prettier-ignore\nvar curriedSetLightness = curry /* :: */(setLightness);\nvar curriedSetLightness$1 = curriedSetLightness;\n\n/**\n * Sets the saturation of a color to the provided value. The saturation range can be\n * from 0 and 1.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: setSaturation(0.2, '#CCCD64'),\n * background: setSaturation('0.75', 'rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${setSaturation(0.2, '#CCCD64')};\n * background: ${setSaturation('0.75', 'rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#adad84\";\n * background: \"rgba(228,229,76,0.7)\";\n * }\n */\nfunction setSaturation(saturation, color) {\n if (color === 'transparent') return color;\n return toColorString(_extends({}, parseToHsl(color), {\n saturation: parseFloat(saturation)\n }));\n}\n\n// prettier-ignore\nvar curriedSetSaturation = curry /* :: */(setSaturation);\nvar curriedSetSaturation$1 = curriedSetSaturation;\n\n/**\n * Shades a color by mixing it with black. `shade` can produce\n * hue shifts, where as `darken` manipulates the luminance channel and therefore\n * doesn't produce hue shifts.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: shade(0.25, '#00f')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${shade(0.25, '#00f')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#00003f\";\n * }\n */\n\nfunction shade(percentage, color) {\n if (color === 'transparent') return color;\n return mix$1(parseFloat(percentage), 'rgb(0, 0, 0)', color);\n}\n\n// prettier-ignore\nvar curriedShade = curry /* :: */(shade);\nvar curriedShade$1 = curriedShade;\n\n/**\n * Tints a color by mixing it with white. `tint` can produce\n * hue shifts, where as `lighten` manipulates the luminance channel and therefore\n * doesn't produce hue shifts.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: tint(0.25, '#00f')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${tint(0.25, '#00f')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#bfbfff\";\n * }\n */\n\nfunction tint(percentage, color) {\n if (color === 'transparent') return color;\n return mix$1(parseFloat(percentage), 'rgb(255, 255, 255)', color);\n}\n\n// prettier-ignore\nvar curriedTint = curry /* :: */(tint);\nvar curriedTint$1 = curriedTint;\n\n/**\n * Decreases the opacity of a color. Its range for the amount is between 0 to 1.\n *\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: transparentize(0.1, '#fff'),\n * background: transparentize(0.2, 'hsl(0, 0%, 100%)'),\n * background: transparentize('0.5', 'rgba(255, 0, 0, 0.8)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${transparentize(0.1, '#fff')};\n * background: ${transparentize(0.2, 'hsl(0, 0%, 100%)')};\n * background: ${transparentize('0.5', 'rgba(255, 0, 0, 0.8)')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"rgba(255,255,255,0.9)\";\n * background: \"rgba(255,255,255,0.8)\";\n * background: \"rgba(255,0,0,0.3)\";\n * }\n */\nfunction transparentize(amount, color) {\n if (color === 'transparent') return color;\n var parsedColor = parseToRgb(color);\n var alpha = typeof parsedColor.alpha === 'number' ? parsedColor.alpha : 1;\n var colorWithAlpha = _extends({}, parsedColor, {\n alpha: guard(0, 1, +(alpha * 100 - parseFloat(amount) * 100).toFixed(2) / 100)\n });\n return rgba(colorWithAlpha);\n}\n\n// prettier-ignore\nvar curriedTransparentize = curry /* :: */(transparentize);\nvar curriedTransparentize$1 = curriedTransparentize;\n\n/**\n * Shorthand for easily setting the animation property. Allows either multiple arrays with animations\n * or a single animation spread over the arguments.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...animation(['rotate', '1s', 'ease-in-out'], ['colorchange', '2s'])\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${animation(['rotate', '1s', 'ease-in-out'], ['colorchange', '2s'])}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'animation': 'rotate 1s ease-in-out, colorchange 2s'\n * }\n * @example\n * // Styles as object usage\n * const styles = {\n * ...animation('rotate', '1s', 'ease-in-out')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${animation('rotate', '1s', 'ease-in-out')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'animation': 'rotate 1s ease-in-out'\n * }\n */\nfunction animation() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n // Allow single or multiple animations passed\n var multiMode = Array.isArray(args[0]);\n if (!multiMode && args.length > 8) {\n throw new PolishedError(64);\n }\n var code = args.map(function (arg) {\n if (multiMode && !Array.isArray(arg) || !multiMode && Array.isArray(arg)) {\n throw new PolishedError(65);\n }\n if (Array.isArray(arg) && arg.length > 8) {\n throw new PolishedError(66);\n }\n return Array.isArray(arg) ? arg.join(' ') : arg;\n }).join(', ');\n return {\n animation: code\n };\n}\n\n/**\n * Shorthand that accepts any number of backgroundImage values as parameters for creating a single background statement.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...backgroundImages('url(\"/image/background.jpg\")', 'linear-gradient(red, green)')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${backgroundImages('url(\"/image/background.jpg\")', 'linear-gradient(red, green)')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'backgroundImage': 'url(\"/image/background.jpg\"), linear-gradient(red, green)'\n * }\n */\nfunction backgroundImages() {\n for (var _len = arguments.length, properties = new Array(_len), _key = 0; _key < _len; _key++) {\n properties[_key] = arguments[_key];\n }\n return {\n backgroundImage: properties.join(', ')\n };\n}\n\n/**\n * Shorthand that accepts any number of background values as parameters for creating a single background statement.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...backgrounds('url(\"/image/background.jpg\")', 'linear-gradient(red, green)', 'center no-repeat')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${backgrounds('url(\"/image/background.jpg\")', 'linear-gradient(red, green)', 'center no-repeat')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'background': 'url(\"/image/background.jpg\"), linear-gradient(red, green), center no-repeat'\n * }\n */\nfunction backgrounds() {\n for (var _len = arguments.length, properties = new Array(_len), _key = 0; _key < _len; _key++) {\n properties[_key] = arguments[_key];\n }\n return {\n background: properties.join(', ')\n };\n}\n\nvar sideMap = ['top', 'right', 'bottom', 'left'];\n\n/**\n * Shorthand for the border property that splits out individual properties for use with tools like Fela and Styletron. A side keyword can optionally be passed to target only one side's border properties.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...border('1px', 'solid', 'red')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${border('1px', 'solid', 'red')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'borderColor': 'red',\n * 'borderStyle': 'solid',\n * 'borderWidth': `1px`,\n * }\n *\n * // Styles as object usage\n * const styles = {\n * ...border('top', '1px', 'solid', 'red')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${border('top', '1px', 'solid', 'red')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'borderTopColor': 'red',\n * 'borderTopStyle': 'solid',\n * 'borderTopWidth': `1px`,\n * }\n */\n\nfunction border(sideKeyword) {\n for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n values[_key - 1] = arguments[_key];\n }\n if (typeof sideKeyword === 'string' && sideMap.indexOf(sideKeyword) >= 0) {\n var _ref;\n return _ref = {}, _ref[\"border\" + capitalizeString(sideKeyword) + \"Width\"] = values[0], _ref[\"border\" + capitalizeString(sideKeyword) + \"Style\"] = values[1], _ref[\"border\" + capitalizeString(sideKeyword) + \"Color\"] = values[2], _ref;\n } else {\n values.unshift(sideKeyword);\n return {\n borderWidth: values[0],\n borderStyle: values[1],\n borderColor: values[2]\n };\n }\n}\n\n/**\n * Shorthand that accepts up to four values, including null to skip a value, and maps them to their respective directions.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...borderColor('red', 'green', 'blue', 'yellow')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${borderColor('red', 'green', 'blue', 'yellow')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'borderTopColor': 'red',\n * 'borderRightColor': 'green',\n * 'borderBottomColor': 'blue',\n * 'borderLeftColor': 'yellow'\n * }\n */\nfunction borderColor() {\n for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n values[_key] = arguments[_key];\n }\n return directionalProperty.apply(void 0, ['borderColor'].concat(values));\n}\n\n/**\n * Shorthand that accepts a value for side and a value for radius and applies the radius value to both corners of the side.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...borderRadius('top', '5px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${borderRadius('top', '5px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'borderTopRightRadius': '5px',\n * 'borderTopLeftRadius': '5px',\n * }\n */\nfunction borderRadius(side, radius) {\n var uppercaseSide = capitalizeString(side);\n if (!radius && radius !== 0) {\n throw new PolishedError(62);\n }\n if (uppercaseSide === 'Top' || uppercaseSide === 'Bottom') {\n var _ref;\n return _ref = {}, _ref[\"border\" + uppercaseSide + \"RightRadius\"] = radius, _ref[\"border\" + uppercaseSide + \"LeftRadius\"] = radius, _ref;\n }\n if (uppercaseSide === 'Left' || uppercaseSide === 'Right') {\n var _ref2;\n return _ref2 = {}, _ref2[\"borderTop\" + uppercaseSide + \"Radius\"] = radius, _ref2[\"borderBottom\" + uppercaseSide + \"Radius\"] = radius, _ref2;\n }\n throw new PolishedError(63);\n}\n\n/**\n * Shorthand that accepts up to four values, including null to skip a value, and maps them to their respective directions.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...borderStyle('solid', 'dashed', 'dotted', 'double')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${borderStyle('solid', 'dashed', 'dotted', 'double')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'borderTopStyle': 'solid',\n * 'borderRightStyle': 'dashed',\n * 'borderBottomStyle': 'dotted',\n * 'borderLeftStyle': 'double'\n * }\n */\nfunction borderStyle() {\n for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n values[_key] = arguments[_key];\n }\n return directionalProperty.apply(void 0, ['borderStyle'].concat(values));\n}\n\n/**\n * Shorthand that accepts up to four values, including null to skip a value, and maps them to their respective directions.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...borderWidth('12px', '24px', '36px', '48px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${borderWidth('12px', '24px', '36px', '48px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'borderTopWidth': '12px',\n * 'borderRightWidth': '24px',\n * 'borderBottomWidth': '36px',\n * 'borderLeftWidth': '48px'\n * }\n */\nfunction borderWidth() {\n for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n values[_key] = arguments[_key];\n }\n return directionalProperty.apply(void 0, ['borderWidth'].concat(values));\n}\n\nfunction generateSelectors(template, state) {\n var stateSuffix = state ? \":\" + state : '';\n return template(stateSuffix);\n}\n\n/**\n * Function helper that adds an array of states to a template of selectors. Used in textInputs and buttons.\n * @private\n */\nfunction statefulSelectors(states, template, stateMap) {\n if (!template) throw new PolishedError(67);\n if (states.length === 0) return generateSelectors(template, null);\n var selectors = [];\n for (var i = 0; i < states.length; i += 1) {\n if (stateMap && stateMap.indexOf(states[i]) < 0) {\n throw new PolishedError(68);\n }\n selectors.push(generateSelectors(template, states[i]));\n }\n selectors = selectors.join(',');\n return selectors;\n}\n\nvar stateMap$1 = [undefined, null, 'active', 'focus', 'hover'];\nfunction template$1(state) {\n return \"button\" + state + \",\\n input[type=\\\"button\\\"]\" + state + \",\\n input[type=\\\"reset\\\"]\" + state + \",\\n input[type=\\\"submit\\\"]\" + state;\n}\n\n/**\n * Populates selectors that target all buttons. You can pass optional states to append to the selectors.\n * @example\n * // Styles as object usage\n * const styles = {\n * [buttons('active')]: {\n * 'border': 'none'\n * }\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * > ${buttons('active')} {\n * border: none;\n * }\n * `\n *\n * // CSS in JS Output\n *\n * 'button:active,\n * 'input[type=\"button\"]:active,\n * 'input[type=\\\"reset\\\"]:active,\n * 'input[type=\\\"submit\\\"]:active: {\n * 'border': 'none'\n * }\n */\nfunction buttons() {\n for (var _len = arguments.length, states = new Array(_len), _key = 0; _key < _len; _key++) {\n states[_key] = arguments[_key];\n }\n return statefulSelectors(states, template$1, stateMap$1);\n}\n\n/**\n * Shorthand that accepts up to four values, including null to skip a value, and maps them to their respective directions.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...margin('12px', '24px', '36px', '48px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${margin('12px', '24px', '36px', '48px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'marginTop': '12px',\n * 'marginRight': '24px',\n * 'marginBottom': '36px',\n * 'marginLeft': '48px'\n * }\n */\nfunction margin() {\n for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n values[_key] = arguments[_key];\n }\n return directionalProperty.apply(void 0, ['margin'].concat(values));\n}\n\n/**\n * Shorthand that accepts up to four values, including null to skip a value, and maps them to their respective directions.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...padding('12px', '24px', '36px', '48px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${padding('12px', '24px', '36px', '48px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'paddingTop': '12px',\n * 'paddingRight': '24px',\n * 'paddingBottom': '36px',\n * 'paddingLeft': '48px'\n * }\n */\nfunction padding() {\n for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n values[_key] = arguments[_key];\n }\n return directionalProperty.apply(void 0, ['padding'].concat(values));\n}\n\nvar positionMap = ['absolute', 'fixed', 'relative', 'static', 'sticky'];\n\n/**\n * Shorthand accepts up to five values, including null to skip a value, and maps them to their respective directions. The first value can optionally be a position keyword.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...position('12px', '24px', '36px', '48px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${position('12px', '24px', '36px', '48px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'top': '12px',\n * 'right': '24px',\n * 'bottom': '36px',\n * 'left': '48px'\n * }\n *\n * // Styles as object usage\n * const styles = {\n * ...position('absolute', '12px', '24px', '36px', '48px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${position('absolute', '12px', '24px', '36px', '48px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'position': 'absolute',\n * 'top': '12px',\n * 'right': '24px',\n * 'bottom': '36px',\n * 'left': '48px'\n * }\n */\nfunction position(firstValue) {\n for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n values[_key - 1] = arguments[_key];\n }\n if (positionMap.indexOf(firstValue) >= 0 && firstValue) {\n return _extends({}, directionalProperty.apply(void 0, [''].concat(values)), {\n position: firstValue\n });\n } else {\n return directionalProperty.apply(void 0, ['', firstValue].concat(values));\n }\n}\n\n/**\n * Shorthand to set the height and width properties in a single statement.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...size('300px', '250px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${size('300px', '250px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'height': '300px',\n * 'width': '250px',\n * }\n */\nfunction size(height, width) {\n if (width === void 0) {\n width = height;\n }\n return {\n height: height,\n width: width\n };\n}\n\nvar stateMap = [undefined, null, 'active', 'focus', 'hover'];\nfunction template(state) {\n return \"input[type=\\\"color\\\"]\" + state + \",\\n input[type=\\\"date\\\"]\" + state + \",\\n input[type=\\\"datetime\\\"]\" + state + \",\\n input[type=\\\"datetime-local\\\"]\" + state + \",\\n input[type=\\\"email\\\"]\" + state + \",\\n input[type=\\\"month\\\"]\" + state + \",\\n input[type=\\\"number\\\"]\" + state + \",\\n input[type=\\\"password\\\"]\" + state + \",\\n input[type=\\\"search\\\"]\" + state + \",\\n input[type=\\\"tel\\\"]\" + state + \",\\n input[type=\\\"text\\\"]\" + state + \",\\n input[type=\\\"time\\\"]\" + state + \",\\n input[type=\\\"url\\\"]\" + state + \",\\n input[type=\\\"week\\\"]\" + state + \",\\n input:not([type])\" + state + \",\\n textarea\" + state;\n}\n\n/**\n * Populates selectors that target all text inputs. You can pass optional states to append to the selectors.\n * @example\n * // Styles as object usage\n * const styles = {\n * [textInputs('active')]: {\n * 'border': 'none'\n * }\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * > ${textInputs('active')} {\n * border: none;\n * }\n * `\n *\n * // CSS in JS Output\n *\n * 'input[type=\"color\"]:active,\n * input[type=\"date\"]:active,\n * input[type=\"datetime\"]:active,\n * input[type=\"datetime-local\"]:active,\n * input[type=\"email\"]:active,\n * input[type=\"month\"]:active,\n * input[type=\"number\"]:active,\n * input[type=\"password\"]:active,\n * input[type=\"search\"]:active,\n * input[type=\"tel\"]:active,\n * input[type=\"text\"]:active,\n * input[type=\"time\"]:active,\n * input[type=\"url\"]:active,\n * input[type=\"week\"]:active,\n * input:not([type]):active,\n * textarea:active': {\n * 'border': 'none'\n * }\n */\nfunction textInputs() {\n for (var _len = arguments.length, states = new Array(_len), _key = 0; _key < _len; _key++) {\n states[_key] = arguments[_key];\n }\n return statefulSelectors(states, template, stateMap);\n}\n\n/**\n * Accepts any number of transition values as parameters for creating a single transition statement. You may also pass an array of properties as the first parameter that you would like to apply the same transition values to (second parameter).\n * @example\n * // Styles as object usage\n * const styles = {\n * ...transitions('opacity 1.0s ease-in 0s', 'width 2.0s ease-in 2s'),\n * ...transitions(['color', 'background-color'], '2.0s ease-in 2s')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${transitions('opacity 1.0s ease-in 0s', 'width 2.0s ease-in 2s')};\n * ${transitions(['color', 'background-color'], '2.0s ease-in 2s'),};\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'transition': 'opacity 1.0s ease-in 0s, width 2.0s ease-in 2s'\n * 'transition': 'color 2.0s ease-in 2s, background-color 2.0s ease-in 2s',\n * }\n */\nfunction transitions() {\n for (var _len = arguments.length, properties = new Array(_len), _key = 0; _key < _len; _key++) {\n properties[_key] = arguments[_key];\n }\n if (Array.isArray(properties[0]) && properties.length === 2) {\n var value = properties[1];\n if (typeof value !== 'string') {\n throw new PolishedError(61);\n }\n var transitionsString = properties[0].map(function (property) {\n return property + \" \" + value;\n }).join(', ');\n return {\n transition: transitionsString\n };\n } else {\n return {\n transition: properties.join(', ')\n };\n }\n}\n\nexport { curriedAdjustHue$1 as adjustHue, animation, backgroundImages, backgrounds, between, border, borderColor, borderRadius, borderStyle, borderWidth, buttons, clearFix, complement, cover, cssVar, curriedDarken$1 as darken, curriedDesaturate$1 as desaturate, directionalProperty, easeIn, easeInOut, easeOut, ellipsis, em$1 as em, fluidRange, fontFace, getContrast, getLuminance, getValueAndUnit, grayscale, hiDPI, hideText, hideVisually, hsl, hslToColorString, hsla, important, invert, curriedLighten$1 as lighten, linearGradient, margin, math, meetsContrastGuidelines, mix$1 as mix, modularScale, normalize, curriedOpacify$1 as opacify, padding, parseToHsl, parseToRgb, position, radialGradient, readableColor, rem$1 as rem, remToPx, retinaImage, rgb, rgbToColorString, rgba, curriedSaturate$1 as saturate, curriedSetHue$1 as setHue, curriedSetLightness$1 as setLightness, curriedSetSaturation$1 as setSaturation, curriedShade$1 as shade, size, stripUnit, textInputs, timingFunctions, curriedTint$1 as tint, toColorString, transitions, curriedTransparentize$1 as transparentize, triangle, wordWrap };\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// 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}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\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 try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\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\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\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\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\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 if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\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) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (value === null || value === undefined || value.length === 0) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${encode(object.fragmentIdentifier, options)}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nvar Checkbox = /*#__PURE__*/function (_Component) {\n _inherits(Checkbox, _Component);\n\n var _super = _createSuper(Checkbox);\n\n function Checkbox(props) {\n var _this;\n\n _classCallCheck(this, Checkbox);\n\n _this = _super.call(this, props);\n\n _this.handleChange = function (e) {\n var _this$props = _this.props,\n disabled = _this$props.disabled,\n onChange = _this$props.onChange;\n\n if (disabled) {\n return;\n }\n\n if (!('checked' in _this.props)) {\n _this.setState({\n checked: e.target.checked\n });\n }\n\n if (onChange) {\n onChange({\n target: _objectSpread(_objectSpread({}, _this.props), {}, {\n checked: e.target.checked\n }),\n stopPropagation: function stopPropagation() {\n e.stopPropagation();\n },\n preventDefault: function preventDefault() {\n e.preventDefault();\n },\n nativeEvent: e.nativeEvent\n });\n }\n };\n\n _this.saveInput = function (node) {\n _this.input = node;\n };\n\n var checked = 'checked' in props ? props.checked : props.defaultChecked;\n _this.state = {\n checked: checked\n };\n return _this;\n }\n\n _createClass(Checkbox, [{\n key: \"focus\",\n value: function focus() {\n this.input.focus();\n }\n }, {\n key: \"blur\",\n value: function blur() {\n this.input.blur();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classNames;\n\n var _this$props2 = this.props,\n prefixCls = _this$props2.prefixCls,\n className = _this$props2.className,\n style = _this$props2.style,\n name = _this$props2.name,\n id = _this$props2.id,\n type = _this$props2.type,\n disabled = _this$props2.disabled,\n readOnly = _this$props2.readOnly,\n tabIndex = _this$props2.tabIndex,\n onClick = _this$props2.onClick,\n onFocus = _this$props2.onFocus,\n onBlur = _this$props2.onBlur,\n onKeyDown = _this$props2.onKeyDown,\n onKeyPress = _this$props2.onKeyPress,\n onKeyUp = _this$props2.onKeyUp,\n autoFocus = _this$props2.autoFocus,\n value = _this$props2.value,\n required = _this$props2.required,\n others = _objectWithoutProperties(_this$props2, [\"prefixCls\", \"className\", \"style\", \"name\", \"id\", \"type\", \"disabled\", \"readOnly\", \"tabIndex\", \"onClick\", \"onFocus\", \"onBlur\", \"onKeyDown\", \"onKeyPress\", \"onKeyUp\", \"autoFocus\", \"value\", \"required\"]);\n\n var globalProps = Object.keys(others).reduce(function (prev, key) {\n if (key.substr(0, 5) === 'aria-' || key.substr(0, 5) === 'data-' || key === 'role') {\n // eslint-disable-next-line no-param-reassign\n prev[key] = others[key];\n }\n\n return prev;\n }, {});\n var checked = this.state.checked;\n var classString = classNames(prefixCls, className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-checked\"), checked), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), disabled), _classNames));\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classString,\n style: style\n }, /*#__PURE__*/React.createElement(\"input\", _extends({\n name: name,\n id: id,\n type: type,\n required: required,\n readOnly: readOnly,\n disabled: disabled,\n tabIndex: tabIndex,\n className: \"\".concat(prefixCls, \"-input\"),\n checked: !!checked,\n onClick: onClick,\n onFocus: onFocus,\n onBlur: onBlur,\n onKeyUp: onKeyUp,\n onKeyDown: onKeyDown,\n onKeyPress: onKeyPress,\n onChange: this.handleChange,\n autoFocus: autoFocus,\n ref: this.saveInput,\n value: value\n }, globalProps)), /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-inner\")\n }));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, state) {\n if ('checked' in props) {\n return _objectSpread(_objectSpread({}, state), {}, {\n checked: props.checked\n });\n }\n\n return null;\n }\n }]);\n\n return Checkbox;\n}(Component);\n\nCheckbox.defaultProps = {\n prefixCls: 'rc-checkbox',\n className: '',\n style: {},\n type: 'checkbox',\n defaultChecked: false,\n onFocus: function onFocus() {},\n onBlur: function onBlur() {},\n onChange: function onChange() {},\n onKeyDown: function onKeyDown() {},\n onKeyPress: function onKeyPress() {},\n onKeyUp: function onKeyUp() {}\n};\nexport default Checkbox;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n\n/* eslint-disable no-underscore-dangle */\n\n/* eslint-disable react/prop-types */\nimport * as React from 'react';\nimport classnames from 'classnames';\nvar PanelContent = React.forwardRef(function (props, ref) {\n var _classnames;\n\n var prefixCls = props.prefixCls,\n forceRender = props.forceRender,\n className = props.className,\n style = props.style,\n children = props.children,\n isActive = props.isActive,\n role = props.role;\n\n var _React$useState = React.useState(isActive || forceRender),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n rendered = _React$useState2[0],\n setRendered = _React$useState2[1];\n\n React.useEffect(function () {\n if (forceRender || isActive) {\n setRendered(true);\n }\n }, [forceRender, isActive]);\n\n if (!rendered) {\n return null;\n }\n\n return React.createElement(\"div\", {\n ref: ref,\n className: classnames(\"\".concat(prefixCls, \"-content\"), (_classnames = {}, _defineProperty(_classnames, \"\".concat(prefixCls, \"-content-active\"), isActive), _defineProperty(_classnames, \"\".concat(prefixCls, \"-content-inactive\"), !isActive), _classnames), className),\n style: style,\n role: role\n }, React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-content-box\")\n }, children));\n});\nPanelContent.displayName = 'PanelContent';\nexport default PanelContent;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n\n/* eslint-disable react/prop-types */\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport shallowEqual from 'shallowequal';\nimport PanelContent from './PanelContent';\n\nvar CollapsePanel = /*#__PURE__*/function (_React$Component) {\n _inherits(CollapsePanel, _React$Component);\n\n var _super = _createSuper(CollapsePanel);\n\n function CollapsePanel() {\n var _this;\n\n _classCallCheck(this, CollapsePanel);\n\n _this = _super.apply(this, arguments);\n\n _this.handleItemClick = function () {\n var _this$props = _this.props,\n onItemClick = _this$props.onItemClick,\n panelKey = _this$props.panelKey;\n\n if (typeof onItemClick === 'function') {\n onItemClick(panelKey);\n }\n };\n\n _this.handleKeyPress = function (e) {\n if (e.key === 'Enter' || e.keyCode === 13 || e.which === 13) {\n _this.handleItemClick();\n }\n };\n\n return _this;\n }\n\n _createClass(CollapsePanel, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n return !shallowEqual(this.props, nextProps);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classNames,\n _classNames2,\n _this2 = this;\n\n var _this$props2 = this.props,\n className = _this$props2.className,\n id = _this$props2.id,\n style = _this$props2.style,\n prefixCls = _this$props2.prefixCls,\n header = _this$props2.header,\n headerClass = _this$props2.headerClass,\n children = _this$props2.children,\n isActive = _this$props2.isActive,\n showArrow = _this$props2.showArrow,\n destroyInactivePanel = _this$props2.destroyInactivePanel,\n accordion = _this$props2.accordion,\n forceRender = _this$props2.forceRender,\n openMotion = _this$props2.openMotion,\n expandIcon = _this$props2.expandIcon,\n extra = _this$props2.extra,\n collapsible = _this$props2.collapsible;\n var disabled = collapsible === 'disabled';\n var headerCls = classNames(\"\".concat(prefixCls, \"-header\"), (_classNames = {}, _defineProperty(_classNames, headerClass, headerClass), _defineProperty(_classNames, \"\".concat(prefixCls, \"-header-collapsible-only\"), collapsible === 'header'), _classNames));\n var itemCls = classNames((_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-item\"), true), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-item-active\"), isActive), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-item-disabled\"), disabled), _classNames2), className);\n var icon = React.createElement(\"i\", {\n className: \"arrow\"\n });\n\n if (showArrow && typeof expandIcon === 'function') {\n icon = expandIcon(this.props);\n }\n\n return React.createElement(\"div\", {\n className: itemCls,\n style: style,\n id: id\n }, React.createElement(\"div\", {\n className: headerCls,\n onClick: function onClick() {\n return collapsible !== 'header' && _this2.handleItemClick();\n },\n role: accordion ? 'tab' : 'button',\n tabIndex: disabled ? -1 : 0,\n \"aria-expanded\": isActive,\n onKeyPress: this.handleKeyPress\n }, showArrow && icon, collapsible === 'header' ? React.createElement(\"span\", {\n onClick: this.handleItemClick,\n className: \"\".concat(prefixCls, \"-header-text\")\n }, header) : header, extra && React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-extra\")\n }, extra)), React.createElement(CSSMotion, Object.assign({\n visible: isActive,\n leavedClassName: \"\".concat(prefixCls, \"-content-hidden\")\n }, openMotion, {\n forceRender: forceRender,\n removeOnLeave: destroyInactivePanel\n }), function (_ref, ref) {\n var motionClassName = _ref.className,\n motionStyle = _ref.style;\n return React.createElement(PanelContent, {\n ref: ref,\n prefixCls: prefixCls,\n className: motionClassName,\n style: motionStyle,\n isActive: isActive,\n forceRender: forceRender,\n role: accordion ? 'tabpanel' : null\n }, children);\n }));\n }\n }]);\n\n return CollapsePanel;\n}(React.Component);\n\nCollapsePanel.defaultProps = {\n showArrow: true,\n isActive: false,\n onItemClick: function onItemClick() {},\n headerClass: '',\n forceRender: false\n};\nexport default CollapsePanel;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n\n/* eslint-disable react/prop-types */\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport shallowEqual from 'shallowequal';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport CollapsePanel from './Panel';\n\nfunction getActiveKeysArray(activeKey) {\n var currentActiveKey = activeKey;\n\n if (!Array.isArray(currentActiveKey)) {\n currentActiveKey = currentActiveKey ? [currentActiveKey] : [];\n }\n\n return currentActiveKey.map(function (key) {\n return String(key);\n });\n}\n\nvar Collapse = /*#__PURE__*/function (_React$Component) {\n _inherits(Collapse, _React$Component);\n\n var _super = _createSuper(Collapse);\n\n function Collapse(props) {\n var _this;\n\n _classCallCheck(this, Collapse);\n\n _this = _super.call(this, props);\n\n _this.onClickItem = function (key) {\n var activeKey = _this.state.activeKey;\n\n if (_this.props.accordion) {\n activeKey = activeKey[0] === key ? [] : [key];\n } else {\n activeKey = _toConsumableArray(activeKey);\n var index = activeKey.indexOf(key);\n var isActive = index > -1;\n\n if (isActive) {\n // remove active state\n activeKey.splice(index, 1);\n } else {\n activeKey.push(key);\n }\n }\n\n _this.setActiveKey(activeKey);\n };\n\n _this.getNewChild = function (child, index) {\n if (!child) return null;\n var activeKey = _this.state.activeKey;\n var _this$props = _this.props,\n prefixCls = _this$props.prefixCls,\n openMotion = _this$props.openMotion,\n accordion = _this$props.accordion,\n rootDestroyInactivePanel = _this$props.destroyInactivePanel,\n expandIcon = _this$props.expandIcon,\n collapsible = _this$props.collapsible; // If there is no key provide, use the panel order as default key\n\n var key = child.key || String(index);\n var _child$props = child.props,\n header = _child$props.header,\n headerClass = _child$props.headerClass,\n destroyInactivePanel = _child$props.destroyInactivePanel,\n childCollapsible = _child$props.collapsible;\n var isActive = false;\n\n if (accordion) {\n isActive = activeKey[0] === key;\n } else {\n isActive = activeKey.indexOf(key) > -1;\n }\n\n var mergeCollapsible = childCollapsible !== null && childCollapsible !== void 0 ? childCollapsible : collapsible;\n var props = {\n key: key,\n panelKey: key,\n header: header,\n headerClass: headerClass,\n isActive: isActive,\n prefixCls: prefixCls,\n destroyInactivePanel: destroyInactivePanel !== null && destroyInactivePanel !== void 0 ? destroyInactivePanel : rootDestroyInactivePanel,\n openMotion: openMotion,\n accordion: accordion,\n children: child.props.children,\n onItemClick: mergeCollapsible === 'disabled' ? null : _this.onClickItem,\n expandIcon: expandIcon,\n collapsible: mergeCollapsible\n }; // https://github.com/ant-design/ant-design/issues/20479\n\n if (typeof child.type === 'string') {\n return child;\n }\n\n return React.cloneElement(child, props);\n };\n\n _this.getItems = function () {\n var children = _this.props.children;\n return toArray(children).map(_this.getNewChild);\n };\n\n _this.setActiveKey = function (activeKey) {\n if (!('activeKey' in _this.props)) {\n _this.setState({\n activeKey: activeKey\n });\n }\n\n _this.props.onChange(_this.props.accordion ? activeKey[0] : activeKey);\n };\n\n var activeKey = props.activeKey,\n defaultActiveKey = props.defaultActiveKey;\n var currentActiveKey = defaultActiveKey;\n\n if ('activeKey' in props) {\n currentActiveKey = activeKey;\n }\n\n _this.state = {\n activeKey: getActiveKeysArray(currentActiveKey)\n };\n return _this;\n }\n\n _createClass(Collapse, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n return !shallowEqual(this.props, nextProps) || !shallowEqual(this.state, nextState);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classNames;\n\n var _this$props2 = this.props,\n prefixCls = _this$props2.prefixCls,\n className = _this$props2.className,\n style = _this$props2.style,\n accordion = _this$props2.accordion;\n var collapseClassName = classNames((_classNames = {}, _defineProperty(_classNames, prefixCls, true), _defineProperty(_classNames, className, !!className), _classNames));\n return React.createElement(\"div\", {\n className: collapseClassName,\n style: style,\n role: accordion ? 'tablist' : null\n }, this.getItems());\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps) {\n var newState = {};\n\n if ('activeKey' in nextProps) {\n newState.activeKey = getActiveKeysArray(nextProps.activeKey);\n }\n\n return newState;\n }\n }]);\n\n return Collapse;\n}(React.Component);\n\nCollapse.defaultProps = {\n prefixCls: 'rc-collapse',\n onChange: function onChange() {},\n accordion: false,\n destroyInactivePanel: false\n};\nCollapse.Panel = CollapsePanel;\nexport default Collapse;","import Collapse from './Collapse';\nexport default Collapse;\nvar Panel = Collapse.Panel;\nexport { Panel };","var autoAdjustOverflow = {\n adjustX: 1,\n adjustY: 1\n};\nvar targetOffset = [0, 0];\nvar placements = {\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n topCenter: {\n points: ['bc', 'tc'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n topRight: {\n points: ['br', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n bottomCenter: {\n points: ['tc', 'bc'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n bottomRight: {\n points: ['tr', 'br'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n }\n};\nexport default placements;","import Dropdown from './Dropdown';\nexport default Dropdown;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport Trigger from 'rc-trigger';\nimport classNames from 'classnames';\nimport Placements from './placements';\n\nfunction Dropdown(props, ref) {\n var _props$arrow = props.arrow,\n arrow = _props$arrow === void 0 ? false : _props$arrow,\n _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-dropdown' : _props$prefixCls,\n transitionName = props.transitionName,\n animation = props.animation,\n align = props.align,\n _props$placement = props.placement,\n placement = _props$placement === void 0 ? 'bottomLeft' : _props$placement,\n _props$placements = props.placements,\n placements = _props$placements === void 0 ? Placements : _props$placements,\n getPopupContainer = props.getPopupContainer,\n showAction = props.showAction,\n hideAction = props.hideAction,\n overlayClassName = props.overlayClassName,\n overlayStyle = props.overlayStyle,\n visible = props.visible,\n _props$trigger = props.trigger,\n trigger = _props$trigger === void 0 ? ['hover'] : _props$trigger,\n otherProps = _objectWithoutProperties(props, [\"arrow\", \"prefixCls\", \"transitionName\", \"animation\", \"align\", \"placement\", \"placements\", \"getPopupContainer\", \"showAction\", \"hideAction\", \"overlayClassName\", \"overlayStyle\", \"visible\", \"trigger\"]);\n\n var _React$useState = React.useState(),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n triggerVisible = _React$useState2[0],\n setTriggerVisible = _React$useState2[1];\n\n var mergedVisible = 'visible' in props ? visible : triggerVisible;\n var triggerRef = React.useRef(null);\n React.useImperativeHandle(ref, function () {\n return triggerRef.current;\n });\n\n var getOverlayElement = function getOverlayElement() {\n var overlay = props.overlay;\n var overlayElement;\n\n if (typeof overlay === 'function') {\n overlayElement = overlay();\n } else {\n overlayElement = overlay;\n }\n\n return overlayElement;\n };\n\n var onClick = function onClick(e) {\n var onOverlayClick = props.onOverlayClick;\n var overlayProps = getOverlayElement().props;\n setTriggerVisible(false);\n\n if (onOverlayClick) {\n onOverlayClick(e);\n }\n\n if (overlayProps.onClick) {\n overlayProps.onClick(e);\n }\n };\n\n var onVisibleChange = function onVisibleChange(visible) {\n var onVisibleChange = props.onVisibleChange;\n setTriggerVisible(visible);\n\n if (typeof onVisibleChange === 'function') {\n onVisibleChange(visible);\n }\n };\n\n var getMenuElement = function getMenuElement() {\n var overlayElement = getOverlayElement();\n var extraOverlayProps = {\n prefixCls: \"\".concat(prefixCls, \"-menu\"),\n onClick: onClick\n };\n\n if (typeof overlayElement.type === 'string') {\n delete extraOverlayProps.prefixCls;\n }\n\n return React.createElement(React.Fragment, null, arrow && React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-arrow\")\n }), React.cloneElement(overlayElement, extraOverlayProps));\n };\n\n var getMenuElementOrLambda = function getMenuElementOrLambda() {\n var overlay = props.overlay;\n\n if (typeof overlay === 'function') {\n return getMenuElement;\n }\n\n return getMenuElement();\n };\n\n var getMinOverlayWidthMatchTrigger = function getMinOverlayWidthMatchTrigger() {\n var minOverlayWidthMatchTrigger = props.minOverlayWidthMatchTrigger,\n alignPoint = props.alignPoint;\n\n if ('minOverlayWidthMatchTrigger' in props) {\n return minOverlayWidthMatchTrigger;\n }\n\n return !alignPoint;\n };\n\n var getOpenClassName = function getOpenClassName() {\n var openClassName = props.openClassName;\n\n if (openClassName !== undefined) {\n return openClassName;\n }\n\n return \"\".concat(prefixCls, \"-open\");\n };\n\n var renderChildren = function renderChildren() {\n var children = props.children;\n var childrenProps = children.props ? children.props : {};\n var childClassName = classNames(childrenProps.className, getOpenClassName());\n return triggerVisible && children ? React.cloneElement(children, {\n className: childClassName\n }) : children;\n };\n\n var triggerHideAction = hideAction;\n\n if (!triggerHideAction && trigger.indexOf('contextMenu') !== -1) {\n triggerHideAction = ['click'];\n }\n\n return React.createElement(Trigger, Object.assign({}, otherProps, {\n prefixCls: prefixCls,\n ref: triggerRef,\n popupClassName: classNames(overlayClassName, _defineProperty({}, \"\".concat(prefixCls, \"-show-arrow\"), arrow)),\n popupStyle: overlayStyle,\n builtinPlacements: placements,\n action: trigger,\n showAction: showAction,\n hideAction: triggerHideAction || [],\n popupPlacement: placement,\n popupAlign: align,\n popupTransitionName: transitionName,\n popupAnimation: animation,\n popupVisible: mergedVisible,\n stretch: getMinOverlayWidthMatchTrigger() ? 'minWidth' : '',\n popup: getMenuElementOrLambda(),\n onPopupVisibleChange: onVisibleChange,\n getPopupContainer: getPopupContainer\n }), renderChildren());\n}\n\nexport default React.forwardRef(Dropdown);","import * as React from 'react';\nimport warning from \"rc-util/es/warning\";\nexport var HOOK_MARK = 'RC_FORM_INTERNAL_HOOKS'; // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\nvar warningFunc = function warningFunc() {\n warning(false, 'Can not find FormContext. Please make sure you wrap Field under Form.');\n};\n\nvar Context = /*#__PURE__*/React.createContext({\n getFieldValue: warningFunc,\n getFieldsValue: warningFunc,\n getFieldError: warningFunc,\n getFieldsError: warningFunc,\n isFieldsTouched: warningFunc,\n isFieldTouched: warningFunc,\n isFieldValidating: warningFunc,\n isFieldsValidating: warningFunc,\n resetFields: warningFunc,\n setFields: warningFunc,\n setFieldsValue: warningFunc,\n validateFields: warningFunc,\n submit: warningFunc,\n getInternalHooks: function getInternalHooks() {\n warningFunc();\n return {\n dispatch: warningFunc,\n initEntityValue: warningFunc,\n registerField: warningFunc,\n useSubscribe: warningFunc,\n setInitialValues: warningFunc,\n setCallbacks: warningFunc,\n getFields: warningFunc,\n setValidateMessages: warningFunc,\n setPreserve: warningFunc\n };\n }\n});\nexport default Context;","export function toArray(value) {\n if (value === undefined || value === null) {\n return [];\n }\n\n return Array.isArray(value) ? value : [value];\n}","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}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _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}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\n/* eslint no-console:0 */\nvar formatRegExp = /%[sdj%]/g;\nvar warning = function warning() {}; // don't print warning message when in production env or node runtime\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && typeof document !== 'undefined') {\n warning = function warning(type, errors) {\n if (typeof console !== 'undefined' && console.warn) {\n if (errors.every(function (e) {\n return typeof e === 'string';\n })) {\n console.warn(type, errors);\n }\n }\n };\n}\n\nfunction convertFieldsError(errors) {\n if (!errors || !errors.length) return null;\n var fields = {};\n errors.forEach(function (error) {\n var field = error.field;\n fields[field] = fields[field] || [];\n fields[field].push(error);\n });\n return fields;\n}\nfunction format() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var i = 1;\n var f = args[0];\n var len = args.length;\n\n if (typeof f === 'function') {\n return f.apply(null, args.slice(1));\n }\n\n if (typeof f === 'string') {\n var str = String(f).replace(formatRegExp, function (x) {\n if (x === '%%') {\n return '%';\n }\n\n if (i >= len) {\n return x;\n }\n\n switch (x) {\n case '%s':\n return String(args[i++]);\n\n case '%d':\n return Number(args[i++]);\n\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n\n break;\n\n default:\n return x;\n }\n });\n return str;\n }\n\n return f;\n}\n\nfunction isNativeStringType(type) {\n return type === 'string' || type === 'url' || type === 'hex' || type === 'email' || type === 'date' || type === 'pattern';\n}\n\nfunction isEmptyValue(value, type) {\n if (value === undefined || value === null) {\n return true;\n }\n\n if (type === 'array' && Array.isArray(value) && !value.length) {\n return true;\n }\n\n if (isNativeStringType(type) && typeof value === 'string' && !value) {\n return true;\n }\n\n return false;\n}\n\nfunction asyncParallelArray(arr, func, callback) {\n var results = [];\n var total = 0;\n var arrLength = arr.length;\n\n function count(errors) {\n results.push.apply(results, errors);\n total++;\n\n if (total === arrLength) {\n callback(results);\n }\n }\n\n arr.forEach(function (a) {\n func(a, count);\n });\n}\n\nfunction asyncSerialArray(arr, func, callback) {\n var index = 0;\n var arrLength = arr.length;\n\n function next(errors) {\n if (errors && errors.length) {\n callback(errors);\n return;\n }\n\n var original = index;\n index = index + 1;\n\n if (original < arrLength) {\n func(arr[original], next);\n } else {\n callback([]);\n }\n }\n\n next([]);\n}\n\nfunction flattenObjArr(objArr) {\n var ret = [];\n Object.keys(objArr).forEach(function (k) {\n ret.push.apply(ret, objArr[k]);\n });\n return ret;\n}\n\nvar AsyncValidationError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(AsyncValidationError, _Error);\n\n function AsyncValidationError(errors, fields) {\n var _this;\n\n _this = _Error.call(this, 'Async Validation Error') || this;\n _this.errors = errors;\n _this.fields = fields;\n return _this;\n }\n\n return AsyncValidationError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\nfunction asyncMap(objArr, option, func, callback) {\n if (option.first) {\n var _pending = new Promise(function (resolve, reject) {\n var next = function next(errors) {\n callback(errors);\n return errors.length ? reject(new AsyncValidationError(errors, convertFieldsError(errors))) : resolve();\n };\n\n var flattenArr = flattenObjArr(objArr);\n asyncSerialArray(flattenArr, func, next);\n });\n\n _pending[\"catch\"](function (e) {\n return e;\n });\n\n return _pending;\n }\n\n var firstFields = option.firstFields || [];\n\n if (firstFields === true) {\n firstFields = Object.keys(objArr);\n }\n\n var objArrKeys = Object.keys(objArr);\n var objArrLength = objArrKeys.length;\n var total = 0;\n var results = [];\n var pending = new Promise(function (resolve, reject) {\n var next = function next(errors) {\n results.push.apply(results, errors);\n total++;\n\n if (total === objArrLength) {\n callback(results);\n return results.length ? reject(new AsyncValidationError(results, convertFieldsError(results))) : resolve();\n }\n };\n\n if (!objArrKeys.length) {\n callback(results);\n resolve();\n }\n\n objArrKeys.forEach(function (key) {\n var arr = objArr[key];\n\n if (firstFields.indexOf(key) !== -1) {\n asyncSerialArray(arr, func, next);\n } else {\n asyncParallelArray(arr, func, next);\n }\n });\n });\n pending[\"catch\"](function (e) {\n return e;\n });\n return pending;\n}\nfunction complementError(rule) {\n return function (oe) {\n if (oe && oe.message) {\n oe.field = oe.field || rule.fullField;\n return oe;\n }\n\n return {\n message: typeof oe === 'function' ? oe() : oe,\n field: oe.field || rule.fullField\n };\n };\n}\nfunction deepMerge(target, source) {\n if (source) {\n for (var s in source) {\n if (source.hasOwnProperty(s)) {\n var value = source[s];\n\n if (typeof value === 'object' && typeof target[s] === 'object') {\n target[s] = _extends(_extends({}, target[s]), value);\n } else {\n target[s] = value;\n }\n }\n }\n }\n\n return target;\n}\n\n/**\n * Rule for validating required fields.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\n\nfunction required(rule, value, source, errors, options, type) {\n if (rule.required && (!source.hasOwnProperty(rule.field) || isEmptyValue(value, type || rule.type))) {\n errors.push(format(options.messages.required, rule.fullField));\n }\n}\n\n/**\n * Rule for validating whitespace.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\n\nfunction whitespace(rule, value, source, errors, options) {\n if (/^\\s+$/.test(value) || value === '') {\n errors.push(format(options.messages.whitespace, rule.fullField));\n }\n}\n\n/* eslint max-len:0 */\n\nvar pattern = {\n // http://emailregex.com/\n email: /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n url: new RegExp(\"^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\\\S+(?::\\\\S*)?@)?(?:(?:(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[0-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,})))|localhost)(?::\\\\d{2,5})?(?:(/|\\\\?|#)[^\\\\s]*)?$\", 'i'),\n hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i\n};\nvar types = {\n integer: function integer(value) {\n return types.number(value) && parseInt(value, 10) === value;\n },\n \"float\": function float(value) {\n return types.number(value) && !types.integer(value);\n },\n array: function array(value) {\n return Array.isArray(value);\n },\n regexp: function regexp(value) {\n if (value instanceof RegExp) {\n return true;\n }\n\n try {\n return !!new RegExp(value);\n } catch (e) {\n return false;\n }\n },\n date: function date(value) {\n return typeof value.getTime === 'function' && typeof value.getMonth === 'function' && typeof value.getYear === 'function' && !isNaN(value.getTime());\n },\n number: function number(value) {\n if (isNaN(value)) {\n return false;\n }\n\n return typeof value === 'number';\n },\n object: function object(value) {\n return typeof value === 'object' && !types.array(value);\n },\n method: function method(value) {\n return typeof value === 'function';\n },\n email: function email(value) {\n return typeof value === 'string' && !!value.match(pattern.email) && value.length < 255;\n },\n url: function url(value) {\n return typeof value === 'string' && !!value.match(pattern.url);\n },\n hex: function hex(value) {\n return typeof value === 'string' && !!value.match(pattern.hex);\n }\n};\n/**\n * Rule for validating the type of a value.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\n\nfunction type(rule, value, source, errors, options) {\n if (rule.required && value === undefined) {\n required(rule, value, source, errors, options);\n return;\n }\n\n var custom = ['integer', 'float', 'array', 'regexp', 'object', 'method', 'email', 'number', 'date', 'url', 'hex'];\n var ruleType = rule.type;\n\n if (custom.indexOf(ruleType) > -1) {\n if (!types[ruleType](value)) {\n errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));\n } // straight typeof check\n\n } else if (ruleType && typeof value !== rule.type) {\n errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));\n }\n}\n\n/**\n * Rule for validating minimum and maximum allowed values.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\n\nfunction range(rule, value, source, errors, options) {\n var len = typeof rule.len === 'number';\n var min = typeof rule.min === 'number';\n var max = typeof rule.max === 'number'; // 正则匹配码点范围从U+010000一直到U+10FFFF的文字(补充平面Supplementary Plane)\n\n var spRegexp = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n var val = value;\n var key = null;\n var num = typeof value === 'number';\n var str = typeof value === 'string';\n var arr = Array.isArray(value);\n\n if (num) {\n key = 'number';\n } else if (str) {\n key = 'string';\n } else if (arr) {\n key = 'array';\n } // if the value is not of a supported type for range validation\n // the validation rule rule should use the\n // type property to also test for a particular type\n\n\n if (!key) {\n return false;\n }\n\n if (arr) {\n val = value.length;\n }\n\n if (str) {\n // 处理码点大于U+010000的文字length属性不准确的bug,如\"𠮷𠮷𠮷\".lenght !== 3\n val = value.replace(spRegexp, '_').length;\n }\n\n if (len) {\n if (val !== rule.len) {\n errors.push(format(options.messages[key].len, rule.fullField, rule.len));\n }\n } else if (min && !max && val < rule.min) {\n errors.push(format(options.messages[key].min, rule.fullField, rule.min));\n } else if (max && !min && val > rule.max) {\n errors.push(format(options.messages[key].max, rule.fullField, rule.max));\n } else if (min && max && (val < rule.min || val > rule.max)) {\n errors.push(format(options.messages[key].range, rule.fullField, rule.min, rule.max));\n }\n}\n\nvar ENUM = 'enum';\n/**\n * Rule for validating a value exists in an enumerable list.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\n\nfunction enumerable(rule, value, source, errors, options) {\n rule[ENUM] = Array.isArray(rule[ENUM]) ? rule[ENUM] : [];\n\n if (rule[ENUM].indexOf(value) === -1) {\n errors.push(format(options.messages[ENUM], rule.fullField, rule[ENUM].join(', ')));\n }\n}\n\n/**\n * Rule for validating a regular expression pattern.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\n\nfunction pattern$1(rule, value, source, errors, options) {\n if (rule.pattern) {\n if (rule.pattern instanceof RegExp) {\n // if a RegExp instance is passed, reset `lastIndex` in case its `global`\n // flag is accidentally set to `true`, which in a validation scenario\n // is not necessary and the result might be misleading\n rule.pattern.lastIndex = 0;\n\n if (!rule.pattern.test(value)) {\n errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n }\n } else if (typeof rule.pattern === 'string') {\n var _pattern = new RegExp(rule.pattern);\n\n if (!_pattern.test(value)) {\n errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n }\n }\n }\n}\n\nvar rules = {\n required: required,\n whitespace: whitespace,\n type: type,\n range: range,\n \"enum\": enumerable,\n pattern: pattern$1\n};\n\n/**\n * Performs validation for string types.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\n\nfunction string(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value, 'string') && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options, 'string');\n\n if (!isEmptyValue(value, 'string')) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n rules.pattern(rule, value, source, errors, options);\n\n if (rule.whitespace === true) {\n rules.whitespace(rule, value, source, errors, options);\n }\n }\n }\n\n callback(errors);\n}\n\n/**\n * Validates a function.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\n\nfunction method(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n}\n\n/**\n * Validates a number.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\n\nfunction number(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (value === '') {\n value = undefined;\n }\n\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n}\n\n/**\n * Validates a boolean.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\n\nfunction _boolean(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n}\n\n/**\n * Validates the regular expression type.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\n\nfunction regexp(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (!isEmptyValue(value)) {\n rules.type(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n}\n\n/**\n * Validates a number is an integer.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\n\nfunction integer(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n}\n\n/**\n * Validates a number is a floating point number.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\n\nfunction floatFn(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n}\n\n/**\n * Validates an array.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\n\nfunction array(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if ((value === undefined || value === null) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options, 'array');\n\n if (value !== undefined && value !== null) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n}\n\n/**\n * Validates an object.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\n\nfunction object(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n}\n\nvar ENUM$1 = 'enum';\n/**\n * Validates an enumerable list.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\n\nfunction enumerable$1(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (value !== undefined) {\n rules[ENUM$1](rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n}\n\n/**\n * Validates a regular expression pattern.\n *\n * Performs validation when a rule only contains\n * a pattern property but is not declared as a string type.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\n\nfunction pattern$2(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value, 'string') && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (!isEmptyValue(value, 'string')) {\n rules.pattern(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n}\n\nfunction date(rule, value, callback, source, options) {\n // console.log('integer rule called %j', rule);\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); // console.log('validate on %s value', value);\n\n if (validate) {\n if (isEmptyValue(value, 'date') && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n\n if (!isEmptyValue(value, 'date')) {\n var dateObject;\n\n if (value instanceof Date) {\n dateObject = value;\n } else {\n dateObject = new Date(value);\n }\n\n rules.type(rule, dateObject, source, errors, options);\n\n if (dateObject) {\n rules.range(rule, dateObject.getTime(), source, errors, options);\n }\n }\n }\n\n callback(errors);\n}\n\nfunction required$1(rule, value, callback, source, options) {\n var errors = [];\n var type = Array.isArray(value) ? 'array' : typeof value;\n rules.required(rule, value, source, errors, options, type);\n callback(errors);\n}\n\nfunction type$1(rule, value, callback, source, options) {\n var ruleType = rule.type;\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value, ruleType) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options, ruleType);\n\n if (!isEmptyValue(value, ruleType)) {\n rules.type(rule, value, source, errors, options);\n }\n }\n\n callback(errors);\n}\n\n/**\n * Performs validation for any type.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\n\nfunction any(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n\n rules.required(rule, value, source, errors, options);\n }\n\n callback(errors);\n}\n\nvar validators = {\n string: string,\n method: method,\n number: number,\n \"boolean\": _boolean,\n regexp: regexp,\n integer: integer,\n \"float\": floatFn,\n array: array,\n object: object,\n \"enum\": enumerable$1,\n pattern: pattern$2,\n date: date,\n url: type$1,\n hex: type$1,\n email: type$1,\n required: required$1,\n any: any\n};\n\nfunction newMessages() {\n return {\n \"default\": 'Validation error on field %s',\n required: '%s is required',\n \"enum\": '%s must be one of %s',\n whitespace: '%s cannot be empty',\n date: {\n format: '%s date %s is invalid for format %s',\n parse: '%s date could not be parsed, %s is invalid ',\n invalid: '%s date %s is invalid'\n },\n types: {\n string: '%s is not a %s',\n method: '%s is not a %s (function)',\n array: '%s is not an %s',\n object: '%s is not an %s',\n number: '%s is not a %s',\n date: '%s is not a %s',\n \"boolean\": '%s is not a %s',\n integer: '%s is not an %s',\n \"float\": '%s is not a %s',\n regexp: '%s is not a valid %s',\n email: '%s is not a valid %s',\n url: '%s is not a valid %s',\n hex: '%s is not a valid %s'\n },\n string: {\n len: '%s must be exactly %s characters',\n min: '%s must be at least %s characters',\n max: '%s cannot be longer than %s characters',\n range: '%s must be between %s and %s characters'\n },\n number: {\n len: '%s must equal %s',\n min: '%s cannot be less than %s',\n max: '%s cannot be greater than %s',\n range: '%s must be between %s and %s'\n },\n array: {\n len: '%s must be exactly %s in length',\n min: '%s cannot be less than %s in length',\n max: '%s cannot be greater than %s in length',\n range: '%s must be between %s and %s in length'\n },\n pattern: {\n mismatch: '%s value %s does not match pattern %s'\n },\n clone: function clone() {\n var cloned = JSON.parse(JSON.stringify(this));\n cloned.clone = this.clone;\n return cloned;\n }\n };\n}\nvar messages = newMessages();\n\n/**\n * Encapsulates a validation schema.\n *\n * @param descriptor An object declaring validation rules\n * for this schema.\n */\n\nfunction Schema(descriptor) {\n this.rules = null;\n this._messages = messages;\n this.define(descriptor);\n}\n\nSchema.prototype = {\n messages: function messages(_messages) {\n if (_messages) {\n this._messages = deepMerge(newMessages(), _messages);\n }\n\n return this._messages;\n },\n define: function define(rules) {\n if (!rules) {\n throw new Error('Cannot configure a schema with no rules');\n }\n\n if (typeof rules !== 'object' || Array.isArray(rules)) {\n throw new Error('Rules must be an object');\n }\n\n this.rules = {};\n var z;\n var item;\n\n for (z in rules) {\n if (rules.hasOwnProperty(z)) {\n item = rules[z];\n this.rules[z] = Array.isArray(item) ? item : [item];\n }\n }\n },\n validate: function validate(source_, o, oc) {\n var _this = this;\n\n if (o === void 0) {\n o = {};\n }\n\n if (oc === void 0) {\n oc = function oc() {};\n }\n\n var source = source_;\n var options = o;\n var callback = oc;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n if (!this.rules || Object.keys(this.rules).length === 0) {\n if (callback) {\n callback();\n }\n\n return Promise.resolve();\n }\n\n function complete(results) {\n var i;\n var errors = [];\n var fields = {};\n\n function add(e) {\n if (Array.isArray(e)) {\n var _errors;\n\n errors = (_errors = errors).concat.apply(_errors, e);\n } else {\n errors.push(e);\n }\n }\n\n for (i = 0; i < results.length; i++) {\n add(results[i]);\n }\n\n if (!errors.length) {\n errors = null;\n fields = null;\n } else {\n fields = convertFieldsError(errors);\n }\n\n callback(errors, fields);\n }\n\n if (options.messages) {\n var messages$1 = this.messages();\n\n if (messages$1 === messages) {\n messages$1 = newMessages();\n }\n\n deepMerge(messages$1, options.messages);\n options.messages = messages$1;\n } else {\n options.messages = this.messages();\n }\n\n var arr;\n var value;\n var series = {};\n var keys = options.keys || Object.keys(this.rules);\n keys.forEach(function (z) {\n arr = _this.rules[z];\n value = source[z];\n arr.forEach(function (r) {\n var rule = r;\n\n if (typeof rule.transform === 'function') {\n if (source === source_) {\n source = _extends({}, source);\n }\n\n value = source[z] = rule.transform(value);\n }\n\n if (typeof rule === 'function') {\n rule = {\n validator: rule\n };\n } else {\n rule = _extends({}, rule);\n }\n\n rule.validator = _this.getValidationMethod(rule);\n rule.field = z;\n rule.fullField = rule.fullField || z;\n rule.type = _this.getType(rule);\n\n if (!rule.validator) {\n return;\n }\n\n series[z] = series[z] || [];\n series[z].push({\n rule: rule,\n value: value,\n source: source,\n field: z\n });\n });\n });\n var errorFields = {};\n return asyncMap(series, options, function (data, doIt) {\n var rule = data.rule;\n var deep = (rule.type === 'object' || rule.type === 'array') && (typeof rule.fields === 'object' || typeof rule.defaultField === 'object');\n deep = deep && (rule.required || !rule.required && data.value);\n rule.field = data.field;\n\n function addFullfield(key, schema) {\n return _extends(_extends({}, schema), {}, {\n fullField: rule.fullField + \".\" + key\n });\n }\n\n function cb(e) {\n if (e === void 0) {\n e = [];\n }\n\n var errors = e;\n\n if (!Array.isArray(errors)) {\n errors = [errors];\n }\n\n if (!options.suppressWarning && errors.length) {\n Schema.warning('async-validator:', errors);\n }\n\n if (errors.length && rule.message !== undefined) {\n errors = [].concat(rule.message);\n }\n\n errors = errors.map(complementError(rule));\n\n if (options.first && errors.length) {\n errorFields[rule.field] = 1;\n return doIt(errors);\n }\n\n if (!deep) {\n doIt(errors);\n } else {\n // if rule is required but the target object\n // does not exist fail at the rule level and don't\n // go deeper\n if (rule.required && !data.value) {\n if (rule.message !== undefined) {\n errors = [].concat(rule.message).map(complementError(rule));\n } else if (options.error) {\n errors = [options.error(rule, format(options.messages.required, rule.field))];\n }\n\n return doIt(errors);\n }\n\n var fieldsSchema = {};\n\n if (rule.defaultField) {\n for (var k in data.value) {\n if (data.value.hasOwnProperty(k)) {\n fieldsSchema[k] = rule.defaultField;\n }\n }\n }\n\n fieldsSchema = _extends(_extends({}, fieldsSchema), data.rule.fields);\n\n for (var f in fieldsSchema) {\n if (fieldsSchema.hasOwnProperty(f)) {\n var fieldSchema = Array.isArray(fieldsSchema[f]) ? fieldsSchema[f] : [fieldsSchema[f]];\n fieldsSchema[f] = fieldSchema.map(addFullfield.bind(null, f));\n }\n }\n\n var schema = new Schema(fieldsSchema);\n schema.messages(options.messages);\n\n if (data.rule.options) {\n data.rule.options.messages = options.messages;\n data.rule.options.error = options.error;\n }\n\n schema.validate(data.value, data.rule.options || options, function (errs) {\n var finalErrors = [];\n\n if (errors && errors.length) {\n finalErrors.push.apply(finalErrors, errors);\n }\n\n if (errs && errs.length) {\n finalErrors.push.apply(finalErrors, errs);\n }\n\n doIt(finalErrors.length ? finalErrors : null);\n });\n }\n }\n\n var res;\n\n if (rule.asyncValidator) {\n res = rule.asyncValidator(rule, data.value, cb, data.source, options);\n } else if (rule.validator) {\n res = rule.validator(rule, data.value, cb, data.source, options);\n\n if (res === true) {\n cb();\n } else if (res === false) {\n cb(rule.message || rule.field + \" fails\");\n } else if (res instanceof Array) {\n cb(res);\n } else if (res instanceof Error) {\n cb(res.message);\n }\n }\n\n if (res && res.then) {\n res.then(function () {\n return cb();\n }, function (e) {\n return cb(e);\n });\n }\n }, function (results) {\n complete(results);\n });\n },\n getType: function getType(rule) {\n if (rule.type === undefined && rule.pattern instanceof RegExp) {\n rule.type = 'pattern';\n }\n\n if (typeof rule.validator !== 'function' && rule.type && !validators.hasOwnProperty(rule.type)) {\n throw new Error(format('Unknown rule type %s', rule.type));\n }\n\n return rule.type || 'string';\n },\n getValidationMethod: function getValidationMethod(rule) {\n if (typeof rule.validator === 'function') {\n return rule.validator;\n }\n\n var keys = Object.keys(rule);\n var messageIndex = keys.indexOf('message');\n\n if (messageIndex !== -1) {\n keys.splice(messageIndex, 1);\n }\n\n if (keys.length === 1 && keys[0] === 'required') {\n return validators.required;\n }\n\n return validators[this.getType(rule)] || false;\n }\n};\n\nSchema.register = function register(type, validator) {\n if (typeof validator !== 'function') {\n throw new Error('Cannot register a validator by type, validator is not a function');\n }\n\n validators[type] = validator;\n};\n\nSchema.warning = warning;\nSchema.messages = messages;\nSchema.validators = validators;\n\nexport default Schema;\n//# sourceMappingURL=index.js.map\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport get from \"rc-util/es/utils/get\";\nimport set from \"rc-util/es/utils/set\";\nimport { toArray } from './typeUtil';\n/**\n * Convert name to internal supported format.\n * This function should keep since we still thinking if need support like `a.b.c` format.\n * 'a' => ['a']\n * 123 => [123]\n * ['a', 123] => ['a', 123]\n */\n\nexport function getNamePath(path) {\n return toArray(path);\n}\nexport function getValue(store, namePath) {\n var value = get(store, namePath);\n return value;\n}\nexport function setValue(store, namePath, value) {\n var newStore = set(store, namePath, value);\n return newStore;\n}\nexport function cloneByNamePathList(store, namePathList) {\n var newStore = {};\n namePathList.forEach(function (namePath) {\n var value = getValue(store, namePath);\n newStore = setValue(newStore, namePath, value);\n });\n return newStore;\n}\nexport function containsNamePath(namePathList, namePath) {\n return namePathList && namePathList.some(function (path) {\n return matchNamePath(path, namePath);\n });\n}\n\nfunction isObject(obj) {\n return _typeof(obj) === 'object' && obj !== null && Object.getPrototypeOf(obj) === Object.prototype;\n}\n/**\n * Copy values into store and return a new values object\n * ({ a: 1, b: { c: 2 } }, { a: 4, b: { d: 5 } }) => { a: 4, b: { c: 2, d: 5 } }\n */\n\n\nfunction internalSetValues(store, values) {\n var newStore = Array.isArray(store) ? _toConsumableArray(store) : _objectSpread({}, store);\n\n if (!values) {\n return newStore;\n }\n\n Object.keys(values).forEach(function (key) {\n var prevValue = newStore[key];\n var value = values[key]; // If both are object (but target is not array), we use recursion to set deep value\n\n var recursive = isObject(prevValue) && isObject(value);\n newStore[key] = recursive ? internalSetValues(prevValue, value || {}) : value;\n });\n return newStore;\n}\n\nexport function setValues(store) {\n for (var _len = arguments.length, restValues = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n restValues[_key - 1] = arguments[_key];\n }\n\n return restValues.reduce(function (current, newStore) {\n return internalSetValues(current, newStore);\n }, store);\n}\nexport function matchNamePath(namePath, changedNamePath) {\n if (!namePath || !changedNamePath || namePath.length !== changedNamePath.length) {\n return false;\n }\n\n return namePath.every(function (nameUnit, i) {\n return changedNamePath[i] === nameUnit;\n });\n}\nexport function isSimilar(source, target) {\n if (source === target) {\n return true;\n }\n\n if (!source && target || source && !target) {\n return false;\n }\n\n if (!source || !target || _typeof(source) !== 'object' || _typeof(target) !== 'object') {\n return false;\n }\n\n var sourceKeys = Object.keys(source);\n var targetKeys = Object.keys(target);\n var keys = new Set([].concat(_toConsumableArray(sourceKeys), _toConsumableArray(targetKeys)));\n return _toConsumableArray(keys).every(function (key) {\n var sourceValue = source[key];\n var targetValue = target[key];\n\n if (typeof sourceValue === 'function' && typeof targetValue === 'function') {\n return true;\n }\n\n return sourceValue === targetValue;\n });\n}\nexport function defaultGetValueFromEvent(valuePropName) {\n var event = arguments.length <= 1 ? undefined : arguments[1];\n\n if (event && event.target && valuePropName in event.target) {\n return event.target[valuePropName];\n }\n\n return event;\n}\n/**\n * Moves an array item from one position in an array to another.\n *\n * Note: This is a pure function so a new array will be returned, instead\n * of altering the array argument.\n *\n * @param array Array in which to move an item. (required)\n * @param moveIndex The index of the item to move. (required)\n * @param toIndex The index to move item at moveIndex to. (required)\n */\n\nexport function move(array, moveIndex, toIndex) {\n var length = array.length;\n\n if (moveIndex < 0 || moveIndex >= length || toIndex < 0 || toIndex >= length) {\n return array;\n }\n\n var item = array[moveIndex];\n var diff = moveIndex - toIndex;\n\n if (diff > 0) {\n // move left\n return [].concat(_toConsumableArray(array.slice(0, toIndex)), [item], _toConsumableArray(array.slice(toIndex, moveIndex)), _toConsumableArray(array.slice(moveIndex + 1, length)));\n }\n\n if (diff < 0) {\n // move right\n return [].concat(_toConsumableArray(array.slice(0, moveIndex)), _toConsumableArray(array.slice(moveIndex + 1, toIndex + 1)), [item], _toConsumableArray(array.slice(toIndex + 1, length)));\n }\n\n return array;\n}","var typeTemplate = \"'${name}' is not a valid ${type}\";\nexport var defaultValidateMessages = {\n default: \"Validation error on field '${name}'\",\n required: \"'${name}' is required\",\n enum: \"'${name}' must be one of [${enum}]\",\n whitespace: \"'${name}' cannot be empty\",\n date: {\n format: \"'${name}' is invalid for format date\",\n parse: \"'${name}' could not be parsed as date\",\n invalid: \"'${name}' is invalid date\"\n },\n types: {\n string: typeTemplate,\n method: typeTemplate,\n array: typeTemplate,\n object: typeTemplate,\n number: typeTemplate,\n date: typeTemplate,\n boolean: typeTemplate,\n integer: typeTemplate,\n float: typeTemplate,\n regexp: typeTemplate,\n email: typeTemplate,\n url: typeTemplate,\n hex: typeTemplate\n },\n string: {\n len: \"'${name}' must be exactly ${len} characters\",\n min: \"'${name}' must be at least ${min} characters\",\n max: \"'${name}' cannot be longer than ${max} characters\",\n range: \"'${name}' must be between ${min} and ${max} characters\"\n },\n number: {\n len: \"'${name}' must equal ${len}\",\n min: \"'${name}' cannot be less than ${min}\",\n max: \"'${name}' cannot be greater than ${max}\",\n range: \"'${name}' must be between ${min} and ${max}\"\n },\n array: {\n len: \"'${name}' must be exactly ${len} in length\",\n min: \"'${name}' cannot be less than ${min} in length\",\n max: \"'${name}' cannot be greater than ${max} in length\",\n range: \"'${name}' must be between ${min} and ${max} in length\"\n },\n pattern: {\n mismatch: \"'${name}' does not match pattern ${pattern}\"\n }\n};","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _regeneratorRuntime from \"@babel/runtime/regenerator\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport RawAsyncValidator from 'async-validator';\nimport * as React from 'react';\nimport warning from \"rc-util/es/warning\";\nimport { setValues } from './valueUtil';\nimport { defaultValidateMessages } from './messages'; // Remove incorrect original ts define\n\nvar AsyncValidator = RawAsyncValidator;\n/**\n * Replace with template.\n * `I'm ${name}` + { name: 'bamboo' } = I'm bamboo\n */\n\nfunction replaceMessage(template, kv) {\n return template.replace(/\\$\\{\\w+\\}/g, function (str) {\n var key = str.slice(2, -1);\n return kv[key];\n });\n}\n/**\n * We use `async-validator` to validate rules. So have to hot replace the message with validator.\n * { required: '${name} is required' } => { required: () => 'field is required' }\n */\n\n\nfunction convertMessages(messages, name, rule, messageVariables) {\n var kv = _objectSpread(_objectSpread({}, rule), {}, {\n name: name,\n enum: (rule.enum || []).join(', ')\n });\n\n var replaceFunc = function replaceFunc(template, additionalKV) {\n return function () {\n return replaceMessage(template, _objectSpread(_objectSpread({}, kv), additionalKV));\n };\n };\n /* eslint-disable no-param-reassign */\n\n\n function fillTemplate(source) {\n var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Object.keys(source).forEach(function (ruleName) {\n var value = source[ruleName];\n\n if (typeof value === 'string') {\n target[ruleName] = replaceFunc(value, messageVariables);\n } else if (value && _typeof(value) === 'object') {\n target[ruleName] = {};\n fillTemplate(value, target[ruleName]);\n } else {\n target[ruleName] = value;\n }\n });\n return target;\n }\n /* eslint-enable */\n\n\n return fillTemplate(setValues({}, defaultValidateMessages, messages));\n}\n\nfunction validateRule(_x, _x2, _x3, _x4, _x5) {\n return _validateRule.apply(this, arguments);\n}\n/**\n * We use `async-validator` to validate the value.\n * But only check one value in a time to avoid namePath validate issue.\n */\n\n\nfunction _validateRule() {\n _validateRule = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(name, value, rule, options, messageVariables) {\n var cloneRule, subRuleField, validator, messages, result, subResults;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n cloneRule = _objectSpread({}, rule); // We should special handle array validate\n\n subRuleField = null;\n\n if (cloneRule && cloneRule.type === 'array' && cloneRule.defaultField) {\n subRuleField = cloneRule.defaultField;\n delete cloneRule.defaultField;\n }\n\n validator = new AsyncValidator(_defineProperty({}, name, [cloneRule]));\n messages = convertMessages(options.validateMessages, name, cloneRule, messageVariables);\n validator.messages(messages);\n result = [];\n _context2.prev = 7;\n _context2.next = 10;\n return Promise.resolve(validator.validate(_defineProperty({}, name, value), _objectSpread({}, options)));\n\n case 10:\n _context2.next = 15;\n break;\n\n case 12:\n _context2.prev = 12;\n _context2.t0 = _context2[\"catch\"](7);\n\n if (_context2.t0.errors) {\n result = _context2.t0.errors.map(function (_ref2, index) {\n var message = _ref2.message;\n return (// Wrap ReactNode with `key`\n\n /*#__PURE__*/\n React.isValidElement(message) ? /*#__PURE__*/React.cloneElement(message, {\n key: \"error_\".concat(index)\n }) : message\n );\n });\n } else {\n console.error(_context2.t0);\n result = [messages.default()];\n }\n\n case 15:\n if (!(!result.length && subRuleField)) {\n _context2.next = 20;\n break;\n }\n\n _context2.next = 18;\n return Promise.all(value.map(function (subValue, i) {\n return validateRule(\"\".concat(name, \".\").concat(i), subValue, subRuleField, options, messageVariables);\n }));\n\n case 18:\n subResults = _context2.sent;\n return _context2.abrupt(\"return\", subResults.reduce(function (prev, errors) {\n return [].concat(_toConsumableArray(prev), _toConsumableArray(errors));\n }, []));\n\n case 20:\n return _context2.abrupt(\"return\", result);\n\n case 21:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, null, [[7, 12]]);\n }));\n return _validateRule.apply(this, arguments);\n}\n\nexport function validateRules(namePath, value, rules, options, validateFirst, messageVariables) {\n var name = namePath.join('.'); // Fill rule with context\n\n var filledRules = rules.map(function (currentRule) {\n var originValidatorFunc = currentRule.validator;\n\n if (!originValidatorFunc) {\n return currentRule;\n }\n\n return _objectSpread(_objectSpread({}, currentRule), {}, {\n validator: function validator(rule, val, callback) {\n var hasPromise = false; // Wrap callback only accept when promise not provided\n\n var wrappedCallback = function wrappedCallback() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n // Wait a tick to make sure return type is a promise\n Promise.resolve().then(function () {\n warning(!hasPromise, 'Your validator function has already return a promise. `callback` will be ignored.');\n\n if (!hasPromise) {\n callback.apply(void 0, args);\n }\n });\n }; // Get promise\n\n\n var promise = originValidatorFunc(rule, val, wrappedCallback);\n hasPromise = promise && typeof promise.then === 'function' && typeof promise.catch === 'function';\n /**\n * 1. Use promise as the first priority.\n * 2. If promise not exist, use callback with warning instead\n */\n\n warning(hasPromise, '`callback` is deprecated. Please return a promise instead.');\n\n if (hasPromise) {\n promise.then(function () {\n callback();\n }).catch(function (err) {\n callback(err || ' ');\n });\n }\n }\n });\n });\n var summaryPromise;\n\n if (validateFirst === true) {\n // >>>>> Validate by serialization\n summaryPromise = new Promise( /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(resolve, reject) {\n var i, errors;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n i = 0;\n\n case 1:\n if (!(i < filledRules.length)) {\n _context.next = 11;\n break;\n }\n\n _context.next = 4;\n return validateRule(name, value, filledRules[i], options, messageVariables);\n\n case 4:\n errors = _context.sent;\n\n if (!errors.length) {\n _context.next = 8;\n break;\n }\n\n reject(errors);\n return _context.abrupt(\"return\");\n\n case 8:\n i += 1;\n _context.next = 1;\n break;\n\n case 11:\n /* eslint-enable */\n resolve([]);\n\n case 12:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x6, _x7) {\n return _ref.apply(this, arguments);\n };\n }());\n } else {\n // >>>>> Validate by parallel\n var rulePromises = filledRules.map(function (rule) {\n return validateRule(name, value, rule, options, messageVariables);\n });\n summaryPromise = (validateFirst ? finishOnFirstFailed(rulePromises) : finishOnAllFailed(rulePromises)).then(function (errors) {\n if (!errors.length) {\n return [];\n }\n\n return Promise.reject(errors);\n });\n } // Internal catch error to avoid console error log.\n\n\n summaryPromise.catch(function (e) {\n return e;\n });\n return summaryPromise;\n}\n\nfunction finishOnAllFailed(_x8) {\n return _finishOnAllFailed.apply(this, arguments);\n}\n\nfunction _finishOnAllFailed() {\n _finishOnAllFailed = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(rulePromises) {\n return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt(\"return\", Promise.all(rulePromises).then(function (errorsList) {\n var _ref3;\n\n var errors = (_ref3 = []).concat.apply(_ref3, _toConsumableArray(errorsList));\n\n return errors;\n }));\n\n case 1:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n return _finishOnAllFailed.apply(this, arguments);\n}\n\nfunction finishOnFirstFailed(_x9) {\n return _finishOnFirstFailed.apply(this, arguments);\n}\n\nfunction _finishOnFirstFailed() {\n _finishOnFirstFailed = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(rulePromises) {\n var count;\n return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n count = 0;\n return _context4.abrupt(\"return\", new Promise(function (resolve) {\n rulePromises.forEach(function (promise) {\n promise.then(function (errors) {\n if (errors.length) {\n resolve(errors);\n }\n\n count += 1;\n\n if (count === rulePromises.length) {\n resolve([]);\n }\n });\n });\n }));\n\n case 2:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }));\n return _finishOnFirstFailed.apply(this, arguments);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport toChildrenArray from \"rc-util/es/Children/toArray\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport FieldContext, { HOOK_MARK } from './FieldContext';\nimport { toArray } from './utils/typeUtil';\nimport { validateRules } from './utils/validateUtil';\nimport { containsNamePath, defaultGetValueFromEvent, getNamePath, getValue } from './utils/valueUtil';\n\nfunction requireUpdate(shouldUpdate, prev, next, prevValue, nextValue, info) {\n if (typeof shouldUpdate === 'function') {\n return shouldUpdate(prev, next, 'source' in info ? {\n source: info.source\n } : {});\n }\n\n return prevValue !== nextValue;\n} // We use Class instead of Hooks here since it will cost much code by using Hooks.\n\n\nvar Field = /*#__PURE__*/function (_React$Component) {\n _inherits(Field, _React$Component);\n\n var _super = _createSuper(Field);\n\n // ============================== Subscriptions ==============================\n function Field(props) {\n var _this;\n\n _classCallCheck(this, Field);\n\n _this = _super.call(this, props);\n _this.state = {\n resetCount: 0\n };\n _this.cancelRegisterFunc = null;\n _this.mounted = false;\n /**\n * Follow state should not management in State since it will async update by React.\n * This makes first render of form can not get correct state value.\n */\n\n _this.touched = false;\n /** Mark when touched & validated. Currently only used for `dependencies` */\n\n _this.dirty = false;\n _this.validatePromise = null;\n _this.errors = [];\n\n _this.cancelRegister = function () {\n var _this$props = _this.props,\n preserve = _this$props.preserve,\n isListField = _this$props.isListField;\n\n if (_this.cancelRegisterFunc) {\n _this.cancelRegisterFunc(isListField, preserve);\n }\n\n _this.cancelRegisterFunc = null;\n }; // ================================== Utils ==================================\n\n\n _this.getNamePath = function () {\n var _this$props2 = _this.props,\n name = _this$props2.name,\n fieldContext = _this$props2.fieldContext;\n var _fieldContext$prefixN = fieldContext.prefixName,\n prefixName = _fieldContext$prefixN === void 0 ? [] : _fieldContext$prefixN;\n return name !== undefined ? [].concat(_toConsumableArray(prefixName), _toConsumableArray(name)) : [];\n };\n\n _this.getRules = function () {\n var _this$props3 = _this.props,\n _this$props3$rules = _this$props3.rules,\n rules = _this$props3$rules === void 0 ? [] : _this$props3$rules,\n fieldContext = _this$props3.fieldContext;\n return rules.map(function (rule) {\n if (typeof rule === 'function') {\n return rule(fieldContext);\n }\n\n return rule;\n });\n };\n\n _this.refresh = function () {\n if (!_this.mounted) return;\n /**\n * Clean up current node.\n */\n\n _this.setState(function (_ref) {\n var resetCount = _ref.resetCount;\n return {\n resetCount: resetCount + 1\n };\n });\n }; // ========================= Field Entity Interfaces =========================\n // Trigger by store update. Check if need update the component\n\n\n _this.onStoreChange = function (prevStore, namePathList, info) {\n var _this$props4 = _this.props,\n shouldUpdate = _this$props4.shouldUpdate,\n _this$props4$dependen = _this$props4.dependencies,\n dependencies = _this$props4$dependen === void 0 ? [] : _this$props4$dependen,\n onReset = _this$props4.onReset;\n var store = info.store;\n\n var namePath = _this.getNamePath();\n\n var prevValue = _this.getValue(prevStore);\n\n var curValue = _this.getValue(store);\n\n var namePathMatch = namePathList && containsNamePath(namePathList, namePath); // `setFieldsValue` is a quick access to update related status\n\n if (info.type === 'valueUpdate' && info.source === 'external' && prevValue !== curValue) {\n _this.touched = true;\n _this.dirty = true;\n _this.validatePromise = null;\n _this.errors = [];\n }\n\n switch (info.type) {\n case 'reset':\n if (!namePathList || namePathMatch) {\n // Clean up state\n _this.touched = false;\n _this.dirty = false;\n _this.validatePromise = null;\n _this.errors = [];\n\n if (onReset) {\n onReset();\n }\n\n _this.refresh();\n\n return;\n }\n\n break;\n\n case 'setField':\n {\n if (namePathMatch) {\n var data = info.data;\n\n if ('touched' in data) {\n _this.touched = data.touched;\n }\n\n if ('validating' in data && !('originRCField' in data)) {\n _this.validatePromise = data.validating ? Promise.resolve([]) : null;\n }\n\n if ('errors' in data) {\n _this.errors = data.errors || [];\n }\n\n _this.dirty = true;\n\n _this.reRender();\n\n return;\n } // Handle update by `setField` with `shouldUpdate`\n\n\n if (shouldUpdate && !namePath.length && requireUpdate(shouldUpdate, prevStore, store, prevValue, curValue, info)) {\n _this.reRender();\n\n return;\n }\n\n break;\n }\n\n case 'dependenciesUpdate':\n {\n /**\n * Trigger when marked `dependencies` updated. Related fields will all update\n */\n var dependencyList = dependencies.map(getNamePath); // No need for `namePathMath` check and `shouldUpdate` check, since `valueUpdate` will be\n // emitted earlier and they will work there\n // If set it may cause unnecessary twice rerendering\n\n if (dependencyList.some(function (dependency) {\n return containsNamePath(info.relatedFields, dependency);\n })) {\n _this.reRender();\n\n return;\n }\n\n break;\n }\n\n default:\n // 1. If `namePath` exists in `namePathList`, means it's related value and should update\n // For example \n // If `namePathList` is [['list']] (List value update), Field should be updated\n // If `namePathList` is [['list', 0]] (Field value update), List shouldn't be updated\n // 2.\n // 2.1 If `dependencies` is set, `name` is not set and `shouldUpdate` is not set,\n // don't use `shouldUpdate`. `dependencies` is view as a shortcut if `shouldUpdate`\n // is not provided\n // 2.2 If `shouldUpdate` provided, use customize logic to update the field\n // else to check if value changed\n if (namePathMatch || (!dependencies.length || namePath.length || shouldUpdate) && requireUpdate(shouldUpdate, prevStore, store, prevValue, curValue, info)) {\n _this.reRender();\n\n return;\n }\n\n break;\n }\n\n if (shouldUpdate === true) {\n _this.reRender();\n }\n };\n\n _this.validateRules = function (options) {\n // We should fixed namePath & value to avoid developer change then by form function\n var namePath = _this.getNamePath();\n\n var currentValue = _this.getValue(); // Force change to async to avoid rule OOD under renderProps field\n\n\n var rootPromise = Promise.resolve().then(function () {\n if (!_this.mounted) {\n return [];\n }\n\n var _this$props5 = _this.props,\n _this$props5$validate = _this$props5.validateFirst,\n validateFirst = _this$props5$validate === void 0 ? false : _this$props5$validate,\n messageVariables = _this$props5.messageVariables;\n\n var _ref2 = options || {},\n triggerName = _ref2.triggerName;\n\n var filteredRules = _this.getRules();\n\n if (triggerName) {\n filteredRules = filteredRules.filter(function (rule) {\n var validateTrigger = rule.validateTrigger;\n\n if (!validateTrigger) {\n return true;\n }\n\n var triggerList = toArray(validateTrigger);\n return triggerList.includes(triggerName);\n });\n }\n\n var promise = validateRules(namePath, currentValue, filteredRules, options, validateFirst, messageVariables);\n promise.catch(function (e) {\n return e;\n }).then(function () {\n var errors = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (_this.validatePromise === rootPromise) {\n _this.validatePromise = null;\n _this.errors = errors;\n\n _this.reRender();\n }\n });\n return promise;\n });\n _this.validatePromise = rootPromise;\n _this.dirty = true;\n _this.errors = []; // Force trigger re-render since we need sync renderProps with new meta\n\n _this.reRender();\n\n return rootPromise;\n };\n\n _this.isFieldValidating = function () {\n return !!_this.validatePromise;\n };\n\n _this.isFieldTouched = function () {\n return _this.touched;\n };\n\n _this.isFieldDirty = function () {\n return _this.dirty;\n };\n\n _this.getErrors = function () {\n return _this.errors;\n };\n\n _this.isListField = function () {\n return _this.props.isListField;\n };\n\n _this.isList = function () {\n return _this.props.isList;\n }; // ============================= Child Component =============================\n\n\n _this.getMeta = function () {\n // Make error & validating in cache to save perf\n _this.prevValidating = _this.isFieldValidating();\n var meta = {\n touched: _this.isFieldTouched(),\n validating: _this.prevValidating,\n errors: _this.errors,\n name: _this.getNamePath()\n };\n return meta;\n }; // Only return validate child node. If invalidate, will do nothing about field.\n\n\n _this.getOnlyChild = function (children) {\n // Support render props\n if (typeof children === 'function') {\n var meta = _this.getMeta();\n\n return _objectSpread(_objectSpread({}, _this.getOnlyChild(children(_this.getControlled(), meta, _this.props.fieldContext))), {}, {\n isFunction: true\n });\n } // Filed element only\n\n\n var childList = toChildrenArray(children);\n\n if (childList.length !== 1 || ! /*#__PURE__*/React.isValidElement(childList[0])) {\n return {\n child: childList,\n isFunction: false\n };\n }\n\n return {\n child: childList[0],\n isFunction: false\n };\n }; // ============================== Field Control ==============================\n\n\n _this.getValue = function (store) {\n var getFieldsValue = _this.props.fieldContext.getFieldsValue;\n\n var namePath = _this.getNamePath();\n\n return getValue(store || getFieldsValue(true), namePath);\n };\n\n _this.getControlled = function () {\n var childProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _this$props6 = _this.props,\n trigger = _this$props6.trigger,\n validateTrigger = _this$props6.validateTrigger,\n getValueFromEvent = _this$props6.getValueFromEvent,\n normalize = _this$props6.normalize,\n valuePropName = _this$props6.valuePropName,\n getValueProps = _this$props6.getValueProps,\n fieldContext = _this$props6.fieldContext;\n var mergedValidateTrigger = validateTrigger !== undefined ? validateTrigger : fieldContext.validateTrigger;\n\n var namePath = _this.getNamePath();\n\n var getInternalHooks = fieldContext.getInternalHooks,\n getFieldsValue = fieldContext.getFieldsValue;\n\n var _getInternalHooks = getInternalHooks(HOOK_MARK),\n dispatch = _getInternalHooks.dispatch;\n\n var value = _this.getValue();\n\n var mergedGetValueProps = getValueProps || function (val) {\n return _defineProperty({}, valuePropName, val);\n }; // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n\n var originTriggerFunc = childProps[trigger];\n\n var control = _objectSpread(_objectSpread({}, childProps), mergedGetValueProps(value)); // Add trigger\n\n\n control[trigger] = function () {\n // Mark as touched\n _this.touched = true;\n _this.dirty = true;\n var newValue;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (getValueFromEvent) {\n newValue = getValueFromEvent.apply(void 0, args);\n } else {\n newValue = defaultGetValueFromEvent.apply(void 0, [valuePropName].concat(args));\n }\n\n if (normalize) {\n newValue = normalize(newValue, value, getFieldsValue(true));\n }\n\n dispatch({\n type: 'updateValue',\n namePath: namePath,\n value: newValue\n });\n\n if (originTriggerFunc) {\n originTriggerFunc.apply(void 0, args);\n }\n }; // Add validateTrigger\n\n\n var validateTriggerList = toArray(mergedValidateTrigger || []);\n validateTriggerList.forEach(function (triggerName) {\n // Wrap additional function of component, so that we can get latest value from store\n var originTrigger = control[triggerName];\n\n control[triggerName] = function () {\n if (originTrigger) {\n originTrigger.apply(void 0, arguments);\n } // Always use latest rules\n\n\n var rules = _this.props.rules;\n\n if (rules && rules.length) {\n // We dispatch validate to root,\n // since it will update related data with other field with same name\n dispatch({\n type: 'validateField',\n namePath: namePath,\n triggerName: triggerName\n });\n }\n };\n });\n return control;\n }; // Register on init\n\n\n if (props.fieldContext) {\n var getInternalHooks = props.fieldContext.getInternalHooks;\n\n var _getInternalHooks2 = getInternalHooks(HOOK_MARK),\n initEntityValue = _getInternalHooks2.initEntityValue;\n\n initEntityValue(_assertThisInitialized(_this));\n }\n\n return _this;\n }\n\n _createClass(Field, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props7 = this.props,\n shouldUpdate = _this$props7.shouldUpdate,\n fieldContext = _this$props7.fieldContext;\n this.mounted = true; // Register on init\n\n if (fieldContext) {\n var getInternalHooks = fieldContext.getInternalHooks;\n\n var _getInternalHooks3 = getInternalHooks(HOOK_MARK),\n registerField = _getInternalHooks3.registerField;\n\n this.cancelRegisterFunc = registerField(this);\n } // One more render for component in case fields not ready\n\n\n if (shouldUpdate === true) {\n this.reRender();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.cancelRegister();\n this.mounted = false;\n }\n }, {\n key: \"reRender\",\n value: function reRender() {\n if (!this.mounted) return;\n this.forceUpdate();\n }\n }, {\n key: \"render\",\n value: function render() {\n var resetCount = this.state.resetCount;\n var children = this.props.children;\n\n var _this$getOnlyChild = this.getOnlyChild(children),\n child = _this$getOnlyChild.child,\n isFunction = _this$getOnlyChild.isFunction; // Not need to `cloneElement` since user can handle this in render function self\n\n\n var returnChildNode;\n\n if (isFunction) {\n returnChildNode = child;\n } else if ( /*#__PURE__*/React.isValidElement(child)) {\n returnChildNode = /*#__PURE__*/React.cloneElement(child, this.getControlled(child.props));\n } else {\n warning(!child, '`children` of Field is not validate ReactElement.');\n returnChildNode = child;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, {\n key: resetCount\n }, returnChildNode);\n }\n }]);\n\n return Field;\n}(React.Component);\n\nField.contextType = FieldContext;\nField.defaultProps = {\n trigger: 'onChange',\n valuePropName: 'value'\n};\n\nfunction WrapperField(_ref4) {\n var name = _ref4.name,\n restProps = _objectWithoutProperties(_ref4, [\"name\"]);\n\n var fieldContext = React.useContext(FieldContext);\n var namePath = name !== undefined ? getNamePath(name) : undefined;\n var key = 'keep';\n\n if (!restProps.isListField) {\n key = \"_\".concat((namePath || []).join('_'));\n }\n\n if (process.env.NODE_ENV !== 'production') {\n warning(restProps.preserve !== false || !restProps.isListField, '`preserve` should not apply on Form.List fields.');\n }\n\n return /*#__PURE__*/React.createElement(Field, _extends({\n key: key,\n name: namePath\n }, restProps, {\n fieldContext: fieldContext\n }));\n}\n\nexport default WrapperField;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nimport warning from \"rc-util/es/warning\";\nimport FieldContext from './FieldContext';\nimport Field from './Field';\nimport { move as _move, getNamePath } from './utils/valueUtil';\n\nvar List = function List(_ref) {\n var name = _ref.name,\n initialValue = _ref.initialValue,\n children = _ref.children,\n rules = _ref.rules,\n validateTrigger = _ref.validateTrigger;\n var context = React.useContext(FieldContext);\n var keyRef = React.useRef({\n keys: [],\n id: 0\n });\n var keyManager = keyRef.current; // User should not pass `children` as other type.\n\n if (typeof children !== 'function') {\n warning(false, 'Form.List only accepts function as children.');\n return null;\n }\n\n var parentPrefixName = getNamePath(context.prefixName) || [];\n var prefixName = [].concat(_toConsumableArray(parentPrefixName), _toConsumableArray(getNamePath(name)));\n\n var shouldUpdate = function shouldUpdate(prevValue, nextValue, _ref2) {\n var source = _ref2.source;\n\n if (source === 'internal') {\n return false;\n }\n\n return prevValue !== nextValue;\n };\n\n return /*#__PURE__*/React.createElement(FieldContext.Provider, {\n value: _objectSpread(_objectSpread({}, context), {}, {\n prefixName: prefixName\n })\n }, /*#__PURE__*/React.createElement(Field, {\n name: [],\n shouldUpdate: shouldUpdate,\n rules: rules,\n validateTrigger: validateTrigger,\n initialValue: initialValue,\n isList: true\n }, function (_ref3, meta) {\n var _ref3$value = _ref3.value,\n value = _ref3$value === void 0 ? [] : _ref3$value,\n onChange = _ref3.onChange;\n var getFieldValue = context.getFieldValue;\n\n var getNewValue = function getNewValue() {\n var values = getFieldValue(prefixName || []);\n return values || [];\n };\n /**\n * Always get latest value in case user update fields by `form` api.\n */\n\n\n var operations = {\n add: function add(defaultValue, index) {\n // Mapping keys\n var newValue = getNewValue();\n\n if (index >= 0 && index <= newValue.length) {\n keyManager.keys = [].concat(_toConsumableArray(keyManager.keys.slice(0, index)), [keyManager.id], _toConsumableArray(keyManager.keys.slice(index)));\n onChange([].concat(_toConsumableArray(newValue.slice(0, index)), [defaultValue], _toConsumableArray(newValue.slice(index))));\n } else {\n if (process.env.NODE_ENV !== 'production' && (index < 0 || index > newValue.length)) {\n warning(false, 'The second parameter of the add function should be a valid positive number.');\n }\n\n keyManager.keys = [].concat(_toConsumableArray(keyManager.keys), [keyManager.id]);\n onChange([].concat(_toConsumableArray(newValue), [defaultValue]));\n }\n\n keyManager.id += 1;\n },\n remove: function remove(index) {\n var newValue = getNewValue();\n var indexSet = new Set(Array.isArray(index) ? index : [index]);\n\n if (indexSet.size <= 0) {\n return;\n }\n\n keyManager.keys = keyManager.keys.filter(function (_, keysIndex) {\n return !indexSet.has(keysIndex);\n }); // Trigger store change\n\n onChange(newValue.filter(function (_, valueIndex) {\n return !indexSet.has(valueIndex);\n }));\n },\n move: function move(from, to) {\n if (from === to) {\n return;\n }\n\n var newValue = getNewValue(); // Do not handle out of range\n\n if (from < 0 || from >= newValue.length || to < 0 || to >= newValue.length) {\n return;\n }\n\n keyManager.keys = _move(keyManager.keys, from, to); // Trigger store change\n\n onChange(_move(newValue, from, to));\n }\n };\n var listValue = value || [];\n\n if (!Array.isArray(listValue)) {\n listValue = [];\n\n if (process.env.NODE_ENV !== 'production') {\n warning(false, \"Current value of '\".concat(prefixName.join(' > '), \"' is not an array type.\"));\n }\n }\n\n return children(listValue.map(function (__, index) {\n var key = keyManager.keys[index];\n\n if (key === undefined) {\n keyManager.keys[index] = keyManager.id;\n key = keyManager.keys[index];\n keyManager.id += 1;\n }\n\n return {\n name: index,\n key: key,\n isListField: true\n };\n }), operations, meta);\n }));\n};\n\nexport default List;","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport { matchNamePath } from './valueUtil';\n/**\n * NameMap like a `Map` but accepts `string[]` as key.\n */\n\nvar NameMap = /*#__PURE__*/function () {\n function NameMap() {\n _classCallCheck(this, NameMap);\n\n this.list = [];\n }\n\n _createClass(NameMap, [{\n key: \"set\",\n value: function set(key, value) {\n var index = this.list.findIndex(function (item) {\n return matchNamePath(item.key, key);\n });\n\n if (index !== -1) {\n this.list[index].value = value;\n } else {\n this.list.push({\n key: key,\n value: value\n });\n }\n }\n }, {\n key: \"get\",\n value: function get(key) {\n var result = this.list.find(function (item) {\n return matchNamePath(item.key, key);\n });\n return result && result.value;\n }\n }, {\n key: \"update\",\n value: function update(key, updater) {\n var origin = this.get(key);\n var next = updater(origin);\n\n if (!next) {\n this.delete(key);\n } else {\n this.set(key, next);\n }\n }\n }, {\n key: \"delete\",\n value: function _delete(key) {\n this.list = this.list.filter(function (item) {\n return !matchNamePath(item.key, key);\n });\n }\n }, {\n key: \"map\",\n value: function map(callback) {\n return this.list.map(callback);\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n var json = {};\n this.map(function (_ref) {\n var key = _ref.key,\n value = _ref.value;\n json[key.join('.')] = value;\n return null;\n });\n return json;\n }\n }]);\n\n return NameMap;\n}();\n\nexport default NameMap;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport * as React from 'react';\nimport warning from \"rc-util/es/warning\";\nimport { HOOK_MARK } from './FieldContext';\nimport { allPromiseFinish } from './utils/asyncUtil';\nimport NameMap from './utils/NameMap';\nimport { defaultValidateMessages } from './utils/messages';\nimport { cloneByNamePathList, containsNamePath, getNamePath, getValue, setValue, setValues } from './utils/valueUtil';\nexport var FormStore = function FormStore(forceRootUpdate) {\n var _this = this;\n\n _classCallCheck(this, FormStore);\n\n this.formHooked = false;\n this.subscribable = true;\n this.store = {};\n this.fieldEntities = [];\n this.initialValues = {};\n this.callbacks = {};\n this.validateMessages = null;\n this.preserve = null;\n this.lastValidatePromise = null;\n\n this.getForm = function () {\n return {\n getFieldValue: _this.getFieldValue,\n getFieldsValue: _this.getFieldsValue,\n getFieldError: _this.getFieldError,\n getFieldsError: _this.getFieldsError,\n isFieldsTouched: _this.isFieldsTouched,\n isFieldTouched: _this.isFieldTouched,\n isFieldValidating: _this.isFieldValidating,\n isFieldsValidating: _this.isFieldsValidating,\n resetFields: _this.resetFields,\n setFields: _this.setFields,\n setFieldsValue: _this.setFieldsValue,\n validateFields: _this.validateFields,\n submit: _this.submit,\n getInternalHooks: _this.getInternalHooks\n };\n }; // ======================== Internal Hooks ========================\n\n\n this.getInternalHooks = function (key) {\n if (key === HOOK_MARK) {\n _this.formHooked = true;\n return {\n dispatch: _this.dispatch,\n initEntityValue: _this.initEntityValue,\n registerField: _this.registerField,\n useSubscribe: _this.useSubscribe,\n setInitialValues: _this.setInitialValues,\n setCallbacks: _this.setCallbacks,\n setValidateMessages: _this.setValidateMessages,\n getFields: _this.getFields,\n setPreserve: _this.setPreserve\n };\n }\n\n warning(false, '`getInternalHooks` is internal usage. Should not call directly.');\n return null;\n };\n\n this.useSubscribe = function (subscribable) {\n _this.subscribable = subscribable;\n };\n /**\n * First time `setInitialValues` should update store with initial value\n */\n\n\n this.setInitialValues = function (initialValues, init) {\n _this.initialValues = initialValues || {};\n\n if (init) {\n _this.store = setValues({}, initialValues, _this.store);\n }\n };\n\n this.getInitialValue = function (namePath) {\n return getValue(_this.initialValues, namePath);\n };\n\n this.setCallbacks = function (callbacks) {\n _this.callbacks = callbacks;\n };\n\n this.setValidateMessages = function (validateMessages) {\n _this.validateMessages = validateMessages;\n };\n\n this.setPreserve = function (preserve) {\n _this.preserve = preserve;\n }; // ========================== Dev Warning =========================\n\n\n this.timeoutId = null;\n\n this.warningUnhooked = function () {\n if (process.env.NODE_ENV !== 'production' && !_this.timeoutId && typeof window !== 'undefined') {\n _this.timeoutId = window.setTimeout(function () {\n _this.timeoutId = null;\n\n if (!_this.formHooked) {\n warning(false, 'Instance created by `useForm` is not connected to any Form element. Forget to pass `form` prop?');\n }\n });\n }\n }; // ============================ Fields ============================\n\n /**\n * Get registered field entities.\n * @param pure Only return field which has a `name`. Default: false\n */\n\n\n this.getFieldEntities = function () {\n var pure = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (!pure) {\n return _this.fieldEntities;\n }\n\n return _this.fieldEntities.filter(function (field) {\n return field.getNamePath().length;\n });\n };\n\n this.getFieldsMap = function () {\n var pure = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var cache = new NameMap();\n\n _this.getFieldEntities(pure).forEach(function (field) {\n var namePath = field.getNamePath();\n cache.set(namePath, field);\n });\n\n return cache;\n };\n\n this.getFieldEntitiesForNamePathList = function (nameList) {\n if (!nameList) {\n return _this.getFieldEntities(true);\n }\n\n var cache = _this.getFieldsMap(true);\n\n return nameList.map(function (name) {\n var namePath = getNamePath(name);\n return cache.get(namePath) || {\n INVALIDATE_NAME_PATH: getNamePath(name)\n };\n });\n };\n\n this.getFieldsValue = function (nameList, filterFunc) {\n _this.warningUnhooked();\n\n if (nameList === true && !filterFunc) {\n return _this.store;\n }\n\n var fieldEntities = _this.getFieldEntitiesForNamePathList(Array.isArray(nameList) ? nameList : null);\n\n var filteredNameList = [];\n fieldEntities.forEach(function (entity) {\n var _entity$isListField;\n\n var namePath = 'INVALIDATE_NAME_PATH' in entity ? entity.INVALIDATE_NAME_PATH : entity.getNamePath(); // Ignore when it's a list item and not specific the namePath,\n // since parent field is already take in count\n\n if (!nameList && ((_entity$isListField = entity.isListField) === null || _entity$isListField === void 0 ? void 0 : _entity$isListField.call(entity))) {\n return;\n }\n\n if (!filterFunc) {\n filteredNameList.push(namePath);\n } else {\n var meta = 'getMeta' in entity ? entity.getMeta() : null;\n\n if (filterFunc(meta)) {\n filteredNameList.push(namePath);\n }\n }\n });\n return cloneByNamePathList(_this.store, filteredNameList.map(getNamePath));\n };\n\n this.getFieldValue = function (name) {\n _this.warningUnhooked();\n\n var namePath = getNamePath(name);\n return getValue(_this.store, namePath);\n };\n\n this.getFieldsError = function (nameList) {\n _this.warningUnhooked();\n\n var fieldEntities = _this.getFieldEntitiesForNamePathList(nameList);\n\n return fieldEntities.map(function (entity, index) {\n if (entity && !('INVALIDATE_NAME_PATH' in entity)) {\n return {\n name: entity.getNamePath(),\n errors: entity.getErrors()\n };\n }\n\n return {\n name: getNamePath(nameList[index]),\n errors: []\n };\n });\n };\n\n this.getFieldError = function (name) {\n _this.warningUnhooked();\n\n var namePath = getNamePath(name);\n\n var fieldError = _this.getFieldsError([namePath])[0];\n\n return fieldError.errors;\n };\n\n this.isFieldsTouched = function () {\n _this.warningUnhooked();\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var arg0 = args[0],\n arg1 = args[1];\n var namePathList;\n var isAllFieldsTouched = false;\n\n if (args.length === 0) {\n namePathList = null;\n } else if (args.length === 1) {\n if (Array.isArray(arg0)) {\n namePathList = arg0.map(getNamePath);\n isAllFieldsTouched = false;\n } else {\n namePathList = null;\n isAllFieldsTouched = arg0;\n }\n } else {\n namePathList = arg0.map(getNamePath);\n isAllFieldsTouched = arg1;\n }\n\n var fieldEntities = _this.getFieldEntities(true);\n\n var isFieldTouched = function isFieldTouched(field) {\n return field.isFieldTouched();\n }; // ===== Will get fully compare when not config namePathList =====\n\n\n if (!namePathList) {\n return isAllFieldsTouched ? fieldEntities.every(isFieldTouched) : fieldEntities.some(isFieldTouched);\n } // Generate a nest tree for validate\n\n\n var map = new NameMap();\n namePathList.forEach(function (shortNamePath) {\n map.set(shortNamePath, []);\n });\n fieldEntities.forEach(function (field) {\n var fieldNamePath = field.getNamePath(); // Find matched entity and put into list\n\n namePathList.forEach(function (shortNamePath) {\n if (shortNamePath.every(function (nameUnit, i) {\n return fieldNamePath[i] === nameUnit;\n })) {\n map.update(shortNamePath, function (list) {\n return [].concat(_toConsumableArray(list), [field]);\n });\n }\n });\n }); // Check if NameMap value is touched\n\n var isNamePathListTouched = function isNamePathListTouched(entities) {\n return entities.some(isFieldTouched);\n };\n\n var namePathListEntities = map.map(function (_ref) {\n var value = _ref.value;\n return value;\n });\n return isAllFieldsTouched ? namePathListEntities.every(isNamePathListTouched) : namePathListEntities.some(isNamePathListTouched);\n };\n\n this.isFieldTouched = function (name) {\n _this.warningUnhooked();\n\n return _this.isFieldsTouched([name]);\n };\n\n this.isFieldsValidating = function (nameList) {\n _this.warningUnhooked();\n\n var fieldEntities = _this.getFieldEntities();\n\n if (!nameList) {\n return fieldEntities.some(function (testField) {\n return testField.isFieldValidating();\n });\n }\n\n var namePathList = nameList.map(getNamePath);\n return fieldEntities.some(function (testField) {\n var fieldNamePath = testField.getNamePath();\n return containsNamePath(namePathList, fieldNamePath) && testField.isFieldValidating();\n });\n };\n\n this.isFieldValidating = function (name) {\n _this.warningUnhooked();\n\n return _this.isFieldsValidating([name]);\n };\n /**\n * Reset Field with field `initialValue` prop.\n * Can pass `entities` or `namePathList` or just nothing.\n */\n\n\n this.resetWithFieldInitialValue = function () {\n var info = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Create cache\n var cache = new NameMap();\n\n var fieldEntities = _this.getFieldEntities(true);\n\n fieldEntities.forEach(function (field) {\n var initialValue = field.props.initialValue;\n var namePath = field.getNamePath(); // Record only if has `initialValue`\n\n if (initialValue !== undefined) {\n var records = cache.get(namePath) || new Set();\n records.add({\n entity: field,\n value: initialValue\n });\n cache.set(namePath, records);\n }\n }); // Reset\n\n var resetWithFields = function resetWithFields(entities) {\n entities.forEach(function (field) {\n var initialValue = field.props.initialValue;\n\n if (initialValue !== undefined) {\n var namePath = field.getNamePath();\n\n var formInitialValue = _this.getInitialValue(namePath);\n\n if (formInitialValue !== undefined) {\n // Warning if conflict with form initialValues and do not modify value\n warning(false, \"Form already set 'initialValues' with path '\".concat(namePath.join('.'), \"'. Field can not overwrite it.\"));\n } else {\n var records = cache.get(namePath);\n\n if (records && records.size > 1) {\n // Warning if multiple field set `initialValue`and do not modify value\n warning(false, \"Multiple Field with path '\".concat(namePath.join('.'), \"' set 'initialValue'. Can not decide which one to pick.\"));\n } else if (records) {\n var originValue = _this.getFieldValue(namePath); // Set `initialValue`\n\n\n if (!info.skipExist || originValue === undefined) {\n _this.store = setValue(_this.store, namePath, _toConsumableArray(records)[0].value);\n }\n }\n }\n }\n });\n };\n\n var requiredFieldEntities;\n\n if (info.entities) {\n requiredFieldEntities = info.entities;\n } else if (info.namePathList) {\n requiredFieldEntities = [];\n info.namePathList.forEach(function (namePath) {\n var records = cache.get(namePath);\n\n if (records) {\n var _requiredFieldEntitie;\n\n (_requiredFieldEntitie = requiredFieldEntities).push.apply(_requiredFieldEntitie, _toConsumableArray(_toConsumableArray(records).map(function (r) {\n return r.entity;\n })));\n }\n });\n } else {\n requiredFieldEntities = fieldEntities;\n }\n\n resetWithFields(requiredFieldEntities);\n };\n\n this.resetFields = function (nameList) {\n _this.warningUnhooked();\n\n var prevStore = _this.store;\n\n if (!nameList) {\n _this.store = setValues({}, _this.initialValues);\n\n _this.resetWithFieldInitialValue();\n\n _this.notifyObservers(prevStore, null, {\n type: 'reset'\n });\n\n return;\n } // Reset by `nameList`\n\n\n var namePathList = nameList.map(getNamePath);\n namePathList.forEach(function (namePath) {\n var initialValue = _this.getInitialValue(namePath);\n\n _this.store = setValue(_this.store, namePath, initialValue);\n });\n\n _this.resetWithFieldInitialValue({\n namePathList: namePathList\n });\n\n _this.notifyObservers(prevStore, namePathList, {\n type: 'reset'\n });\n };\n\n this.setFields = function (fields) {\n _this.warningUnhooked();\n\n var prevStore = _this.store;\n fields.forEach(function (fieldData) {\n var name = fieldData.name,\n errors = fieldData.errors,\n data = _objectWithoutProperties(fieldData, [\"name\", \"errors\"]);\n\n var namePath = getNamePath(name); // Value\n\n if ('value' in data) {\n _this.store = setValue(_this.store, namePath, data.value);\n }\n\n _this.notifyObservers(prevStore, [namePath], {\n type: 'setField',\n data: fieldData\n });\n });\n };\n\n this.getFields = function () {\n var entities = _this.getFieldEntities(true);\n\n var fields = entities.map(function (field) {\n var namePath = field.getNamePath();\n var meta = field.getMeta();\n\n var fieldData = _objectSpread(_objectSpread({}, meta), {}, {\n name: namePath,\n value: _this.getFieldValue(namePath)\n });\n\n Object.defineProperty(fieldData, 'originRCField', {\n value: true\n });\n return fieldData;\n });\n return fields;\n }; // =========================== Observer ===========================\n\n /**\n * This only trigger when a field is on constructor to avoid we get initialValue too late\n */\n\n\n this.initEntityValue = function (entity) {\n var initialValue = entity.props.initialValue;\n\n if (initialValue !== undefined) {\n var namePath = entity.getNamePath();\n var prevValue = getValue(_this.store, namePath);\n\n if (prevValue === undefined) {\n _this.store = setValue(_this.store, namePath, initialValue);\n }\n }\n };\n\n this.registerField = function (entity) {\n _this.fieldEntities.push(entity); // Set initial values\n\n\n if (entity.props.initialValue !== undefined) {\n var prevStore = _this.store;\n\n _this.resetWithFieldInitialValue({\n entities: [entity],\n skipExist: true\n });\n\n _this.notifyObservers(prevStore, [entity.getNamePath()], {\n type: 'valueUpdate',\n source: 'internal'\n });\n } // un-register field callback\n\n\n return function (isListField, preserve) {\n _this.fieldEntities = _this.fieldEntities.filter(function (item) {\n return item !== entity;\n }); // Clean up store value if preserve\n\n var mergedPreserve = preserve !== undefined ? preserve : _this.preserve;\n\n if (mergedPreserve === false && !isListField) {\n var namePath = entity.getNamePath();\n\n if (namePath.length && _this.getFieldValue(namePath) !== undefined) {\n _this.store = setValue(_this.store, namePath, undefined);\n }\n }\n };\n };\n\n this.dispatch = function (action) {\n switch (action.type) {\n case 'updateValue':\n {\n var namePath = action.namePath,\n value = action.value;\n\n _this.updateValue(namePath, value);\n\n break;\n }\n\n case 'validateField':\n {\n var _namePath = action.namePath,\n triggerName = action.triggerName;\n\n _this.validateFields([_namePath], {\n triggerName: triggerName\n });\n\n break;\n }\n\n default: // Currently we don't have other action. Do nothing.\n\n }\n };\n\n this.notifyObservers = function (prevStore, namePathList, info) {\n if (_this.subscribable) {\n var mergedInfo = _objectSpread(_objectSpread({}, info), {}, {\n store: _this.getFieldsValue(true)\n });\n\n _this.getFieldEntities().forEach(function (_ref2) {\n var onStoreChange = _ref2.onStoreChange;\n onStoreChange(prevStore, namePathList, mergedInfo);\n });\n } else {\n _this.forceRootUpdate();\n }\n };\n\n this.updateValue = function (name, value) {\n var namePath = getNamePath(name);\n var prevStore = _this.store;\n _this.store = setValue(_this.store, namePath, value);\n\n _this.notifyObservers(prevStore, [namePath], {\n type: 'valueUpdate',\n source: 'internal'\n }); // Notify dependencies children with parent update\n // We need delay to trigger validate in case Field is under render props\n\n\n var childrenFields = _this.getDependencyChildrenFields(namePath);\n\n if (childrenFields.length) {\n _this.validateFields(childrenFields);\n }\n\n _this.notifyObservers(prevStore, childrenFields, {\n type: 'dependenciesUpdate',\n relatedFields: [namePath].concat(_toConsumableArray(childrenFields))\n }); // trigger callback function\n\n\n var onValuesChange = _this.callbacks.onValuesChange;\n\n if (onValuesChange) {\n var changedValues = cloneByNamePathList(_this.store, [namePath]);\n onValuesChange(changedValues, _this.getFieldsValue());\n }\n\n _this.triggerOnFieldsChange([namePath].concat(_toConsumableArray(childrenFields)));\n }; // Let all child Field get update.\n\n\n this.setFieldsValue = function (store) {\n _this.warningUnhooked();\n\n var prevStore = _this.store;\n\n if (store) {\n _this.store = setValues(_this.store, store);\n }\n\n _this.notifyObservers(prevStore, null, {\n type: 'valueUpdate',\n source: 'external'\n });\n };\n\n this.getDependencyChildrenFields = function (rootNamePath) {\n var children = new Set();\n var childrenFields = [];\n var dependencies2fields = new NameMap();\n /**\n * Generate maps\n * Can use cache to save perf if user report performance issue with this\n */\n\n _this.getFieldEntities().forEach(function (field) {\n var dependencies = field.props.dependencies;\n (dependencies || []).forEach(function (dependency) {\n var dependencyNamePath = getNamePath(dependency);\n dependencies2fields.update(dependencyNamePath, function () {\n var fields = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Set();\n fields.add(field);\n return fields;\n });\n });\n });\n\n var fillChildren = function fillChildren(namePath) {\n var fields = dependencies2fields.get(namePath) || new Set();\n fields.forEach(function (field) {\n if (!children.has(field)) {\n children.add(field);\n var fieldNamePath = field.getNamePath();\n\n if (field.isFieldDirty() && fieldNamePath.length) {\n childrenFields.push(fieldNamePath);\n fillChildren(fieldNamePath);\n }\n }\n });\n };\n\n fillChildren(rootNamePath);\n return childrenFields;\n };\n\n this.triggerOnFieldsChange = function (namePathList, filedErrors) {\n var onFieldsChange = _this.callbacks.onFieldsChange;\n\n if (onFieldsChange) {\n var fields = _this.getFields();\n /**\n * Fill errors since `fields` may be replaced by controlled fields\n */\n\n\n if (filedErrors) {\n var cache = new NameMap();\n filedErrors.forEach(function (_ref3) {\n var name = _ref3.name,\n errors = _ref3.errors;\n cache.set(name, errors);\n });\n fields.forEach(function (field) {\n // eslint-disable-next-line no-param-reassign\n field.errors = cache.get(field.name) || field.errors;\n });\n }\n\n var changedFields = fields.filter(function (_ref4) {\n var fieldName = _ref4.name;\n return containsNamePath(namePathList, fieldName);\n });\n onFieldsChange(changedFields, fields);\n }\n }; // =========================== Validate ===========================\n\n\n this.validateFields = function (nameList, options) {\n _this.warningUnhooked();\n\n var provideNameList = !!nameList;\n var namePathList = provideNameList ? nameList.map(getNamePath) : []; // Collect result in promise list\n\n var promiseList = [];\n\n _this.getFieldEntities(true).forEach(function (field) {\n // Add field if not provide `nameList`\n if (!provideNameList) {\n namePathList.push(field.getNamePath());\n }\n /**\n * Recursive validate if configured.\n * TODO: perf improvement @zombieJ\n */\n\n\n if ((options === null || options === void 0 ? void 0 : options.recursive) && provideNameList) {\n var namePath = field.getNamePath();\n\n if ( // nameList[i] === undefined 说明是以 nameList 开头的\n // ['name'] -> ['name','list']\n namePath.every(function (nameUnit, i) {\n return nameList[i] === nameUnit || nameList[i] === undefined;\n })) {\n namePathList.push(namePath);\n }\n } // Skip if without rule\n\n\n if (!field.props.rules || !field.props.rules.length) {\n return;\n }\n\n var fieldNamePath = field.getNamePath(); // Add field validate rule in to promise list\n\n if (!provideNameList || containsNamePath(namePathList, fieldNamePath)) {\n var promise = field.validateRules(_objectSpread({\n validateMessages: _objectSpread(_objectSpread({}, defaultValidateMessages), _this.validateMessages)\n }, options)); // Wrap promise with field\n\n promiseList.push(promise.then(function () {\n return {\n name: fieldNamePath,\n errors: []\n };\n }).catch(function (errors) {\n return Promise.reject({\n name: fieldNamePath,\n errors: errors\n });\n }));\n }\n });\n\n var summaryPromise = allPromiseFinish(promiseList);\n _this.lastValidatePromise = summaryPromise; // Notify fields with rule that validate has finished and need update\n\n summaryPromise.catch(function (results) {\n return results;\n }).then(function (results) {\n var resultNamePathList = results.map(function (_ref5) {\n var name = _ref5.name;\n return name;\n });\n\n _this.notifyObservers(_this.store, resultNamePathList, {\n type: 'validateFinish'\n });\n\n _this.triggerOnFieldsChange(resultNamePathList, results);\n });\n var returnPromise = summaryPromise.then(function () {\n if (_this.lastValidatePromise === summaryPromise) {\n return Promise.resolve(_this.getFieldsValue(namePathList));\n }\n\n return Promise.reject([]);\n }).catch(function (results) {\n var errorList = results.filter(function (result) {\n return result && result.errors.length;\n });\n return Promise.reject({\n values: _this.getFieldsValue(namePathList),\n errorFields: errorList,\n outOfDate: _this.lastValidatePromise !== summaryPromise\n });\n }); // Do not throw in console\n\n returnPromise.catch(function (e) {\n return e;\n });\n return returnPromise;\n }; // ============================ Submit ============================\n\n\n this.submit = function () {\n _this.warningUnhooked();\n\n _this.validateFields().then(function (values) {\n var onFinish = _this.callbacks.onFinish;\n\n if (onFinish) {\n try {\n onFinish(values);\n } catch (err) {\n // Should print error if user `onFinish` callback failed\n console.error(err);\n }\n }\n }).catch(function (e) {\n var onFinishFailed = _this.callbacks.onFinishFailed;\n\n if (onFinishFailed) {\n onFinishFailed(e);\n }\n });\n };\n\n this.forceRootUpdate = forceRootUpdate;\n};\n\nfunction useForm(form) {\n var formRef = React.useRef();\n\n var _React$useState = React.useState({}),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n forceUpdate = _React$useState2[1];\n\n if (!formRef.current) {\n if (form) {\n formRef.current = form;\n } else {\n // Create a new FormStore if not provided\n var forceReRender = function forceReRender() {\n forceUpdate({});\n };\n\n var formStore = new FormStore(forceReRender);\n formRef.current = formStore.getForm();\n }\n }\n\n return [formRef.current];\n}\n\nexport default useForm;","export function allPromiseFinish(promiseList) {\n var hasError = false;\n var count = promiseList.length;\n var results = [];\n\n if (!promiseList.length) {\n return Promise.resolve([]);\n }\n\n return new Promise(function (resolve, reject) {\n promiseList.forEach(function (promise, index) {\n promise.catch(function (e) {\n hasError = true;\n return e;\n }).then(function (result) {\n count -= 1;\n results[index] = result;\n\n if (count > 0) {\n return;\n }\n\n if (hasError) {\n reject(results);\n }\n\n resolve(results);\n });\n });\n });\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nvar FormContext = /*#__PURE__*/React.createContext({\n triggerFormChange: function triggerFormChange() {},\n triggerFormFinish: function triggerFormFinish() {},\n registerForm: function registerForm() {},\n unregisterForm: function unregisterForm() {}\n});\n\nvar FormProvider = function FormProvider(_ref) {\n var validateMessages = _ref.validateMessages,\n onFormChange = _ref.onFormChange,\n onFormFinish = _ref.onFormFinish,\n children = _ref.children;\n var formContext = React.useContext(FormContext);\n var formsRef = React.useRef({});\n return /*#__PURE__*/React.createElement(FormContext.Provider, {\n value: _objectSpread(_objectSpread({}, formContext), {}, {\n validateMessages: _objectSpread(_objectSpread({}, formContext.validateMessages), validateMessages),\n // =========================================================\n // = Global Form Control =\n // =========================================================\n triggerFormChange: function triggerFormChange(name, changedFields) {\n if (onFormChange) {\n onFormChange(name, {\n changedFields: changedFields,\n forms: formsRef.current\n });\n }\n\n formContext.triggerFormChange(name, changedFields);\n },\n triggerFormFinish: function triggerFormFinish(name, values) {\n if (onFormFinish) {\n onFormFinish(name, {\n values: values,\n forms: formsRef.current\n });\n }\n\n formContext.triggerFormFinish(name, values);\n },\n registerForm: function registerForm(name, form) {\n if (name) {\n formsRef.current = _objectSpread(_objectSpread({}, formsRef.current), {}, _defineProperty({}, name, form));\n }\n\n formContext.registerForm(name, form);\n },\n unregisterForm: function unregisterForm(name) {\n var newForms = _objectSpread({}, formsRef.current);\n\n delete newForms[name];\n formsRef.current = newForms;\n formContext.unregisterForm(name);\n }\n })\n }, children);\n};\n\nexport { FormProvider };\nexport default FormContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport useForm from './useForm';\nimport FieldContext, { HOOK_MARK } from './FieldContext';\nimport FormContext from './FormContext';\nimport { isSimilar } from './utils/valueUtil';\n\nvar Form = function Form(_ref, ref) {\n var name = _ref.name,\n initialValues = _ref.initialValues,\n fields = _ref.fields,\n form = _ref.form,\n preserve = _ref.preserve,\n children = _ref.children,\n _ref$component = _ref.component,\n Component = _ref$component === void 0 ? 'form' : _ref$component,\n validateMessages = _ref.validateMessages,\n _ref$validateTrigger = _ref.validateTrigger,\n validateTrigger = _ref$validateTrigger === void 0 ? 'onChange' : _ref$validateTrigger,\n onValuesChange = _ref.onValuesChange,\n _onFieldsChange = _ref.onFieldsChange,\n _onFinish = _ref.onFinish,\n onFinishFailed = _ref.onFinishFailed,\n restProps = _objectWithoutProperties(_ref, [\"name\", \"initialValues\", \"fields\", \"form\", \"preserve\", \"children\", \"component\", \"validateMessages\", \"validateTrigger\", \"onValuesChange\", \"onFieldsChange\", \"onFinish\", \"onFinishFailed\"]);\n\n var formContext = React.useContext(FormContext); // We customize handle event since Context will makes all the consumer re-render:\n // https://reactjs.org/docs/context.html#contextprovider\n\n var _useForm = useForm(form),\n _useForm2 = _slicedToArray(_useForm, 1),\n formInstance = _useForm2[0];\n\n var _formInstance$getInte = formInstance.getInternalHooks(HOOK_MARK),\n useSubscribe = _formInstance$getInte.useSubscribe,\n setInitialValues = _formInstance$getInte.setInitialValues,\n setCallbacks = _formInstance$getInte.setCallbacks,\n setValidateMessages = _formInstance$getInte.setValidateMessages,\n setPreserve = _formInstance$getInte.setPreserve; // Pass ref with form instance\n\n\n React.useImperativeHandle(ref, function () {\n return formInstance;\n }); // Register form into Context\n\n React.useEffect(function () {\n formContext.registerForm(name, formInstance);\n return function () {\n formContext.unregisterForm(name);\n };\n }, [formContext, formInstance, name]); // Pass props to store\n\n setValidateMessages(_objectSpread(_objectSpread({}, formContext.validateMessages), validateMessages));\n setCallbacks({\n onValuesChange: onValuesChange,\n onFieldsChange: function onFieldsChange(changedFields) {\n formContext.triggerFormChange(name, changedFields);\n\n if (_onFieldsChange) {\n for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n\n _onFieldsChange.apply(void 0, [changedFields].concat(rest));\n }\n },\n onFinish: function onFinish(values) {\n formContext.triggerFormFinish(name, values);\n\n if (_onFinish) {\n _onFinish(values);\n }\n },\n onFinishFailed: onFinishFailed\n });\n setPreserve(preserve); // Set initial value, init store value when first mount\n\n var mountRef = React.useRef(null);\n setInitialValues(initialValues, !mountRef.current);\n\n if (!mountRef.current) {\n mountRef.current = true;\n } // Prepare children by `children` type\n\n\n var childrenNode = children;\n var childrenRenderProps = typeof children === 'function';\n\n if (childrenRenderProps) {\n var values = formInstance.getFieldsValue(true);\n childrenNode = children(values, formInstance);\n } // Not use subscribe when using render props\n\n\n useSubscribe(!childrenRenderProps); // Listen if fields provided. We use ref to save prev data here to avoid additional render\n\n var prevFieldsRef = React.useRef();\n React.useEffect(function () {\n if (!isSimilar(prevFieldsRef.current || [], fields || [])) {\n formInstance.setFields(fields || []);\n }\n\n prevFieldsRef.current = fields;\n }, [fields, formInstance]);\n var formContextValue = React.useMemo(function () {\n return _objectSpread(_objectSpread({}, formInstance), {}, {\n validateTrigger: validateTrigger\n });\n }, [formInstance, validateTrigger]);\n var wrapperNode = /*#__PURE__*/React.createElement(FieldContext.Provider, {\n value: formContextValue\n }, childrenNode);\n\n if (Component === false) {\n return wrapperNode;\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({}, restProps, {\n onSubmit: function onSubmit(event) {\n event.preventDefault();\n event.stopPropagation();\n formInstance.submit();\n }\n }), wrapperNode);\n};\n\nexport default Form;","import * as React from 'react';\nimport Field from './Field';\nimport List from './List';\nimport useForm from './useForm';\nimport FieldForm from './Form';\nimport { FormProvider } from './FormContext';\nvar InternalForm = /*#__PURE__*/React.forwardRef(FieldForm);\nvar RefForm = InternalForm;\nRefForm.FormProvider = FormProvider;\nRefForm.Field = Field;\nRefForm.List = List;\nRefForm.useForm = useForm;\nexport { Field, List, useForm, FormProvider };\nexport default RefForm;","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nexport var MiniStoreContext = React.createContext(null);\nvar Provider = /** @class */ (function (_super) {\n __extends(Provider, _super);\n function Provider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Provider.prototype.render = function () {\n return (React.createElement(MiniStoreContext.Provider, { value: this.props.store }, this.props.children));\n };\n return Provider;\n}(React.Component));\nexport { Provider };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport shallowEqual from 'shallowequal';\nimport hoistStatics from 'hoist-non-react-statics';\nimport { MiniStoreContext } from './Provider';\nfunction getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n}\nvar defaultMapStateToProps = function () { return ({}); };\nexport function connect(mapStateToProps, options) {\n if (options === void 0) { options = {}; }\n var shouldSubscribe = !!mapStateToProps;\n var finalMapStateToProps = mapStateToProps || defaultMapStateToProps;\n return function wrapWithConnect(WrappedComponent) {\n var Connect = /** @class */ (function (_super) {\n __extends(Connect, _super);\n function Connect(props, context) {\n var _this = _super.call(this, props, context) || this;\n _this.unsubscribe = null;\n _this.handleChange = function () {\n if (!_this.unsubscribe) {\n return;\n }\n var nextState = finalMapStateToProps(_this.store.getState(), _this.props);\n _this.setState({ subscribed: nextState });\n };\n _this.store = _this.context;\n _this.state = {\n subscribed: finalMapStateToProps(_this.store.getState(), props),\n store: _this.store,\n props: props,\n };\n return _this;\n }\n Connect.getDerivedStateFromProps = function (props, prevState) {\n // using ownProps\n if (mapStateToProps && mapStateToProps.length === 2 && props !== prevState.props) {\n return {\n subscribed: finalMapStateToProps(prevState.store.getState(), props),\n props: props,\n };\n }\n return { props: props };\n };\n Connect.prototype.componentDidMount = function () {\n this.trySubscribe();\n };\n Connect.prototype.componentWillUnmount = function () {\n this.tryUnsubscribe();\n };\n Connect.prototype.shouldComponentUpdate = function (nextProps, nextState) {\n return (!shallowEqual(this.props, nextProps) ||\n !shallowEqual(this.state.subscribed, nextState.subscribed));\n };\n Connect.prototype.trySubscribe = function () {\n if (shouldSubscribe) {\n this.unsubscribe = this.store.subscribe(this.handleChange);\n this.handleChange();\n }\n };\n Connect.prototype.tryUnsubscribe = function () {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n }\n };\n Connect.prototype.render = function () {\n var props = __assign(__assign(__assign({}, this.props), this.state.subscribed), { store: this.store });\n return React.createElement(WrappedComponent, __assign({}, props, { ref: this.props.miniStoreForwardedRef }));\n };\n Connect.displayName = \"Connect(\" + getDisplayName(WrappedComponent) + \")\";\n Connect.contextType = MiniStoreContext;\n return Connect;\n }(React.Component));\n if (options.forwardRef) {\n var forwarded = React.forwardRef(function (props, ref) {\n return React.createElement(Connect, __assign({}, props, { miniStoreForwardedRef: ref }));\n });\n return hoistStatics(forwarded, WrappedComponent);\n }\n return hoistStatics(Connect, WrappedComponent);\n };\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nexport function create(initialState) {\n var state = initialState;\n var listeners = [];\n function setState(partial) {\n state = __assign(__assign({}, state), partial);\n for (var i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n }\n function getState() {\n return state;\n }\n function subscribe(listener) {\n listeners.push(listener);\n return function unsubscribe() {\n var index = listeners.indexOf(listener);\n listeners.splice(index, 1);\n };\n }\n return {\n setState: setState,\n getState: getState,\n subscribe: subscribe,\n };\n}\n","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @returns {function|null}\n */\nexport default function createChainedFunction() {\n var args = [].slice.call(arguments, 0);\n if (args.length === 1) {\n return args[0];\n }\n return function chainedFunction() {\n for (var i = 0; i < args.length; i++) {\n if (args[i] && args[i].apply) {\n args[i].apply(this, arguments);\n }\n }\n };\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n// MIT License from https://github.com/kaimallea/isMobile\nvar applePhone = /iPhone/i;\nvar appleIpod = /iPod/i;\nvar appleTablet = /iPad/i;\nvar androidPhone = /\\bAndroid(?:.+)Mobile\\b/i; // Match 'Android' AND 'Mobile'\n\nvar androidTablet = /Android/i;\nvar amazonPhone = /\\bAndroid(?:.+)SD4930UR\\b/i;\nvar amazonTablet = /\\bAndroid(?:.+)(?:KF[A-Z]{2,4})\\b/i;\nvar windowsPhone = /Windows Phone/i;\nvar windowsTablet = /\\bWindows(?:.+)ARM\\b/i; // Match 'Windows' AND 'ARM'\n\nvar otherBlackberry = /BlackBerry/i;\nvar otherBlackberry10 = /BB10/i;\nvar otherOpera = /Opera Mini/i;\nvar otherChrome = /\\b(CriOS|Chrome)(?:.+)Mobile/i;\nvar otherFirefox = /Mobile(?:.+)Firefox\\b/i; // Match 'Mobile' AND 'Firefox'\n\nfunction match(regex, userAgent) {\n return regex.test(userAgent);\n}\n\nfunction isMobile(userAgent) {\n var ua = userAgent || (typeof navigator !== 'undefined' ? navigator.userAgent : ''); // Facebook mobile app's integrated browser adds a bunch of strings that\n // match everything. Strip it out if it exists.\n\n var tmp = ua.split('[FBAN');\n\n if (typeof tmp[1] !== 'undefined') {\n var _tmp = tmp;\n\n var _tmp2 = _slicedToArray(_tmp, 1);\n\n ua = _tmp2[0];\n } // Twitter mobile app's integrated browser on iPad adds a \"Twitter for\n // iPhone\" string. Same probably happens on other tablet platforms.\n // This will confuse detection so strip it out if it exists.\n\n\n tmp = ua.split('Twitter');\n\n if (typeof tmp[1] !== 'undefined') {\n var _tmp3 = tmp;\n\n var _tmp4 = _slicedToArray(_tmp3, 1);\n\n ua = _tmp4[0];\n }\n\n var result = {\n apple: {\n phone: match(applePhone, ua) && !match(windowsPhone, ua),\n ipod: match(appleIpod, ua),\n tablet: !match(applePhone, ua) && match(appleTablet, ua) && !match(windowsPhone, ua),\n device: (match(applePhone, ua) || match(appleIpod, ua) || match(appleTablet, ua)) && !match(windowsPhone, ua)\n },\n amazon: {\n phone: match(amazonPhone, ua),\n tablet: !match(amazonPhone, ua) && match(amazonTablet, ua),\n device: match(amazonPhone, ua) || match(amazonTablet, ua)\n },\n android: {\n phone: !match(windowsPhone, ua) && match(amazonPhone, ua) || !match(windowsPhone, ua) && match(androidPhone, ua),\n tablet: !match(windowsPhone, ua) && !match(amazonPhone, ua) && !match(androidPhone, ua) && (match(amazonTablet, ua) || match(androidTablet, ua)),\n device: !match(windowsPhone, ua) && (match(amazonPhone, ua) || match(amazonTablet, ua) || match(androidPhone, ua) || match(androidTablet, ua)) || match(/\\bokhttp\\b/i, ua)\n },\n windows: {\n phone: match(windowsPhone, ua),\n tablet: match(windowsTablet, ua),\n device: match(windowsPhone, ua) || match(windowsTablet, ua)\n },\n other: {\n blackberry: match(otherBlackberry, ua),\n blackberry10: match(otherBlackberry10, ua),\n opera: match(otherOpera, ua),\n firefox: match(otherFirefox, ua),\n chrome: match(otherChrome, ua),\n device: match(otherBlackberry, ua) || match(otherBlackberry10, ua) || match(otherOpera, ua) || match(otherFirefox, ua) || match(otherChrome, ua)\n },\n // Additional\n any: null,\n phone: null,\n tablet: null\n };\n result.any = result.apple.device || result.android.device || result.windows.device || result.other.device; // excludes 'other' devices and ipods, targeting touchscreen phones\n\n result.phone = result.apple.phone || result.android.phone || result.windows.phone;\n result.tablet = result.apple.tablet || result.android.tablet || result.windows.tablet;\n return result;\n}\n\nvar defaultResult = _objectSpread(_objectSpread({}, isMobile()), {}, {\n isMobile: isMobile\n});\n\nexport default defaultResult;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport * as React from 'react';\nimport isMobile from './utils/isMobile';\nexport function noop() {}\nexport function getKeyFromChildrenIndex(child, menuEventKey, index) {\n var prefix = menuEventKey || '';\n return child.key || \"\".concat(prefix, \"item_\").concat(index);\n}\nexport function getMenuIdFromSubMenuEventKey(eventKey) {\n return \"\".concat(eventKey, \"-menu-\");\n}\nexport function loopMenuItem(children, cb) {\n var index = -1;\n React.Children.forEach(children, function (c) {\n index += 1;\n\n if (c && c.type && c.type.isMenuItemGroup) {\n React.Children.forEach(c.props.children, function (c2) {\n index += 1;\n cb(c2, index);\n });\n } else {\n cb(c, index);\n }\n });\n}\nexport function loopMenuItemRecursively(children, keys, ret) {\n /* istanbul ignore if */\n if (!children || ret.find) {\n return;\n }\n\n React.Children.forEach(children, function (c) {\n if (c) {\n var construct = c.type;\n\n if (!construct || !(construct.isSubMenu || construct.isMenuItem || construct.isMenuItemGroup)) {\n return;\n }\n\n if (keys.indexOf(c.key) !== -1) {\n // eslint-disable-next-line no-param-reassign\n ret.find = true;\n } else if (c.props.children) {\n loopMenuItemRecursively(c.props.children, keys, ret);\n }\n }\n });\n}\nexport var menuAllProps = ['defaultSelectedKeys', 'selectedKeys', 'defaultOpenKeys', 'openKeys', 'mode', 'getPopupContainer', 'onSelect', 'onDeselect', 'onDestroy', 'openTransitionName', 'openAnimation', 'subMenuOpenDelay', 'subMenuCloseDelay', 'forceSubMenuRender', 'triggerSubMenuAction', 'level', 'selectable', 'multiple', 'onOpenChange', 'visible', 'focusable', 'defaultActiveFirst', 'prefixCls', 'inlineIndent', 'parentMenu', 'title', 'rootPrefixCls', 'eventKey', 'active', 'onItemHover', 'onTitleMouseEnter', 'onTitleMouseLeave', 'onTitleClick', 'popupAlign', 'popupOffset', 'isOpen', 'renderMenuItem', 'manualRef', 'subMenuKey', 'disabled', 'index', 'isSelected', 'store', 'activeKey', 'builtinPlacements', 'overflowedIndicator', 'motion', // the following keys found need to be removed from test regression\n'attribute', 'value', 'popupClassName', 'inlineCollapsed', 'menu', 'theme', 'itemIcon', 'expandIcon']; // ref: https://github.com/ant-design/ant-design/issues/14007\n// ref: https://bugs.chromium.org/p/chromium/issues/detail?id=360889\n// getBoundingClientRect return the full precision value, which is\n// not the same behavior as on chrome. Set the precision to 6 to\n// unify their behavior\n\nexport var getWidth = function getWidth(elem) {\n var includeMargin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var width = elem && typeof elem.getBoundingClientRect === 'function' && elem.getBoundingClientRect().width;\n\n if (width) {\n if (includeMargin) {\n var _getComputedStyle = getComputedStyle(elem),\n marginLeft = _getComputedStyle.marginLeft,\n marginRight = _getComputedStyle.marginRight;\n\n width += +marginLeft.replace('px', '') + +marginRight.replace('px', '');\n }\n\n width = +width.toFixed(6);\n }\n\n return width || 0;\n};\nexport var setStyle = function setStyle(elem, styleProperty, value) {\n if (elem && _typeof(elem.style) === 'object') {\n // eslint-disable-next-line no-param-reassign\n elem.style[styleProperty] = value;\n }\n};\nexport var isMobileDevice = function isMobileDevice() {\n return isMobile.any;\n};","var autoAdjustOverflow = {\n adjustX: 1,\n adjustY: 1\n};\nexport var placements = {\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -7]\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 7]\n },\n leftTop: {\n points: ['tr', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0]\n },\n rightTop: {\n points: ['tl', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [4, 0]\n }\n};\nexport var placementsRtl = {\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -7]\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 7]\n },\n rightTop: {\n points: ['tr', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0]\n },\n leftTop: {\n points: ['tl', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [4, 0]\n }\n};\nexport default placements;","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport Trigger from 'rc-trigger';\nimport raf from \"rc-util/es/raf\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport CSSMotion from 'rc-motion';\nimport classNames from 'classnames';\nimport { connect } from 'mini-store';\nimport SubPopupMenu from './SubPopupMenu';\nimport { placements, placementsRtl } from './placements';\nimport { noop, loopMenuItemRecursively, getMenuIdFromSubMenuEventKey, menuAllProps } from './util';\nvar guid = 0;\nvar popupPlacementMap = {\n horizontal: 'bottomLeft',\n vertical: 'rightTop',\n 'vertical-left': 'rightTop',\n 'vertical-right': 'leftTop'\n};\n\nvar updateDefaultActiveFirst = function updateDefaultActiveFirst(store, eventKey, defaultActiveFirst) {\n var menuId = getMenuIdFromSubMenuEventKey(eventKey);\n var state = store.getState();\n store.setState({\n defaultActiveFirst: _objectSpread(_objectSpread({}, state.defaultActiveFirst), {}, _defineProperty({}, menuId, defaultActiveFirst))\n });\n};\n\nexport var SubMenu = /*#__PURE__*/function (_React$Component) {\n _inherits(SubMenu, _React$Component);\n\n var _super = _createSuper(SubMenu);\n\n function SubMenu(props) {\n var _this;\n\n _classCallCheck(this, SubMenu);\n\n _this = _super.call(this, props);\n\n _this.onDestroy = function (key) {\n _this.props.onDestroy(key);\n };\n /**\n * note:\n * This legacy code that `onKeyDown` is called by parent instead of dom self.\n * which need return code to check if this event is handled\n */\n\n\n _this.onKeyDown = function (e) {\n var keyCode = e.keyCode;\n var menu = _this.menuInstance;\n var store = _this.props.store;\n\n var visible = _this.getVisible();\n\n if (keyCode === KeyCode.ENTER) {\n _this.onTitleClick(e);\n\n updateDefaultActiveFirst(store, _this.props.eventKey, true);\n return true;\n }\n\n if (keyCode === KeyCode.RIGHT) {\n if (visible) {\n menu.onKeyDown(e);\n } else {\n _this.triggerOpenChange(true); // need to update current menu's defaultActiveFirst value\n\n\n updateDefaultActiveFirst(store, _this.props.eventKey, true);\n }\n\n return true;\n }\n\n if (keyCode === KeyCode.LEFT) {\n var handled;\n\n if (visible) {\n handled = menu.onKeyDown(e);\n } else {\n return undefined;\n }\n\n if (!handled) {\n _this.triggerOpenChange(false);\n\n handled = true;\n }\n\n return handled;\n }\n\n if (visible && (keyCode === KeyCode.UP || keyCode === KeyCode.DOWN)) {\n return menu.onKeyDown(e);\n }\n\n return undefined;\n };\n\n _this.onOpenChange = function (e) {\n _this.props.onOpenChange(e);\n };\n\n _this.onPopupVisibleChange = function (visible) {\n _this.triggerOpenChange(visible, visible ? 'mouseenter' : 'mouseleave');\n };\n\n _this.onMouseEnter = function (e) {\n var _this$props = _this.props,\n key = _this$props.eventKey,\n onMouseEnter = _this$props.onMouseEnter,\n store = _this$props.store;\n updateDefaultActiveFirst(store, _this.props.eventKey, false);\n onMouseEnter({\n key: key,\n domEvent: e\n });\n };\n\n _this.onMouseLeave = function (e) {\n var _this$props2 = _this.props,\n parentMenu = _this$props2.parentMenu,\n eventKey = _this$props2.eventKey,\n onMouseLeave = _this$props2.onMouseLeave;\n parentMenu.subMenuInstance = _assertThisInitialized(_this);\n onMouseLeave({\n key: eventKey,\n domEvent: e\n });\n };\n\n _this.onTitleMouseEnter = function (domEvent) {\n var _this$props3 = _this.props,\n key = _this$props3.eventKey,\n onItemHover = _this$props3.onItemHover,\n onTitleMouseEnter = _this$props3.onTitleMouseEnter;\n onItemHover({\n key: key,\n hover: true\n });\n onTitleMouseEnter({\n key: key,\n domEvent: domEvent\n });\n };\n\n _this.onTitleMouseLeave = function (e) {\n var _this$props4 = _this.props,\n parentMenu = _this$props4.parentMenu,\n eventKey = _this$props4.eventKey,\n onItemHover = _this$props4.onItemHover,\n onTitleMouseLeave = _this$props4.onTitleMouseLeave;\n parentMenu.subMenuInstance = _assertThisInitialized(_this);\n onItemHover({\n key: eventKey,\n hover: false\n });\n onTitleMouseLeave({\n key: eventKey,\n domEvent: e\n });\n };\n\n _this.onTitleClick = function (e) {\n var _assertThisInitialize = _assertThisInitialized(_this),\n props = _assertThisInitialize.props;\n\n props.onTitleClick({\n key: props.eventKey,\n domEvent: e\n });\n\n if (props.triggerSubMenuAction === 'hover') {\n return;\n }\n\n _this.triggerOpenChange(!_this.getVisible(), 'click');\n\n updateDefaultActiveFirst(props.store, _this.props.eventKey, false);\n };\n\n _this.onSubMenuClick = function (info) {\n // in the case of overflowed submenu\n // onClick is not copied over\n if (typeof _this.props.onClick === 'function') {\n _this.props.onClick(_this.addKeyPath(info));\n }\n };\n\n _this.onSelect = function (info) {\n _this.props.onSelect(info);\n };\n\n _this.onDeselect = function (info) {\n _this.props.onDeselect(info);\n };\n\n _this.getPrefixCls = function () {\n return \"\".concat(_this.props.rootPrefixCls, \"-submenu\");\n };\n\n _this.getActiveClassName = function () {\n return \"\".concat(_this.getPrefixCls(), \"-active\");\n };\n\n _this.getDisabledClassName = function () {\n return \"\".concat(_this.getPrefixCls(), \"-disabled\");\n };\n\n _this.getSelectedClassName = function () {\n return \"\".concat(_this.getPrefixCls(), \"-selected\");\n };\n\n _this.getOpenClassName = function () {\n return \"\".concat(_this.props.rootPrefixCls, \"-submenu-open\");\n };\n\n _this.getVisible = function () {\n return _this.state.isOpen;\n };\n\n _this.getMode = function () {\n return _this.state.mode;\n };\n\n _this.saveMenuInstance = function (c) {\n // children menu instance\n _this.menuInstance = c;\n };\n\n _this.addKeyPath = function (info) {\n return _objectSpread(_objectSpread({}, info), {}, {\n keyPath: (info.keyPath || []).concat(_this.props.eventKey)\n });\n };\n\n _this.triggerOpenChange = function (open, type) {\n var key = _this.props.eventKey;\n\n var openChange = function openChange() {\n _this.onOpenChange({\n key: key,\n item: _assertThisInitialized(_this),\n trigger: type,\n open: open\n });\n };\n\n if (type === 'mouseenter') {\n // make sure mouseenter happen after other menu item's mouseleave\n _this.mouseenterTimeout = setTimeout(function () {\n openChange();\n }, 0);\n } else {\n openChange();\n }\n };\n\n _this.isChildrenSelected = function () {\n var ret = {\n find: false\n };\n loopMenuItemRecursively(_this.props.children, _this.props.selectedKeys, ret);\n return ret.find;\n };\n\n _this.isInlineMode = function () {\n return _this.getMode() === 'inline';\n };\n\n _this.adjustWidth = function () {\n /* istanbul ignore if */\n if (!_this.subMenuTitle || !_this.menuInstance) {\n return;\n }\n\n var popupMenu = ReactDOM.findDOMNode(_this.menuInstance);\n\n if (popupMenu.offsetWidth >= _this.subMenuTitle.offsetWidth) {\n return;\n }\n /* istanbul ignore next */\n\n\n popupMenu.style.minWidth = \"\".concat(_this.subMenuTitle.offsetWidth, \"px\");\n };\n\n _this.saveSubMenuTitle = function (subMenuTitle) {\n _this.subMenuTitle = subMenuTitle;\n };\n\n _this.getBaseProps = function () {\n var _assertThisInitialize2 = _assertThisInitialized(_this),\n props = _assertThisInitialize2.props;\n\n var mergedMode = _this.getMode();\n\n return {\n mode: mergedMode === 'horizontal' ? 'vertical' : mergedMode,\n visible: _this.getVisible(),\n level: props.level + 1,\n inlineIndent: props.inlineIndent,\n focusable: false,\n onClick: _this.onSubMenuClick,\n onSelect: _this.onSelect,\n onDeselect: _this.onDeselect,\n onDestroy: _this.onDestroy,\n selectedKeys: props.selectedKeys,\n eventKey: \"\".concat(props.eventKey, \"-menu-\"),\n openKeys: props.openKeys,\n motion: props.motion,\n onOpenChange: _this.onOpenChange,\n subMenuOpenDelay: props.subMenuOpenDelay,\n parentMenu: _assertThisInitialized(_this),\n subMenuCloseDelay: props.subMenuCloseDelay,\n forceSubMenuRender: props.forceSubMenuRender,\n triggerSubMenuAction: props.triggerSubMenuAction,\n builtinPlacements: props.builtinPlacements,\n defaultActiveFirst: props.store.getState().defaultActiveFirst[getMenuIdFromSubMenuEventKey(props.eventKey)],\n multiple: props.multiple,\n prefixCls: props.rootPrefixCls,\n id: _this.internalMenuId,\n manualRef: _this.saveMenuInstance,\n itemIcon: props.itemIcon,\n expandIcon: props.expandIcon,\n direction: props.direction\n };\n };\n\n _this.getMotion = function (mode, visible) {\n var _assertThisInitialize3 = _assertThisInitialized(_this),\n haveRendered = _assertThisInitialize3.haveRendered;\n\n var _this$props5 = _this.props,\n motion = _this$props5.motion,\n rootPrefixCls = _this$props5.rootPrefixCls; // don't show transition on first rendering (no animation for opened menu)\n // show appear transition if it's not visible (not sure why)\n // show appear transition if it's not inline mode\n\n var mergedMotion = _objectSpread(_objectSpread({}, motion), {}, {\n leavedClassName: \"\".concat(rootPrefixCls, \"-hidden\"),\n removeOnLeave: false,\n motionAppear: haveRendered || !visible || mode !== 'inline'\n });\n\n return mergedMotion;\n };\n\n var store = props.store,\n eventKey = props.eventKey;\n\n var _store$getState = store.getState(),\n defaultActiveFirst = _store$getState.defaultActiveFirst;\n\n _this.isRootMenu = false;\n var value = false;\n\n if (defaultActiveFirst) {\n value = defaultActiveFirst[eventKey];\n }\n\n updateDefaultActiveFirst(store, eventKey, value);\n _this.state = {\n mode: props.mode,\n isOpen: props.isOpen\n };\n return _this;\n }\n\n _createClass(SubMenu, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.componentDidUpdate();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n var _this2 = this;\n\n var _this$props6 = this.props,\n mode = _this$props6.mode,\n parentMenu = _this$props6.parentMenu,\n manualRef = _this$props6.manualRef,\n isOpen = _this$props6.isOpen;\n\n var updateState = function updateState() {\n _this2.setState({\n mode: mode,\n isOpen: isOpen\n });\n }; // Delay sync when mode changed in case openKeys change not sync\n\n\n var isOpenChanged = isOpen !== this.state.isOpen;\n var isModeChanged = mode !== this.state.mode;\n\n if (isModeChanged || isOpenChanged) {\n raf.cancel(this.updateStateRaf);\n\n if (isModeChanged) {\n this.updateStateRaf = raf(updateState);\n } else {\n updateState();\n }\n } // invoke customized ref to expose component to mixin\n\n\n if (manualRef) {\n manualRef(this);\n }\n\n if (mode !== 'horizontal' || !(parentMenu === null || parentMenu === void 0 ? void 0 : parentMenu.isRootMenu) || !isOpen) {\n return;\n }\n\n this.minWidthTimeout = setTimeout(function () {\n return _this2.adjustWidth();\n }, 0);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var _this$props7 = this.props,\n onDestroy = _this$props7.onDestroy,\n eventKey = _this$props7.eventKey;\n\n if (onDestroy) {\n onDestroy(eventKey);\n }\n /* istanbul ignore if */\n\n\n if (this.minWidthTimeout) {\n clearTimeout(this.minWidthTimeout);\n }\n /* istanbul ignore if */\n\n\n if (this.mouseenterTimeout) {\n clearTimeout(this.mouseenterTimeout);\n }\n\n raf.cancel(this.updateStateRaf);\n }\n }, {\n key: \"renderPopupMenu\",\n value: function renderPopupMenu(className, style) {\n var baseProps = this.getBaseProps();\n /**\n * zombiej: Why SubPopupMenu here?\n * Seems whatever popup or inline mode both will render SubPopupMenu.\n * It's controlled by Trigger for popup or not.\n */\n\n return React.createElement(SubPopupMenu, Object.assign({}, baseProps, {\n id: this.internalMenuId,\n className: className,\n style: style\n }), this.props.children);\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren() {\n var _this3 = this;\n\n var baseProps = this.getBaseProps();\n var mode = baseProps.mode,\n visible = baseProps.visible,\n forceSubMenuRender = baseProps.forceSubMenuRender,\n direction = baseProps.direction; // [Legacy] getMotion must be called before `haveRendered`\n\n var mergedMotion = this.getMotion(mode, visible);\n this.haveRendered = true;\n this.haveOpened = this.haveOpened || visible || forceSubMenuRender; // never rendered not planning to, don't render\n\n if (!this.haveOpened) {\n return React.createElement(\"div\", null);\n }\n\n var sharedClassName = classNames(\"\".concat(baseProps.prefixCls, \"-sub\"), _defineProperty({}, \"\".concat(baseProps.prefixCls, \"-rtl\"), direction === 'rtl'));\n\n if (!this.isInlineMode()) {\n return this.renderPopupMenu(sharedClassName);\n }\n\n return React.createElement(CSSMotion, Object.assign({\n visible: baseProps.visible\n }, mergedMotion), function (_ref) {\n var className = _ref.className,\n style = _ref.style;\n var mergedClassName = classNames(sharedClassName, className);\n return _this3.renderPopupMenu(mergedClassName, style);\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classNames2, _props$parentMenu, _classNames3;\n\n var props = _objectSpread({}, this.props);\n\n var visible = this.getVisible();\n var prefixCls = this.getPrefixCls();\n var inline = this.isInlineMode();\n var mergedMode = this.getMode();\n var className = classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(mergedMode), (_classNames2 = {}, _defineProperty(_classNames2, props.className, !!props.className), _defineProperty(_classNames2, this.getOpenClassName(), visible), _defineProperty(_classNames2, this.getActiveClassName(), props.active || visible && !inline), _defineProperty(_classNames2, this.getDisabledClassName(), props.disabled), _defineProperty(_classNames2, this.getSelectedClassName(), this.isChildrenSelected()), _classNames2));\n\n if (!this.internalMenuId) {\n if (props.eventKey) {\n this.internalMenuId = \"\".concat(props.eventKey, \"$Menu\");\n } else {\n guid += 1;\n this.internalMenuId = \"$__$\".concat(guid, \"$Menu\");\n }\n }\n\n var mouseEvents = {};\n var titleClickEvents = {};\n var titleMouseEvents = {};\n\n if (!props.disabled) {\n mouseEvents = {\n onMouseLeave: this.onMouseLeave,\n onMouseEnter: this.onMouseEnter\n }; // only works in title, not outer li\n\n titleClickEvents = {\n onClick: this.onTitleClick\n };\n titleMouseEvents = {\n onMouseEnter: this.onTitleMouseEnter,\n onMouseLeave: this.onTitleMouseLeave\n };\n }\n\n var style = {};\n var direction = props.direction;\n var isRTL = direction === 'rtl';\n\n if (inline) {\n if (isRTL) {\n style.paddingRight = props.inlineIndent * props.level;\n } else {\n style.paddingLeft = props.inlineIndent * props.level;\n }\n }\n\n var ariaOwns = {}; // only set aria-owns when menu is open\n // otherwise it would be an invalid aria-owns value\n // since corresponding node cannot be found\n\n if (this.getVisible()) {\n ariaOwns = {\n 'aria-owns': this.internalMenuId\n };\n } // expand custom icon should NOT be displayed in menu with horizontal mode.\n\n\n var icon = null;\n\n if (mergedMode !== 'horizontal') {\n icon = this.props.expandIcon; // ReactNode\n\n if (typeof this.props.expandIcon === 'function') {\n icon = React.createElement(this.props.expandIcon, _objectSpread({}, this.props));\n }\n }\n\n var title = React.createElement(\"div\", Object.assign({\n ref: this.saveSubMenuTitle,\n style: style,\n className: \"\".concat(prefixCls, \"-title\"),\n role: \"button\"\n }, titleMouseEvents, titleClickEvents, {\n \"aria-expanded\": visible\n }, ariaOwns, {\n \"aria-haspopup\": \"true\",\n title: typeof props.title === 'string' ? props.title : undefined\n }), props.title, icon || React.createElement(\"i\", {\n className: \"\".concat(prefixCls, \"-arrow\")\n }));\n var children = this.renderChildren();\n var getPopupContainer = ((_props$parentMenu = props.parentMenu) === null || _props$parentMenu === void 0 ? void 0 : _props$parentMenu.isRootMenu) ? props.parentMenu.props.getPopupContainer : function (triggerNode) {\n return triggerNode.parentNode;\n };\n var popupPlacement = popupPlacementMap[mergedMode];\n var popupAlign = props.popupOffset ? {\n offset: props.popupOffset\n } : {};\n var popupClassName = classNames((_classNames3 = {}, _defineProperty(_classNames3, props.popupClassName, props.popupClassName && !inline), _defineProperty(_classNames3, \"\".concat(prefixCls, \"-rtl\"), isRTL), _classNames3));\n var disabled = props.disabled,\n triggerSubMenuAction = props.triggerSubMenuAction,\n subMenuOpenDelay = props.subMenuOpenDelay,\n forceSubMenuRender = props.forceSubMenuRender,\n subMenuCloseDelay = props.subMenuCloseDelay,\n builtinPlacements = props.builtinPlacements;\n menuAllProps.forEach(function (key) {\n return delete props[key];\n }); // Set onClick to null, to ignore propagated onClick event\n\n delete props.onClick;\n var placement = isRTL ? Object.assign({}, placementsRtl, builtinPlacements) : Object.assign({}, placements, builtinPlacements);\n delete props.direction; // [Legacy] It's a fast fix,\n // but we should check if we can refactor this to make code more easy to understand\n\n var baseProps = this.getBaseProps();\n var mergedMotion = inline ? null : this.getMotion(baseProps.mode, baseProps.visible);\n return React.createElement(\"li\", Object.assign({}, props, mouseEvents, {\n className: className,\n role: \"menuitem\"\n }), React.createElement(Trigger, {\n prefixCls: prefixCls,\n popupClassName: classNames(\"\".concat(prefixCls, \"-popup\"), popupClassName),\n getPopupContainer: getPopupContainer,\n builtinPlacements: placement,\n popupPlacement: popupPlacement,\n popupVisible: inline ? false : visible,\n popupAlign: popupAlign,\n popup: inline ? null : children,\n action: disabled || inline ? [] : [triggerSubMenuAction],\n mouseEnterDelay: subMenuOpenDelay,\n mouseLeaveDelay: subMenuCloseDelay,\n onPopupVisibleChange: this.onPopupVisibleChange,\n forceRender: forceSubMenuRender,\n popupMotion: mergedMotion\n }, title), inline ? children : null);\n }\n }]);\n\n return SubMenu;\n}(React.Component);\nSubMenu.defaultProps = {\n onMouseEnter: noop,\n onMouseLeave: noop,\n onTitleMouseEnter: noop,\n onTitleMouseLeave: noop,\n onTitleClick: noop,\n manualRef: noop,\n mode: 'vertical',\n title: ''\n};\nvar connected = connect(function (_ref2, _ref3) {\n var openKeys = _ref2.openKeys,\n activeKey = _ref2.activeKey,\n selectedKeys = _ref2.selectedKeys;\n var eventKey = _ref3.eventKey,\n subMenuKey = _ref3.subMenuKey;\n return {\n isOpen: openKeys.indexOf(eventKey) > -1,\n active: activeKey[subMenuKey] === eventKey,\n selectedKeys: selectedKeys\n };\n})(SubMenu);\nconnected.isSubMenu = true;\nexport default connected;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport SubMenu from './SubMenu';\nimport { getWidth, setStyle, menuAllProps } from './util';\nvar MENUITEM_OVERFLOWED_CLASSNAME = 'menuitem-overflowed';\nvar FLOAT_PRECISION_ADJUST = 0.5;\n\nvar DOMWrap = /*#__PURE__*/function (_React$Component) {\n _inherits(DOMWrap, _React$Component);\n\n var _super = _createSuper(DOMWrap);\n\n function DOMWrap() {\n var _this;\n\n _classCallCheck(this, DOMWrap);\n\n _this = _super.apply(this, arguments);\n _this.resizeObserver = null;\n _this.mutationObserver = null; // original scroll size of the list\n\n _this.originalTotalWidth = 0; // copy of overflowed items\n\n _this.overflowedItems = []; // cache item of the original items (so we can track the size and order)\n\n _this.menuItemSizes = [];\n _this.cancelFrameId = null;\n _this.state = {\n lastVisibleIndex: undefined\n }; // get all valid menuItem nodes\n\n _this.getMenuItemNodes = function () {\n var prefixCls = _this.props.prefixCls;\n var ul = ReactDOM.findDOMNode(_assertThisInitialized(_this));\n\n if (!ul) {\n return [];\n } // filter out all overflowed indicator placeholder\n\n\n return [].slice.call(ul.children).filter(function (node) {\n return node.className.split(' ').indexOf(\"\".concat(prefixCls, \"-overflowed-submenu\")) < 0;\n });\n };\n\n _this.getOverflowedSubMenuItem = function (keyPrefix, overflowedItems, renderPlaceholder) {\n var _this$props = _this.props,\n overflowedIndicator = _this$props.overflowedIndicator,\n level = _this$props.level,\n mode = _this$props.mode,\n prefixCls = _this$props.prefixCls,\n theme = _this$props.theme;\n\n if (level !== 1 || mode !== 'horizontal') {\n return null;\n } // put all the overflowed item inside a submenu\n // with a title of overflow indicator ('...')\n\n\n var copy = _this.props.children[0];\n\n var _copy$props = copy.props,\n throwAway = _copy$props.children,\n title = _copy$props.title,\n propStyle = _copy$props.style,\n rest = _objectWithoutProperties(_copy$props, [\"children\", \"title\", \"style\"]);\n\n var style = _objectSpread({}, propStyle);\n\n var key = \"\".concat(keyPrefix, \"-overflowed-indicator\");\n var eventKey = \"\".concat(keyPrefix, \"-overflowed-indicator\");\n\n if (overflowedItems.length === 0 && renderPlaceholder !== true) {\n style = _objectSpread(_objectSpread({}, style), {}, {\n display: 'none'\n });\n } else if (renderPlaceholder) {\n style = _objectSpread(_objectSpread({}, style), {}, {\n visibility: 'hidden',\n // prevent from taking normal dom space\n position: 'absolute'\n });\n key = \"\".concat(key, \"-placeholder\");\n eventKey = \"\".concat(eventKey, \"-placeholder\");\n }\n\n var popupClassName = theme ? \"\".concat(prefixCls, \"-\").concat(theme) : '';\n var props = {};\n menuAllProps.forEach(function (k) {\n if (rest[k] !== undefined) {\n props[k] = rest[k];\n }\n });\n return React.createElement(SubMenu, Object.assign({\n title: overflowedIndicator,\n className: \"\".concat(prefixCls, \"-overflowed-submenu\"),\n popupClassName: popupClassName\n }, props, {\n key: key,\n eventKey: eventKey,\n disabled: false,\n style: style\n }), overflowedItems);\n }; // memorize rendered menuSize\n\n\n _this.setChildrenWidthAndResize = function () {\n if (_this.props.mode !== 'horizontal') {\n return;\n }\n\n var ul = ReactDOM.findDOMNode(_assertThisInitialized(_this));\n\n if (!ul) {\n return;\n }\n\n var ulChildrenNodes = ul.children;\n\n if (!ulChildrenNodes || ulChildrenNodes.length === 0) {\n return;\n }\n\n var lastOverflowedIndicatorPlaceholder = ul.children[ulChildrenNodes.length - 1]; // need last overflowed indicator for calculating length;\n\n setStyle(lastOverflowedIndicatorPlaceholder, 'display', 'inline-block');\n\n var menuItemNodes = _this.getMenuItemNodes(); // reset display attribute for all hidden elements caused by overflow to calculate updated width\n // and then reset to original state after width calculation\n\n\n var overflowedItems = menuItemNodes.filter(function (c) {\n return c.className.split(' ').indexOf(MENUITEM_OVERFLOWED_CLASSNAME) >= 0;\n });\n overflowedItems.forEach(function (c) {\n setStyle(c, 'display', 'inline-block');\n });\n _this.menuItemSizes = menuItemNodes.map(function (c) {\n return getWidth(c, true);\n });\n overflowedItems.forEach(function (c) {\n setStyle(c, 'display', 'none');\n });\n _this.overflowedIndicatorWidth = getWidth(ul.children[ul.children.length - 1], true);\n _this.originalTotalWidth = _this.menuItemSizes.reduce(function (acc, cur) {\n return acc + cur;\n }, 0);\n\n _this.handleResize(); // prevent the overflowed indicator from taking space;\n\n\n setStyle(lastOverflowedIndicatorPlaceholder, 'display', 'none');\n };\n\n _this.handleResize = function () {\n if (_this.props.mode !== 'horizontal') {\n return;\n }\n\n var ul = ReactDOM.findDOMNode(_assertThisInitialized(_this));\n\n if (!ul) {\n return;\n }\n\n var width = getWidth(ul);\n _this.overflowedItems = [];\n var currentSumWidth = 0; // index for last visible child in horizontal mode\n\n var lastVisibleIndex; // float number comparison could be problematic\n // e.g. 0.1 + 0.2 > 0.3 =====> true\n // thus using FLOAT_PRECISION_ADJUST as buffer to help the situation\n\n if (_this.originalTotalWidth > width + FLOAT_PRECISION_ADJUST) {\n lastVisibleIndex = -1;\n\n _this.menuItemSizes.forEach(function (liWidth) {\n currentSumWidth += liWidth;\n\n if (currentSumWidth + _this.overflowedIndicatorWidth <= width) {\n lastVisibleIndex += 1;\n }\n });\n }\n\n _this.setState({\n lastVisibleIndex: lastVisibleIndex\n });\n };\n\n return _this;\n }\n\n _createClass(DOMWrap, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n this.setChildrenWidthAndResize();\n\n if (this.props.level === 1 && this.props.mode === 'horizontal') {\n var menuUl = ReactDOM.findDOMNode(this);\n\n if (!menuUl) {\n return;\n }\n\n this.resizeObserver = new ResizeObserver(function (entries) {\n entries.forEach(function () {\n var cancelFrameId = _this2.cancelFrameId;\n cancelAnimationFrame(cancelFrameId);\n _this2.cancelFrameId = requestAnimationFrame(_this2.setChildrenWidthAndResize);\n });\n });\n [].slice.call(menuUl.children).concat(menuUl).forEach(function (el) {\n _this2.resizeObserver.observe(el);\n });\n\n if (typeof MutationObserver !== 'undefined') {\n this.mutationObserver = new MutationObserver(function () {\n _this2.resizeObserver.disconnect();\n\n [].slice.call(menuUl.children).concat(menuUl).forEach(function (el) {\n _this2.resizeObserver.observe(el);\n });\n\n _this2.setChildrenWidthAndResize();\n });\n this.mutationObserver.observe(menuUl, {\n attributes: false,\n childList: true,\n subTree: false\n });\n }\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n\n cancelAnimationFrame(this.cancelFrameId);\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren(children) {\n var _this3 = this;\n\n // need to take care of overflowed items in horizontal mode\n var lastVisibleIndex = this.state.lastVisibleIndex;\n return (children || []).reduce(function (acc, childNode, index) {\n var item = childNode;\n\n if (_this3.props.mode === 'horizontal') {\n var overflowed = _this3.getOverflowedSubMenuItem(childNode.props.eventKey, []);\n\n if (lastVisibleIndex !== undefined && _this3.props.className.indexOf(\"\".concat(_this3.props.prefixCls, \"-root\")) !== -1) {\n if (index > lastVisibleIndex) {\n item = React.cloneElement(childNode, // 这里修改 eventKey 是为了防止隐藏状态下还会触发 openkeys 事件\n {\n style: {\n display: 'none'\n },\n eventKey: \"\".concat(childNode.props.eventKey, \"-hidden\"),\n\n /**\n * Legacy code. Here `className` never used:\n * https://github.com/react-component/menu/commit/4cd6b49fce9d116726f4ea00dda85325d6f26500#diff-e2fa48f75c2dd2318295cde428556a76R240\n */\n className: \"\".concat(MENUITEM_OVERFLOWED_CLASSNAME)\n });\n }\n\n if (index === lastVisibleIndex + 1) {\n _this3.overflowedItems = children.slice(lastVisibleIndex + 1).map(function (c) {\n return React.cloneElement(c, // children[index].key will become '.$key' in clone by default,\n // we have to overwrite with the correct key explicitly\n {\n key: c.props.eventKey,\n mode: 'vertical-left'\n });\n });\n overflowed = _this3.getOverflowedSubMenuItem(childNode.props.eventKey, _this3.overflowedItems);\n }\n }\n\n var ret = [].concat(_toConsumableArray(acc), [overflowed, item]);\n\n if (index === children.length - 1) {\n // need a placeholder for calculating overflowed indicator width\n ret.push(_this3.getOverflowedSubMenuItem(childNode.props.eventKey, [], true));\n }\n\n return ret;\n }\n\n return [].concat(_toConsumableArray(acc), [item]);\n }, []);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n visible = _this$props2.visible,\n prefixCls = _this$props2.prefixCls,\n overflowedIndicator = _this$props2.overflowedIndicator,\n mode = _this$props2.mode,\n level = _this$props2.level,\n tag = _this$props2.tag,\n children = _this$props2.children,\n theme = _this$props2.theme,\n rest = _objectWithoutProperties(_this$props2, [\"visible\", \"prefixCls\", \"overflowedIndicator\", \"mode\", \"level\", \"tag\", \"children\", \"theme\"]);\n\n var Tag = tag;\n return React.createElement(Tag, Object.assign({}, rest), this.renderChildren(children));\n }\n }]);\n\n return DOMWrap;\n}(React.Component);\n\nDOMWrap.defaultProps = {\n tag: 'div',\n className: ''\n};\nexport default DOMWrap;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport { connect } from 'mini-store';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport createChainedFunction from \"rc-util/es/createChainedFunction\";\nimport toArray from \"rc-util/es/Children/toArray\";\nimport shallowEqual from 'shallowequal';\nimport classNames from 'classnames';\nimport { getKeyFromChildrenIndex, loopMenuItem, noop, menuAllProps, isMobileDevice } from './util';\nimport DOMWrap from './DOMWrap';\n\nfunction allDisabled(arr) {\n if (!arr.length) {\n return true;\n }\n\n return arr.every(function (c) {\n return !!c.props.disabled;\n });\n}\n\nfunction updateActiveKey(store, menuId, activeKey) {\n var state = store.getState();\n store.setState({\n activeKey: _objectSpread(_objectSpread({}, state.activeKey), {}, _defineProperty({}, menuId, activeKey))\n });\n}\n\nfunction getEventKey(props) {\n // when eventKey not available ,it's menu and return menu id '0-menu-'\n return props.eventKey || '0-menu-';\n}\n\nexport function getActiveKey(props, originalActiveKey) {\n var activeKey = originalActiveKey;\n var children = props.children,\n eventKey = props.eventKey;\n\n if (activeKey) {\n var found;\n loopMenuItem(children, function (c, i) {\n if (c && c.props && !c.props.disabled && activeKey === getKeyFromChildrenIndex(c, eventKey, i)) {\n found = true;\n }\n });\n\n if (found) {\n return activeKey;\n }\n }\n\n activeKey = null;\n\n if (props.defaultActiveFirst) {\n loopMenuItem(children, function (c, i) {\n if (!activeKey && c && !c.props.disabled) {\n activeKey = getKeyFromChildrenIndex(c, eventKey, i);\n }\n });\n return activeKey;\n }\n\n return activeKey;\n}\nexport function saveRef(c) {\n if (c) {\n var index = this.instanceArray.indexOf(c);\n\n if (index !== -1) {\n // update component if it's already inside instanceArray\n this.instanceArray[index] = c;\n } else {\n // add component if it's not in instanceArray yet;\n this.instanceArray.push(c);\n }\n }\n}\nexport var SubPopupMenu = /*#__PURE__*/function (_React$Component) {\n _inherits(SubPopupMenu, _React$Component);\n\n var _super = _createSuper(SubPopupMenu);\n\n function SubPopupMenu(props) {\n var _this;\n\n _classCallCheck(this, SubPopupMenu);\n\n _this = _super.call(this, props);\n /**\n * all keyboard events callbacks run from here at first\n *\n * note:\n * This legacy code that `onKeyDown` is called by parent instead of dom self.\n * which need return code to check if this event is handled\n */\n\n _this.onKeyDown = function (e, callback) {\n var keyCode = e.keyCode;\n var handled;\n\n _this.getFlatInstanceArray().forEach(function (obj) {\n if (obj && obj.props.active && obj.onKeyDown) {\n handled = obj.onKeyDown(e);\n }\n });\n\n if (handled) {\n return 1;\n }\n\n var activeItem = null;\n\n if (keyCode === KeyCode.UP || keyCode === KeyCode.DOWN) {\n activeItem = _this.step(keyCode === KeyCode.UP ? -1 : 1);\n }\n\n if (activeItem) {\n e.preventDefault();\n updateActiveKey(_this.props.store, getEventKey(_this.props), activeItem.props.eventKey);\n\n if (typeof callback === 'function') {\n callback(activeItem);\n }\n\n return 1;\n }\n\n return undefined;\n };\n\n _this.onItemHover = function (e) {\n var key = e.key,\n hover = e.hover;\n updateActiveKey(_this.props.store, getEventKey(_this.props), hover ? key : null);\n };\n\n _this.onDeselect = function (selectInfo) {\n _this.props.onDeselect(selectInfo);\n };\n\n _this.onSelect = function (selectInfo) {\n _this.props.onSelect(selectInfo);\n };\n\n _this.onClick = function (e) {\n _this.props.onClick(e);\n };\n\n _this.onOpenChange = function (e) {\n _this.props.onOpenChange(e);\n };\n\n _this.onDestroy = function (key) {\n /* istanbul ignore next */\n _this.props.onDestroy(key);\n };\n\n _this.getFlatInstanceArray = function () {\n return _this.instanceArray;\n };\n\n _this.step = function (direction) {\n var children = _this.getFlatInstanceArray();\n\n var activeKey = _this.props.store.getState().activeKey[getEventKey(_this.props)];\n\n var len = children.length;\n\n if (!len) {\n return null;\n }\n\n if (direction < 0) {\n children = children.concat().reverse();\n } // find current activeIndex\n\n\n var activeIndex = -1;\n children.every(function (c, ci) {\n if (c && c.props.eventKey === activeKey) {\n activeIndex = ci;\n return false;\n }\n\n return true;\n });\n\n if (!_this.props.defaultActiveFirst && activeIndex !== -1 && allDisabled(children.slice(activeIndex, len - 1))) {\n return undefined;\n }\n\n var start = (activeIndex + 1) % len;\n var i = start;\n\n do {\n var child = children[i];\n\n if (!child || child.props.disabled) {\n i = (i + 1) % len;\n } else {\n return child;\n }\n } while (i !== start);\n\n return null;\n };\n\n _this.renderCommonMenuItem = function (child, i, extraProps) {\n var state = _this.props.store.getState();\n\n var _assertThisInitialize = _assertThisInitialized(_this),\n props = _assertThisInitialize.props;\n\n var key = getKeyFromChildrenIndex(child, props.eventKey, i);\n var childProps = child.props; // https://github.com/ant-design/ant-design/issues/11517#issuecomment-477403055\n\n if (!childProps || typeof child.type === 'string') {\n return child;\n }\n\n var isActive = key === state.activeKey;\n\n var newChildProps = _objectSpread(_objectSpread({\n mode: childProps.mode || props.mode,\n level: props.level,\n inlineIndent: props.inlineIndent,\n renderMenuItem: _this.renderMenuItem,\n rootPrefixCls: props.prefixCls,\n index: i,\n parentMenu: props.parentMenu,\n // customized ref function, need to be invoked manually in child's componentDidMount\n manualRef: childProps.disabled ? undefined : createChainedFunction(child.ref, saveRef.bind(_assertThisInitialized(_this))),\n eventKey: key,\n active: !childProps.disabled && isActive,\n multiple: props.multiple,\n onClick: function onClick(e) {\n (childProps.onClick || noop)(e);\n\n _this.onClick(e);\n },\n onItemHover: _this.onItemHover,\n motion: props.motion,\n subMenuOpenDelay: props.subMenuOpenDelay,\n subMenuCloseDelay: props.subMenuCloseDelay,\n forceSubMenuRender: props.forceSubMenuRender,\n onOpenChange: _this.onOpenChange,\n onDeselect: _this.onDeselect,\n onSelect: _this.onSelect,\n builtinPlacements: props.builtinPlacements,\n itemIcon: childProps.itemIcon || _this.props.itemIcon,\n expandIcon: childProps.expandIcon || _this.props.expandIcon\n }, extraProps), {}, {\n direction: props.direction\n }); // ref: https://github.com/ant-design/ant-design/issues/13943\n\n\n if (props.mode === 'inline' || isMobileDevice()) {\n newChildProps.triggerSubMenuAction = 'click';\n }\n\n return React.cloneElement(child, _objectSpread(_objectSpread({}, newChildProps), {}, {\n key: key || i\n }));\n };\n\n _this.renderMenuItem = function (c, i, subMenuKey) {\n /* istanbul ignore if */\n if (!c) {\n return null;\n }\n\n var state = _this.props.store.getState();\n\n var extraProps = {\n openKeys: state.openKeys,\n selectedKeys: state.selectedKeys,\n triggerSubMenuAction: _this.props.triggerSubMenuAction,\n subMenuKey: subMenuKey\n };\n return _this.renderCommonMenuItem(c, i, extraProps);\n };\n\n props.store.setState({\n activeKey: _objectSpread(_objectSpread({}, props.store.getState().activeKey), {}, _defineProperty({}, props.eventKey, getActiveKey(props, props.activeKey)))\n });\n _this.instanceArray = [];\n return _this;\n }\n\n _createClass(SubPopupMenu, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n // invoke customized ref to expose component to mixin\n if (this.props.manualRef) {\n this.props.manualRef(this);\n }\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n return this.props.visible || nextProps.visible || this.props.className !== nextProps.className || !shallowEqual(this.props.style, nextProps.style);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var props = this.props;\n var originalActiveKey = 'activeKey' in props ? props.activeKey : props.store.getState().activeKey[getEventKey(props)];\n var activeKey = getActiveKey(props, originalActiveKey);\n\n if (activeKey !== originalActiveKey) {\n updateActiveKey(props.store, getEventKey(props), activeKey);\n } else if ('activeKey' in prevProps) {\n // If prev activeKey is not same as current activeKey,\n // we should set it.\n var prevActiveKey = getActiveKey(prevProps, prevProps.activeKey);\n\n if (activeKey !== prevActiveKey) {\n updateActiveKey(props.store, getEventKey(props), activeKey);\n }\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var props = _extends({}, this.props);\n\n this.instanceArray = [];\n var className = classNames(props.prefixCls, props.className, \"\".concat(props.prefixCls, \"-\").concat(props.mode));\n var domProps = {\n className: className,\n // role could be 'select' and by default set to menu\n role: props.role || 'menu'\n };\n\n if (props.id) {\n domProps.id = props.id;\n }\n\n if (props.focusable) {\n domProps.tabIndex = 0;\n domProps.onKeyDown = this.onKeyDown;\n }\n\n var prefixCls = props.prefixCls,\n eventKey = props.eventKey,\n visible = props.visible,\n level = props.level,\n mode = props.mode,\n overflowedIndicator = props.overflowedIndicator,\n theme = props.theme;\n menuAllProps.forEach(function (key) {\n return delete props[key];\n }); // Otherwise, the propagated click event will trigger another onClick\n\n delete props.onClick;\n return React.createElement(DOMWrap, Object.assign({}, props, {\n prefixCls: prefixCls,\n mode: mode,\n tag: \"ul\",\n level: level,\n theme: theme,\n visible: visible,\n overflowedIndicator: overflowedIndicator\n }, domProps), toArray(props.children).map(function (c, i) {\n return _this2.renderMenuItem(c, i, eventKey || '0-menu-');\n }));\n }\n }]);\n\n return SubPopupMenu;\n}(React.Component);\nSubPopupMenu.defaultProps = {\n prefixCls: 'rc-menu',\n className: '',\n mode: 'vertical',\n level: 1,\n inlineIndent: 24,\n visible: true,\n focusable: true,\n style: {},\n manualRef: noop\n};\nvar connected = connect()(SubPopupMenu);\nexport default connected;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport warning from \"rc-util/es/warning\";\nexport function getMotion(_ref, _ref2, menuMode) {\n var prefixCls = _ref.prefixCls,\n motion = _ref.motion,\n _ref$defaultMotions = _ref.defaultMotions,\n defaultMotions = _ref$defaultMotions === void 0 ? {} : _ref$defaultMotions,\n openAnimation = _ref.openAnimation,\n openTransitionName = _ref.openTransitionName;\n var switchingModeFromInline = _ref2.switchingModeFromInline;\n\n if (motion) {\n return motion;\n }\n\n if (_typeof(openAnimation) === 'object' && openAnimation) {\n warning(false, 'Object type of `openAnimation` is removed. Please use `motion` instead.');\n } else if (typeof openAnimation === 'string') {\n return {\n motionName: \"\".concat(prefixCls, \"-open-\").concat(openAnimation)\n };\n }\n\n if (openTransitionName) {\n return {\n motionName: openTransitionName\n };\n } // Default logic\n\n\n var defaultMotion = defaultMotions[menuMode];\n\n if (defaultMotion) {\n return defaultMotion;\n } // When mode switch from inline\n // submenu should hide without animation\n\n\n return switchingModeFromInline ? null : defaultMotions.other;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nimport { Provider, create } from 'mini-store';\nimport omit from 'omit.js';\nimport SubPopupMenu, { getActiveKey } from './SubPopupMenu';\nimport { noop } from './util';\nimport { getMotion } from './utils/legacyUtil';\n\nvar Menu = /*#__PURE__*/function (_React$Component) {\n _inherits(Menu, _React$Component);\n\n var _super = _createSuper(Menu);\n\n function Menu(props) {\n var _this;\n\n _classCallCheck(this, Menu);\n\n _this = _super.call(this, props);\n\n _this.onSelect = function (selectInfo) {\n var _assertThisInitialize = _assertThisInitialized(_this),\n props = _assertThisInitialize.props;\n\n if (props.selectable) {\n // root menu\n var _this$store$getState = _this.store.getState(),\n _selectedKeys = _this$store$getState.selectedKeys;\n\n var selectedKey = selectInfo.key;\n\n if (props.multiple) {\n _selectedKeys = _selectedKeys.concat([selectedKey]);\n } else {\n _selectedKeys = [selectedKey];\n }\n\n if (!('selectedKeys' in props)) {\n _this.store.setState({\n selectedKeys: _selectedKeys\n });\n }\n\n props.onSelect(_objectSpread(_objectSpread({}, selectInfo), {}, {\n selectedKeys: _selectedKeys\n }));\n }\n };\n\n _this.onClick = function (e) {\n var mode = _this.getRealMenuMode();\n\n var _assertThisInitialize2 = _assertThisInitialized(_this),\n store = _assertThisInitialize2.store,\n onOpenChange = _assertThisInitialize2.props.onOpenChange;\n\n if (mode !== 'inline' && !('openKeys' in _this.props)) {\n // closing vertical popup submenu after click it\n store.setState({\n openKeys: []\n });\n onOpenChange([]);\n }\n\n _this.props.onClick(e);\n }; // onKeyDown needs to be exposed as a instance method\n // e.g., in rc-select, we need to navigate menu item while\n // current active item is rc-select input box rather than the menu itself\n\n\n _this.onKeyDown = function (e, callback) {\n _this.innerMenu.getWrappedInstance().onKeyDown(e, callback);\n };\n\n _this.onOpenChange = function (event) {\n var _assertThisInitialize3 = _assertThisInitialized(_this),\n props = _assertThisInitialize3.props;\n\n var openKeys = _this.store.getState().openKeys.concat();\n\n var changed = false;\n\n var processSingle = function processSingle(e) {\n var oneChanged = false;\n\n if (e.open) {\n oneChanged = openKeys.indexOf(e.key) === -1;\n\n if (oneChanged) {\n openKeys.push(e.key);\n }\n } else {\n var index = openKeys.indexOf(e.key);\n oneChanged = index !== -1;\n\n if (oneChanged) {\n openKeys.splice(index, 1);\n }\n }\n\n changed = changed || oneChanged;\n };\n\n if (Array.isArray(event)) {\n // batch change call\n event.forEach(processSingle);\n } else {\n processSingle(event);\n }\n\n if (changed) {\n if (!('openKeys' in _this.props)) {\n _this.store.setState({\n openKeys: openKeys\n });\n }\n\n props.onOpenChange(openKeys);\n }\n };\n\n _this.onDeselect = function (selectInfo) {\n var _assertThisInitialize4 = _assertThisInitialized(_this),\n props = _assertThisInitialize4.props;\n\n if (props.selectable) {\n var _selectedKeys2 = _this.store.getState().selectedKeys.concat();\n\n var selectedKey = selectInfo.key;\n\n var index = _selectedKeys2.indexOf(selectedKey);\n\n if (index !== -1) {\n _selectedKeys2.splice(index, 1);\n }\n\n if (!('selectedKeys' in props)) {\n _this.store.setState({\n selectedKeys: _selectedKeys2\n });\n }\n\n props.onDeselect(_objectSpread(_objectSpread({}, selectInfo), {}, {\n selectedKeys: _selectedKeys2\n }));\n }\n }; // Restore vertical mode when menu is collapsed responsively when mounted\n // https://github.com/ant-design/ant-design/issues/13104\n // TODO: not a perfect solution,\n // looking a new way to avoid setting switchingModeFromInline in this situation\n\n\n _this.onMouseEnter = function (e) {\n _this.restoreModeVerticalFromInline();\n\n var onMouseEnter = _this.props.onMouseEnter;\n\n if (onMouseEnter) {\n onMouseEnter(e);\n }\n };\n\n _this.onTransitionEnd = function (e) {\n // when inlineCollapsed menu width animation finished\n // https://github.com/ant-design/ant-design/issues/12864\n var widthCollapsed = e.propertyName === 'width' && e.target === e.currentTarget; // Fix SVGElement e.target.className.indexOf is not a function\n // https://github.com/ant-design/ant-design/issues/15699\n\n var className = e.target.className; // SVGAnimatedString.animVal should be identical to SVGAnimatedString.baseVal,\n // unless during an animation.\n\n var classNameValue = Object.prototype.toString.call(className) === '[object SVGAnimatedString]' ? className.animVal : className; // Fix for ,\n // the width transition won't trigger when menu is collapsed\n // https://github.com/ant-design/ant-design-pro/issues/2783\n\n var iconScaled = e.propertyName === 'font-size' && classNameValue.indexOf('anticon') >= 0;\n\n if (widthCollapsed || iconScaled) {\n _this.restoreModeVerticalFromInline();\n }\n };\n\n _this.setInnerMenu = function (node) {\n _this.innerMenu = node;\n };\n\n _this.isRootMenu = true;\n var selectedKeys = props.defaultSelectedKeys;\n var openKeys = props.defaultOpenKeys;\n\n if ('selectedKeys' in props) {\n selectedKeys = props.selectedKeys || [];\n }\n\n if ('openKeys' in props) {\n openKeys = props.openKeys || [];\n }\n\n _this.store = create({\n selectedKeys: selectedKeys,\n openKeys: openKeys,\n activeKey: {\n '0-menu-': getActiveKey(props, props.activeKey)\n }\n });\n _this.state = {\n switchingModeFromInline: false,\n prevProps: props,\n inlineOpenKeys: [],\n store: _this.store\n };\n return _this;\n }\n\n _createClass(Menu, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.updateMiniStore();\n this.updateMenuDisplay();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props = this.props,\n siderCollapsed = _this$props.siderCollapsed,\n inlineCollapsed = _this$props.inlineCollapsed,\n onOpenChange = _this$props.onOpenChange;\n\n if (!prevProps.inlineCollapsed && inlineCollapsed || !prevProps.siderCollapsed && siderCollapsed) {\n onOpenChange([]);\n }\n\n this.updateMiniStore();\n this.updateMenuDisplay();\n }\n }, {\n key: \"updateMenuDisplay\",\n value: function updateMenuDisplay() {\n var collapsedWidth = this.props.collapsedWidth,\n store = this.store,\n prevOpenKeys = this.prevOpenKeys; // https://github.com/ant-design/ant-design/issues/8587\n\n var hideMenu = this.getInlineCollapsed() && (collapsedWidth === 0 || collapsedWidth === '0' || collapsedWidth === '0px');\n\n if (hideMenu) {\n this.prevOpenKeys = store.getState().openKeys.concat();\n this.store.setState({\n openKeys: []\n });\n } else if (prevOpenKeys) {\n this.store.setState({\n openKeys: prevOpenKeys\n });\n this.prevOpenKeys = null;\n }\n }\n }, {\n key: \"getRealMenuMode\",\n value: function getRealMenuMode() {\n var mode = this.props.mode;\n var switchingModeFromInline = this.state.switchingModeFromInline;\n var inlineCollapsed = this.getInlineCollapsed();\n\n if (switchingModeFromInline && inlineCollapsed) {\n return 'inline';\n }\n\n return inlineCollapsed ? 'vertical' : mode;\n }\n }, {\n key: \"getInlineCollapsed\",\n value: function getInlineCollapsed() {\n var _this$props2 = this.props,\n inlineCollapsed = _this$props2.inlineCollapsed,\n siderCollapsed = _this$props2.siderCollapsed;\n\n if (siderCollapsed !== undefined) {\n return siderCollapsed;\n }\n\n return inlineCollapsed;\n }\n }, {\n key: \"restoreModeVerticalFromInline\",\n value: function restoreModeVerticalFromInline() {\n var switchingModeFromInline = this.state.switchingModeFromInline;\n\n if (switchingModeFromInline) {\n this.setState({\n switchingModeFromInline: false\n });\n }\n }\n }, {\n key: \"updateMiniStore\",\n value: function updateMiniStore() {\n if ('selectedKeys' in this.props) {\n this.store.setState({\n selectedKeys: this.props.selectedKeys || []\n });\n }\n\n if ('openKeys' in this.props) {\n this.store.setState({\n openKeys: this.props.openKeys || []\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var props = _objectSpread({}, omit(this.props, ['collapsedWidth', 'siderCollapsed', 'defaultMotions']));\n\n var mode = this.getRealMenuMode();\n props.className += \" \".concat(props.prefixCls, \"-root\");\n\n if (props.direction === 'rtl') {\n props.className += \" \".concat(props.prefixCls, \"-rtl\");\n }\n\n props = _objectSpread(_objectSpread({}, props), {}, {\n mode: mode,\n onClick: this.onClick,\n onOpenChange: this.onOpenChange,\n onDeselect: this.onDeselect,\n onSelect: this.onSelect,\n onMouseEnter: this.onMouseEnter,\n onTransitionEnd: this.onTransitionEnd,\n parentMenu: this,\n motion: getMotion(this.props, this.state, mode)\n });\n delete props.openAnimation;\n delete props.openTransitionName;\n return React.createElement(Provider, {\n store: this.store\n }, React.createElement(SubPopupMenu, Object.assign({}, props, {\n ref: this.setInnerMenu\n }), this.props.children));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var prevProps = prevState.prevProps,\n store = prevState.store;\n var prevStoreState = store.getState();\n var newStoreState = {};\n var newState = {\n prevProps: nextProps\n };\n\n if (prevProps.mode === 'inline' && nextProps.mode !== 'inline') {\n newState.switchingModeFromInline = true;\n }\n\n if ('openKeys' in nextProps) {\n newStoreState.openKeys = nextProps.openKeys;\n } else {\n // [Legacy] Old code will return after `openKeys` changed.\n // Not sure the reason, we should keep this logic still.\n if (nextProps.inlineCollapsed && !prevProps.inlineCollapsed || nextProps.siderCollapsed && !prevProps.siderCollapsed) {\n newState.switchingModeFromInline = true;\n newState.inlineOpenKeys = prevStoreState.openKeys;\n newStoreState.openKeys = [];\n }\n\n if (!nextProps.inlineCollapsed && prevProps.inlineCollapsed || !nextProps.siderCollapsed && prevProps.siderCollapsed) {\n newStoreState.openKeys = prevState.inlineOpenKeys;\n newState.inlineOpenKeys = [];\n }\n }\n\n if (Object.keys(newStoreState).length) {\n store.setState(newStoreState);\n }\n\n return newState;\n }\n }]);\n\n return Menu;\n}(React.Component);\n\nMenu.defaultProps = {\n selectable: true,\n onClick: noop,\n onSelect: noop,\n onOpenChange: noop,\n onDeselect: noop,\n defaultSelectedKeys: [],\n defaultOpenKeys: [],\n subMenuOpenDelay: 0.1,\n subMenuCloseDelay: 0.1,\n triggerSubMenuAction: 'hover',\n prefixCls: 'rc-menu',\n className: '',\n mode: 'vertical',\n style: {},\n builtinPlacements: {},\n overflowedIndicator: React.createElement(\"span\", null, \"\\xB7\\xB7\\xB7\")\n};\nexport default Menu;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport classNames from 'classnames';\nimport omit from 'omit.js';\nimport { connect } from 'mini-store';\nimport { noop, menuAllProps } from './util';\nexport var MenuItem = /*#__PURE__*/function (_React$Component) {\n _inherits(MenuItem, _React$Component);\n\n var _super = _createSuper(MenuItem);\n\n function MenuItem() {\n var _this;\n\n _classCallCheck(this, MenuItem);\n\n _this = _super.apply(this, arguments);\n\n _this.onKeyDown = function (e) {\n var keyCode = e.keyCode;\n\n if (keyCode === KeyCode.ENTER) {\n _this.onClick(e);\n\n return true;\n }\n\n return undefined;\n };\n\n _this.onMouseLeave = function (e) {\n var _this$props = _this.props,\n eventKey = _this$props.eventKey,\n onItemHover = _this$props.onItemHover,\n onMouseLeave = _this$props.onMouseLeave;\n onItemHover({\n key: eventKey,\n hover: false\n });\n onMouseLeave({\n key: eventKey,\n domEvent: e\n });\n };\n\n _this.onMouseEnter = function (e) {\n var _this$props2 = _this.props,\n eventKey = _this$props2.eventKey,\n onItemHover = _this$props2.onItemHover,\n onMouseEnter = _this$props2.onMouseEnter;\n onItemHover({\n key: eventKey,\n hover: true\n });\n onMouseEnter({\n key: eventKey,\n domEvent: e\n });\n };\n\n _this.onClick = function (e) {\n var _this$props3 = _this.props,\n eventKey = _this$props3.eventKey,\n multiple = _this$props3.multiple,\n onClick = _this$props3.onClick,\n onSelect = _this$props3.onSelect,\n onDeselect = _this$props3.onDeselect,\n isSelected = _this$props3.isSelected;\n var info = {\n key: eventKey,\n keyPath: [eventKey],\n item: _assertThisInitialized(_this),\n domEvent: e\n };\n onClick(info);\n\n if (multiple) {\n if (isSelected) {\n onDeselect(info);\n } else {\n onSelect(info);\n }\n } else if (!isSelected) {\n onSelect(info);\n }\n };\n\n _this.saveNode = function (node) {\n _this.node = node;\n };\n\n return _this;\n }\n\n _createClass(MenuItem, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n // invoke customized ref to expose component to mixin\n this.callRef();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.callRef();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var props = this.props;\n\n if (props.onDestroy) {\n props.onDestroy(props.eventKey);\n }\n }\n }, {\n key: \"getPrefixCls\",\n value: function getPrefixCls() {\n return \"\".concat(this.props.rootPrefixCls, \"-item\");\n }\n }, {\n key: \"getActiveClassName\",\n value: function getActiveClassName() {\n return \"\".concat(this.getPrefixCls(), \"-active\");\n }\n }, {\n key: \"getSelectedClassName\",\n value: function getSelectedClassName() {\n return \"\".concat(this.getPrefixCls(), \"-selected\");\n }\n }, {\n key: \"getDisabledClassName\",\n value: function getDisabledClassName() {\n return \"\".concat(this.getPrefixCls(), \"-disabled\");\n }\n }, {\n key: \"callRef\",\n value: function callRef() {\n if (this.props.manualRef) {\n this.props.manualRef(this);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classNames;\n\n var props = _objectSpread({}, this.props);\n\n var className = classNames(this.getPrefixCls(), props.className, (_classNames = {}, _defineProperty(_classNames, this.getActiveClassName(), !props.disabled && props.active), _defineProperty(_classNames, this.getSelectedClassName(), props.isSelected), _defineProperty(_classNames, this.getDisabledClassName(), props.disabled), _classNames));\n\n var attrs = _objectSpread(_objectSpread({}, props.attribute), {}, {\n title: typeof props.title === 'string' ? props.title : undefined,\n className: className,\n // set to menuitem by default\n role: props.role || 'menuitem',\n 'aria-disabled': props.disabled\n });\n\n if (props.role === 'option') {\n // overwrite to option\n attrs = _objectSpread(_objectSpread({}, attrs), {}, {\n role: 'option',\n 'aria-selected': props.isSelected\n });\n } else if (props.role === null || props.role === 'none') {\n // sometimes we want to specify role inside
  • element\n //
  • Link
  • would be a good example\n // in this case the role on
  • should be \"none\" to\n // remove the implied listitem role.\n // https://www.w3.org/TR/wai-aria-practices-1.1/examples/menubar/menubar-1/menubar-1.html\n attrs.role = 'none';\n } // In case that onClick/onMouseLeave/onMouseEnter is passed down from owner\n\n\n var mouseEvent = {\n onClick: props.disabled ? null : this.onClick,\n onMouseLeave: props.disabled ? null : this.onMouseLeave,\n onMouseEnter: props.disabled ? null : this.onMouseEnter\n };\n\n var style = _objectSpread({}, props.style);\n\n if (props.mode === 'inline') {\n if (props.direction === 'rtl') {\n style.paddingRight = props.inlineIndent * props.level;\n } else {\n style.paddingLeft = props.inlineIndent * props.level;\n }\n }\n\n menuAllProps.forEach(function (key) {\n return delete props[key];\n });\n delete props.direction;\n var icon = this.props.itemIcon;\n\n if (typeof this.props.itemIcon === 'function') {\n // TODO: This is a bug which should fixed after TS refactor\n icon = React.createElement(this.props.itemIcon, this.props);\n }\n\n return React.createElement(\"li\", Object.assign({}, omit(props, ['onClick', 'onMouseEnter', 'onMouseLeave', 'onSelect']), attrs, mouseEvent, {\n style: style,\n ref: this.saveNode\n }), props.children, icon);\n }\n }]);\n\n return MenuItem;\n}(React.Component);\nMenuItem.isMenuItem = true;\nMenuItem.defaultProps = {\n onSelect: noop,\n onMouseEnter: noop,\n onMouseLeave: noop,\n manualRef: noop\n};\nvar connected = connect(function (_ref, _ref2) {\n var activeKey = _ref.activeKey,\n selectedKeys = _ref.selectedKeys;\n var eventKey = _ref2.eventKey,\n subMenuKey = _ref2.subMenuKey;\n return {\n active: activeKey[subMenuKey] === eventKey,\n isSelected: selectedKeys.indexOf(eventKey) !== -1\n };\n})(MenuItem);\nexport default connected;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nimport { menuAllProps } from './util';\n\nvar MenuItemGroup = /*#__PURE__*/function (_React$Component) {\n _inherits(MenuItemGroup, _React$Component);\n\n var _super = _createSuper(MenuItemGroup);\n\n function MenuItemGroup() {\n var _this;\n\n _classCallCheck(this, MenuItemGroup);\n\n _this = _super.apply(this, arguments);\n\n _this.renderInnerMenuItem = function (item) {\n var _this$props = _this.props,\n renderMenuItem = _this$props.renderMenuItem,\n index = _this$props.index;\n return renderMenuItem(item, index, _this.props.subMenuKey);\n };\n\n return _this;\n }\n\n _createClass(MenuItemGroup, [{\n key: \"render\",\n value: function render() {\n var props = _extends({}, this.props);\n\n var _props$className = props.className,\n className = _props$className === void 0 ? '' : _props$className,\n rootPrefixCls = props.rootPrefixCls;\n var titleClassName = \"\".concat(rootPrefixCls, \"-item-group-title\");\n var listClassName = \"\".concat(rootPrefixCls, \"-item-group-list\");\n var title = props.title,\n children = props.children;\n menuAllProps.forEach(function (key) {\n return delete props[key];\n }); // Set onClick to null, to ignore propagated onClick event\n\n delete props.onClick;\n delete props.direction;\n return React.createElement(\"li\", Object.assign({}, props, {\n className: \"\".concat(className, \" \").concat(rootPrefixCls, \"-item-group\")\n }), React.createElement(\"div\", {\n className: titleClassName,\n title: typeof title === 'string' ? title : undefined\n }, title), React.createElement(\"ul\", {\n className: listClassName\n }, React.Children.map(children, this.renderInnerMenuItem)));\n }\n }]);\n\n return MenuItemGroup;\n}(React.Component);\n\nMenuItemGroup.isMenuItemGroup = true;\nMenuItemGroup.defaultProps = {\n disabled: true\n};\nexport default MenuItemGroup;","import * as React from 'react';\n\nvar Divider = function Divider(_ref) {\n var className = _ref.className,\n rootPrefixCls = _ref.rootPrefixCls,\n style = _ref.style;\n return React.createElement(\"li\", {\n className: \"\".concat(className, \" \").concat(rootPrefixCls, \"-item-divider\"),\n style: style\n });\n};\n\nDivider.defaultProps = {\n // To fix keyboard UX.\n disabled: true,\n className: '',\n style: {}\n};\nexport default Divider;","import Menu from './Menu';\nimport SubMenu from './SubMenu';\nimport MenuItem from './MenuItem';\nimport MenuItemGroup from './MenuItemGroup';\nimport Divider from './Divider';\nexport { SubMenu, MenuItem as Item, MenuItem, MenuItemGroup, MenuItemGroup as ItemGroup, Divider };\nexport default Menu;","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport * as React from 'react';\nexport var Context = /*#__PURE__*/React.createContext({});\nexport default function MotionProvider(_ref) {\n var children = _ref.children,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: props\n }, children);\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nvar DomWrapper = /*#__PURE__*/function (_React$Component) {\n _inherits(DomWrapper, _React$Component);\n var _super = _createSuper(DomWrapper);\n function DomWrapper() {\n _classCallCheck(this, DomWrapper);\n return _super.apply(this, arguments);\n }\n _createClass(DomWrapper, [{\n key: \"render\",\n value: function render() {\n return this.props.children;\n }\n }]);\n return DomWrapper;\n}(React.Component);\nexport default DomWrapper;","export var STATUS_NONE = 'none';\nexport var STATUS_APPEAR = 'appear';\nexport var STATUS_ENTER = 'enter';\nexport var STATUS_LEAVE = 'leave';\nexport var STEP_NONE = 'none';\nexport var STEP_PREPARE = 'prepare';\nexport var STEP_START = 'start';\nexport var STEP_ACTIVE = 'active';\nexport var STEP_ACTIVATED = 'end';\n/**\n * Used for disabled motion case.\n * Prepare stage will still work but start & active will be skipped.\n */\nexport var STEP_PREPARED = 'prepared';","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport canUseDOM from \"rc-util/es/Dom/canUseDom\";\n// ================= Transition =================\n// Event wrapper. Copy from react source code\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes[\"Webkit\".concat(styleProp)] = \"webkit\".concat(eventName);\n prefixes[\"Moz\".concat(styleProp)] = \"moz\".concat(eventName);\n prefixes[\"ms\".concat(styleProp)] = \"MS\".concat(eventName);\n prefixes[\"O\".concat(styleProp)] = \"o\".concat(eventName.toLowerCase());\n return prefixes;\n}\nexport function getVendorPrefixes(domSupport, win) {\n var prefixes = {\n animationend: makePrefixMap('Animation', 'AnimationEnd'),\n transitionend: makePrefixMap('Transition', 'TransitionEnd')\n };\n if (domSupport) {\n if (!('AnimationEvent' in win)) {\n delete prefixes.animationend.animation;\n }\n if (!('TransitionEvent' in win)) {\n delete prefixes.transitionend.transition;\n }\n }\n return prefixes;\n}\nvar vendorPrefixes = getVendorPrefixes(canUseDOM(), typeof window !== 'undefined' ? window : {});\nvar style = {};\nif (canUseDOM()) {\n var _document$createEleme = document.createElement('div');\n style = _document$createEleme.style;\n}\nvar prefixedEventNames = {};\nexport function getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) {\n return prefixedEventNames[eventName];\n }\n var prefixMap = vendorPrefixes[eventName];\n if (prefixMap) {\n var stylePropList = Object.keys(prefixMap);\n var len = stylePropList.length;\n for (var i = 0; i < len; i += 1) {\n var styleProp = stylePropList[i];\n if (Object.prototype.hasOwnProperty.call(prefixMap, styleProp) && styleProp in style) {\n prefixedEventNames[eventName] = prefixMap[styleProp];\n return prefixedEventNames[eventName];\n }\n }\n }\n return '';\n}\nvar internalAnimationEndName = getVendorPrefixedEventName('animationend');\nvar internalTransitionEndName = getVendorPrefixedEventName('transitionend');\nexport var supportTransition = !!(internalAnimationEndName && internalTransitionEndName);\nexport var animationEndName = internalAnimationEndName || 'animationend';\nexport var transitionEndName = internalTransitionEndName || 'transitionend';\nexport function getTransitionName(transitionName, transitionType) {\n if (!transitionName) return null;\n if (_typeof(transitionName) === 'object') {\n var type = transitionType.replace(/-\\w/g, function (match) {\n return match[1].toUpperCase();\n });\n return transitionName[type];\n }\n return \"\".concat(transitionName, \"-\").concat(transitionType);\n}","import * as React from 'react';\nimport { useRef } from 'react';\nimport { animationEndName, transitionEndName } from \"../util/motion\";\nexport default (function (onInternalMotionEnd) {\n var cacheElementRef = useRef();\n\n // Remove events\n function removeMotionEvents(element) {\n if (element) {\n element.removeEventListener(transitionEndName, onInternalMotionEnd);\n element.removeEventListener(animationEndName, onInternalMotionEnd);\n }\n }\n\n // Patch events\n function patchMotionEvents(element) {\n if (cacheElementRef.current && cacheElementRef.current !== element) {\n removeMotionEvents(cacheElementRef.current);\n }\n if (element && element !== cacheElementRef.current) {\n element.addEventListener(transitionEndName, onInternalMotionEnd);\n element.addEventListener(animationEndName, onInternalMotionEnd);\n\n // Save as cache in case dom removed trigger by `motionDeadline`\n cacheElementRef.current = element;\n }\n }\n\n // Clean up when removed\n React.useEffect(function () {\n return function () {\n removeMotionEvents(cacheElementRef.current);\n };\n }, []);\n return [patchMotionEvents, removeMotionEvents];\n});","import canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport { useEffect, useLayoutEffect } from 'react';\n\n// It's safe to use `useLayoutEffect` but the warning is annoying\nvar useIsomorphicLayoutEffect = canUseDom() ? useLayoutEffect : useEffect;\nexport default useIsomorphicLayoutEffect;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useState from \"rc-util/es/hooks/useState\";\nimport * as React from 'react';\nimport { STEP_ACTIVATED, STEP_ACTIVE, STEP_NONE, STEP_PREPARE, STEP_PREPARED, STEP_START } from \"../interface\";\nimport useIsomorphicLayoutEffect from \"./useIsomorphicLayoutEffect\";\nimport useNextFrame from \"./useNextFrame\";\nvar FULL_STEP_QUEUE = [STEP_PREPARE, STEP_START, STEP_ACTIVE, STEP_ACTIVATED];\nvar SIMPLE_STEP_QUEUE = [STEP_PREPARE, STEP_PREPARED];\n\n/** Skip current step */\nexport var SkipStep = false;\n/** Current step should be update in */\nexport var DoStep = true;\nexport function isActive(step) {\n return step === STEP_ACTIVE || step === STEP_ACTIVATED;\n}\nexport default (function (status, prepareOnly, callback) {\n var _useState = useState(STEP_NONE),\n _useState2 = _slicedToArray(_useState, 2),\n step = _useState2[0],\n setStep = _useState2[1];\n var _useNextFrame = useNextFrame(),\n _useNextFrame2 = _slicedToArray(_useNextFrame, 2),\n nextFrame = _useNextFrame2[0],\n cancelNextFrame = _useNextFrame2[1];\n function startQueue() {\n setStep(STEP_PREPARE, true);\n }\n var STEP_QUEUE = prepareOnly ? SIMPLE_STEP_QUEUE : FULL_STEP_QUEUE;\n useIsomorphicLayoutEffect(function () {\n if (step !== STEP_NONE && step !== STEP_ACTIVATED) {\n var index = STEP_QUEUE.indexOf(step);\n var nextStep = STEP_QUEUE[index + 1];\n var result = callback(step);\n if (result === SkipStep) {\n // Skip when no needed\n setStep(nextStep, true);\n } else if (nextStep) {\n // Do as frame for step update\n nextFrame(function (info) {\n function doNext() {\n // Skip since current queue is ood\n if (info.isCanceled()) return;\n setStep(nextStep, true);\n }\n if (result === true) {\n doNext();\n } else {\n // Only promise should be async\n Promise.resolve(result).then(doNext);\n }\n });\n }\n }\n }, [status, step]);\n React.useEffect(function () {\n return function () {\n cancelNextFrame();\n };\n }, []);\n return [startQueue, step];\n});","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useEvent } from 'rc-util';\nimport useState from \"rc-util/es/hooks/useState\";\nimport useSyncState from \"rc-util/es/hooks/useSyncState\";\nimport * as React from 'react';\nimport { useEffect, useRef } from 'react';\nimport { STATUS_APPEAR, STATUS_ENTER, STATUS_LEAVE, STATUS_NONE, STEP_ACTIVE, STEP_PREPARE, STEP_PREPARED, STEP_START } from \"../interface\";\nimport useDomMotionEvents from \"./useDomMotionEvents\";\nimport useIsomorphicLayoutEffect from \"./useIsomorphicLayoutEffect\";\nimport useStepQueue, { DoStep, isActive, SkipStep } from \"./useStepQueue\";\nexport default function useStatus(supportMotion, visible, getElement, _ref) {\n var _ref$motionEnter = _ref.motionEnter,\n motionEnter = _ref$motionEnter === void 0 ? true : _ref$motionEnter,\n _ref$motionAppear = _ref.motionAppear,\n motionAppear = _ref$motionAppear === void 0 ? true : _ref$motionAppear,\n _ref$motionLeave = _ref.motionLeave,\n motionLeave = _ref$motionLeave === void 0 ? true : _ref$motionLeave,\n motionDeadline = _ref.motionDeadline,\n motionLeaveImmediately = _ref.motionLeaveImmediately,\n onAppearPrepare = _ref.onAppearPrepare,\n onEnterPrepare = _ref.onEnterPrepare,\n onLeavePrepare = _ref.onLeavePrepare,\n onAppearStart = _ref.onAppearStart,\n onEnterStart = _ref.onEnterStart,\n onLeaveStart = _ref.onLeaveStart,\n onAppearActive = _ref.onAppearActive,\n onEnterActive = _ref.onEnterActive,\n onLeaveActive = _ref.onLeaveActive,\n onAppearEnd = _ref.onAppearEnd,\n onEnterEnd = _ref.onEnterEnd,\n onLeaveEnd = _ref.onLeaveEnd,\n onVisibleChanged = _ref.onVisibleChanged;\n // Used for outer render usage to avoid `visible: false & status: none` to render nothing\n var _useState = useState(),\n _useState2 = _slicedToArray(_useState, 2),\n asyncVisible = _useState2[0],\n setAsyncVisible = _useState2[1];\n var _useSyncState = useSyncState(STATUS_NONE),\n _useSyncState2 = _slicedToArray(_useSyncState, 2),\n getStatus = _useSyncState2[0],\n setStatus = _useSyncState2[1];\n var _useState3 = useState(null),\n _useState4 = _slicedToArray(_useState3, 2),\n style = _useState4[0],\n setStyle = _useState4[1];\n var currentStatus = getStatus();\n var mountedRef = useRef(false);\n var deadlineRef = useRef(null);\n\n // =========================== Dom Node ===========================\n function getDomElement() {\n return getElement();\n }\n\n // ========================== Motion End ==========================\n var activeRef = useRef(false);\n\n /**\n * Clean up status & style\n */\n function updateMotionEndStatus() {\n setStatus(STATUS_NONE);\n setStyle(null, true);\n }\n var onInternalMotionEnd = useEvent(function (event) {\n var status = getStatus();\n // Do nothing since not in any transition status.\n // This may happen when `motionDeadline` trigger.\n if (status === STATUS_NONE) {\n return;\n }\n var element = getDomElement();\n if (event && !event.deadline && event.target !== element) {\n // event exists\n // not initiated by deadline\n // transitionEnd not fired by inner elements\n return;\n }\n var currentActive = activeRef.current;\n var canEnd;\n if (status === STATUS_APPEAR && currentActive) {\n canEnd = onAppearEnd === null || onAppearEnd === void 0 ? void 0 : onAppearEnd(element, event);\n } else if (status === STATUS_ENTER && currentActive) {\n canEnd = onEnterEnd === null || onEnterEnd === void 0 ? void 0 : onEnterEnd(element, event);\n } else if (status === STATUS_LEAVE && currentActive) {\n canEnd = onLeaveEnd === null || onLeaveEnd === void 0 ? void 0 : onLeaveEnd(element, event);\n }\n\n // Only update status when `canEnd` and not destroyed\n if (currentActive && canEnd !== false) {\n updateMotionEndStatus();\n }\n });\n var _useDomMotionEvents = useDomMotionEvents(onInternalMotionEnd),\n _useDomMotionEvents2 = _slicedToArray(_useDomMotionEvents, 1),\n patchMotionEvents = _useDomMotionEvents2[0];\n\n // ============================= Step =============================\n var getEventHandlers = function getEventHandlers(targetStatus) {\n switch (targetStatus) {\n case STATUS_APPEAR:\n return _defineProperty(_defineProperty(_defineProperty({}, STEP_PREPARE, onAppearPrepare), STEP_START, onAppearStart), STEP_ACTIVE, onAppearActive);\n case STATUS_ENTER:\n return _defineProperty(_defineProperty(_defineProperty({}, STEP_PREPARE, onEnterPrepare), STEP_START, onEnterStart), STEP_ACTIVE, onEnterActive);\n case STATUS_LEAVE:\n return _defineProperty(_defineProperty(_defineProperty({}, STEP_PREPARE, onLeavePrepare), STEP_START, onLeaveStart), STEP_ACTIVE, onLeaveActive);\n default:\n return {};\n }\n };\n var eventHandlers = React.useMemo(function () {\n return getEventHandlers(currentStatus);\n }, [currentStatus]);\n var _useStepQueue = useStepQueue(currentStatus, !supportMotion, function (newStep) {\n // Only prepare step can be skip\n if (newStep === STEP_PREPARE) {\n var onPrepare = eventHandlers[STEP_PREPARE];\n if (!onPrepare) {\n return SkipStep;\n }\n return onPrepare(getDomElement());\n }\n\n // Rest step is sync update\n if (step in eventHandlers) {\n var _eventHandlers$step;\n setStyle(((_eventHandlers$step = eventHandlers[step]) === null || _eventHandlers$step === void 0 ? void 0 : _eventHandlers$step.call(eventHandlers, getDomElement(), null)) || null);\n }\n if (step === STEP_ACTIVE && currentStatus !== STATUS_NONE) {\n // Patch events when motion needed\n patchMotionEvents(getDomElement());\n if (motionDeadline > 0) {\n clearTimeout(deadlineRef.current);\n deadlineRef.current = setTimeout(function () {\n onInternalMotionEnd({\n deadline: true\n });\n }, motionDeadline);\n }\n }\n if (step === STEP_PREPARED) {\n updateMotionEndStatus();\n }\n return DoStep;\n }),\n _useStepQueue2 = _slicedToArray(_useStepQueue, 2),\n startStep = _useStepQueue2[0],\n step = _useStepQueue2[1];\n var active = isActive(step);\n activeRef.current = active;\n\n // ============================ Status ============================\n // Update with new status\n useIsomorphicLayoutEffect(function () {\n setAsyncVisible(visible);\n var isMounted = mountedRef.current;\n mountedRef.current = true;\n\n // if (!supportMotion) {\n // return;\n // }\n\n var nextStatus;\n\n // Appear\n if (!isMounted && visible && motionAppear) {\n nextStatus = STATUS_APPEAR;\n }\n\n // Enter\n if (isMounted && visible && motionEnter) {\n nextStatus = STATUS_ENTER;\n }\n\n // Leave\n if (isMounted && !visible && motionLeave || !isMounted && motionLeaveImmediately && !visible && motionLeave) {\n nextStatus = STATUS_LEAVE;\n }\n var nextEventHandlers = getEventHandlers(nextStatus);\n\n // Update to next status\n if (nextStatus && (supportMotion || nextEventHandlers[STEP_PREPARE])) {\n setStatus(nextStatus);\n startStep();\n } else {\n // Set back in case no motion but prev status has prepare step\n setStatus(STATUS_NONE);\n }\n }, [visible]);\n\n // ============================ Effect ============================\n // Reset when motion changed\n useEffect(function () {\n if (\n // Cancel appear\n currentStatus === STATUS_APPEAR && !motionAppear ||\n // Cancel enter\n currentStatus === STATUS_ENTER && !motionEnter ||\n // Cancel leave\n currentStatus === STATUS_LEAVE && !motionLeave) {\n setStatus(STATUS_NONE);\n }\n }, [motionAppear, motionEnter, motionLeave]);\n useEffect(function () {\n return function () {\n mountedRef.current = false;\n clearTimeout(deadlineRef.current);\n };\n }, []);\n\n // Trigger `onVisibleChanged`\n var firstMountChangeRef = React.useRef(false);\n useEffect(function () {\n // [visible & motion not end] => [!visible & motion end] still need trigger onVisibleChanged\n if (asyncVisible) {\n firstMountChangeRef.current = true;\n }\n if (asyncVisible !== undefined && currentStatus === STATUS_NONE) {\n // Skip first render is invisible since it's nothing changed\n if (firstMountChangeRef.current || asyncVisible) {\n onVisibleChanged === null || onVisibleChanged === void 0 || onVisibleChanged(asyncVisible);\n }\n firstMountChangeRef.current = true;\n }\n }, [asyncVisible, currentStatus]);\n\n // ============================ Styles ============================\n var mergedStyle = style;\n if (eventHandlers[STEP_PREPARE] && step === STEP_START) {\n mergedStyle = _objectSpread({\n transition: 'none'\n }, mergedStyle);\n }\n return [currentStatus, step, mergedStyle, asyncVisible !== null && asyncVisible !== void 0 ? asyncVisible : visible];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport useEvent from \"./useEvent\";\n/**\n * Same as React.useState but will always get latest state.\n * This is useful when React merge multiple state updates into one.\n * e.g. onTransitionEnd trigger multiple event at once will be merged state update in React.\n */\nexport default function useSyncState(defaultValue) {\n var _React$useReducer = React.useReducer(function (x) {\n return x + 1;\n }, 0),\n _React$useReducer2 = _slicedToArray(_React$useReducer, 2),\n forceUpdate = _React$useReducer2[1];\n var currentValueRef = React.useRef(defaultValue);\n var getValue = useEvent(function () {\n return currentValueRef.current;\n });\n var setValue = useEvent(function (updater) {\n currentValueRef.current = typeof updater === 'function' ? updater(currentValueRef.current) : updater;\n forceUpdate();\n });\n return [getValue, setValue];\n}","import raf from \"rc-util/es/raf\";\nimport * as React from 'react';\nexport default (function () {\n var nextFrameRef = React.useRef(null);\n function cancelNextFrame() {\n raf.cancel(nextFrameRef.current);\n }\n function nextFrame(callback) {\n var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n cancelNextFrame();\n var nextFrameId = raf(function () {\n if (delay <= 1) {\n callback({\n isCanceled: function isCanceled() {\n return nextFrameId !== nextFrameRef.current;\n }\n });\n } else {\n nextFrame(callback, delay - 1);\n }\n });\n nextFrameRef.current = nextFrameId;\n }\n React.useEffect(function () {\n return function () {\n cancelNextFrame();\n };\n }, []);\n return [nextFrame, cancelNextFrame];\n});","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\n/* eslint-disable react/default-props-match-prop-types, react/no-multi-comp, react/prop-types */\nimport classNames from 'classnames';\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport { fillRef, supportRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { useRef } from 'react';\nimport { Context } from \"./context\";\nimport DomWrapper from \"./DomWrapper\";\nimport useStatus from \"./hooks/useStatus\";\nimport { isActive } from \"./hooks/useStepQueue\";\nimport { STATUS_NONE, STEP_PREPARE, STEP_START } from \"./interface\";\nimport { getTransitionName, supportTransition } from \"./util/motion\";\n/**\n * `transitionSupport` is used for none transition test case.\n * Default we use browser transition event support check.\n */\nexport function genCSSMotion(config) {\n var transitionSupport = config;\n if (_typeof(config) === 'object') {\n transitionSupport = config.transitionSupport;\n }\n function isSupportTransition(props, contextMotion) {\n return !!(props.motionName && transitionSupport && contextMotion !== false);\n }\n var CSSMotion = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _props$visible = props.visible,\n visible = _props$visible === void 0 ? true : _props$visible,\n _props$removeOnLeave = props.removeOnLeave,\n removeOnLeave = _props$removeOnLeave === void 0 ? true : _props$removeOnLeave,\n forceRender = props.forceRender,\n children = props.children,\n motionName = props.motionName,\n leavedClassName = props.leavedClassName,\n eventProps = props.eventProps;\n var _React$useContext = React.useContext(Context),\n contextMotion = _React$useContext.motion;\n var supportMotion = isSupportTransition(props, contextMotion);\n\n // Ref to the react node, it may be a HTMLElement\n var nodeRef = useRef();\n // Ref to the dom wrapper in case ref can not pass to HTMLElement\n var wrapperNodeRef = useRef();\n function getDomElement() {\n try {\n // Here we're avoiding call for findDOMNode since it's deprecated\n // in strict mode. We're calling it only when node ref is not\n // an instance of DOM HTMLElement. Otherwise use\n // findDOMNode as a final resort\n return nodeRef.current instanceof HTMLElement ? nodeRef.current : findDOMNode(wrapperNodeRef.current);\n } catch (e) {\n // Only happen when `motionDeadline` trigger but element removed.\n return null;\n }\n }\n var _useStatus = useStatus(supportMotion, visible, getDomElement, props),\n _useStatus2 = _slicedToArray(_useStatus, 4),\n status = _useStatus2[0],\n statusStep = _useStatus2[1],\n statusStyle = _useStatus2[2],\n mergedVisible = _useStatus2[3];\n\n // Record whether content has rendered\n // Will return null for un-rendered even when `removeOnLeave={false}`\n var renderedRef = React.useRef(mergedVisible);\n if (mergedVisible) {\n renderedRef.current = true;\n }\n\n // ====================== Refs ======================\n var setNodeRef = React.useCallback(function (node) {\n nodeRef.current = node;\n fillRef(ref, node);\n }, [ref]);\n\n // ===================== Render =====================\n var motionChildren;\n var mergedProps = _objectSpread(_objectSpread({}, eventProps), {}, {\n visible: visible\n });\n if (!children) {\n // No children\n motionChildren = null;\n } else if (status === STATUS_NONE) {\n // Stable children\n if (mergedVisible) {\n motionChildren = children(_objectSpread({}, mergedProps), setNodeRef);\n } else if (!removeOnLeave && renderedRef.current && leavedClassName) {\n motionChildren = children(_objectSpread(_objectSpread({}, mergedProps), {}, {\n className: leavedClassName\n }), setNodeRef);\n } else if (forceRender || !removeOnLeave && !leavedClassName) {\n motionChildren = children(_objectSpread(_objectSpread({}, mergedProps), {}, {\n style: {\n display: 'none'\n }\n }), setNodeRef);\n } else {\n motionChildren = null;\n }\n } else {\n // In motion\n var statusSuffix;\n if (statusStep === STEP_PREPARE) {\n statusSuffix = 'prepare';\n } else if (isActive(statusStep)) {\n statusSuffix = 'active';\n } else if (statusStep === STEP_START) {\n statusSuffix = 'start';\n }\n var motionCls = getTransitionName(motionName, \"\".concat(status, \"-\").concat(statusSuffix));\n motionChildren = children(_objectSpread(_objectSpread({}, mergedProps), {}, {\n className: classNames(getTransitionName(motionName, status), _defineProperty(_defineProperty({}, motionCls, motionCls && statusSuffix), motionName, typeof motionName === 'string')),\n style: statusStyle\n }), setNodeRef);\n }\n\n // Auto inject ref if child node not have `ref` props\n if ( /*#__PURE__*/React.isValidElement(motionChildren) && supportRef(motionChildren)) {\n var _ref = motionChildren,\n originNodeRef = _ref.ref;\n if (!originNodeRef) {\n motionChildren = /*#__PURE__*/React.cloneElement(motionChildren, {\n ref: setNodeRef\n });\n }\n }\n return /*#__PURE__*/React.createElement(DomWrapper, {\n ref: wrapperNodeRef\n }, motionChildren);\n });\n CSSMotion.displayName = 'CSSMotion';\n return CSSMotion;\n}\nexport default genCSSMotion(supportTransition);","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nexport var STATUS_ADD = 'add';\nexport var STATUS_KEEP = 'keep';\nexport var STATUS_REMOVE = 'remove';\nexport var STATUS_REMOVED = 'removed';\nexport function wrapKeyToObject(key) {\n var keyObj;\n if (key && _typeof(key) === 'object' && 'key' in key) {\n keyObj = key;\n } else {\n keyObj = {\n key: key\n };\n }\n return _objectSpread(_objectSpread({}, keyObj), {}, {\n key: String(keyObj.key)\n });\n}\nexport function parseKeys() {\n var keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n return keys.map(wrapKeyToObject);\n}\nexport function diffKeys() {\n var prevKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var currentKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var list = [];\n var currentIndex = 0;\n var currentLen = currentKeys.length;\n var prevKeyObjects = parseKeys(prevKeys);\n var currentKeyObjects = parseKeys(currentKeys);\n\n // Check prev keys to insert or keep\n prevKeyObjects.forEach(function (keyObj) {\n var hit = false;\n for (var i = currentIndex; i < currentLen; i += 1) {\n var currentKeyObj = currentKeyObjects[i];\n if (currentKeyObj.key === keyObj.key) {\n // New added keys should add before current key\n if (currentIndex < i) {\n list = list.concat(currentKeyObjects.slice(currentIndex, i).map(function (obj) {\n return _objectSpread(_objectSpread({}, obj), {}, {\n status: STATUS_ADD\n });\n }));\n currentIndex = i;\n }\n list.push(_objectSpread(_objectSpread({}, currentKeyObj), {}, {\n status: STATUS_KEEP\n }));\n currentIndex += 1;\n hit = true;\n break;\n }\n }\n\n // If not hit, it means key is removed\n if (!hit) {\n list.push(_objectSpread(_objectSpread({}, keyObj), {}, {\n status: STATUS_REMOVE\n }));\n }\n });\n\n // Add rest to the list\n if (currentIndex < currentLen) {\n list = list.concat(currentKeyObjects.slice(currentIndex).map(function (obj) {\n return _objectSpread(_objectSpread({}, obj), {}, {\n status: STATUS_ADD\n });\n }));\n }\n\n /**\n * Merge same key when it remove and add again:\n * [1 - add, 2 - keep, 1 - remove] -> [1 - keep, 2 - keep]\n */\n var keys = {};\n list.forEach(function (_ref) {\n var key = _ref.key;\n keys[key] = (keys[key] || 0) + 1;\n });\n var duplicatedKeys = Object.keys(keys).filter(function (key) {\n return keys[key] > 1;\n });\n duplicatedKeys.forEach(function (matchKey) {\n // Remove `STATUS_REMOVE` node.\n list = list.filter(function (_ref2) {\n var key = _ref2.key,\n status = _ref2.status;\n return key !== matchKey || status !== STATUS_REMOVE;\n });\n\n // Update `STATUS_ADD` to `STATUS_KEEP`\n list.forEach(function (node) {\n if (node.key === matchKey) {\n // eslint-disable-next-line no-param-reassign\n node.status = STATUS_KEEP;\n }\n });\n });\n return list;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"component\", \"children\", \"onVisibleChanged\", \"onAllRemoved\"],\n _excluded2 = [\"status\"];\n/* eslint react/prop-types: 0 */\nimport * as React from 'react';\nimport OriginCSSMotion from \"./CSSMotion\";\nimport { diffKeys, parseKeys, STATUS_ADD, STATUS_KEEP, STATUS_REMOVE, STATUS_REMOVED } from \"./util/diff\";\nimport { supportTransition } from \"./util/motion\";\nvar MOTION_PROP_NAMES = ['eventProps', 'visible', 'children', 'motionName', 'motionAppear', 'motionEnter', 'motionLeave', 'motionLeaveImmediately', 'motionDeadline', 'removeOnLeave', 'leavedClassName', 'onAppearPrepare', 'onAppearStart', 'onAppearActive', 'onAppearEnd', 'onEnterStart', 'onEnterActive', 'onEnterEnd', 'onLeaveStart', 'onLeaveActive', 'onLeaveEnd'];\n/**\n * Generate a CSSMotionList component with config\n * @param transitionSupport No need since CSSMotionList no longer depends on transition support\n * @param CSSMotion CSSMotion component\n */\nexport function genCSSMotionList(transitionSupport) {\n var CSSMotion = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : OriginCSSMotion;\n var CSSMotionList = /*#__PURE__*/function (_React$Component) {\n _inherits(CSSMotionList, _React$Component);\n var _super = _createSuper(CSSMotionList);\n function CSSMotionList() {\n var _this;\n _classCallCheck(this, CSSMotionList);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n keyEntities: []\n });\n // ZombieJ: Return the count of rest keys. It's safe to refactor if need more info.\n _defineProperty(_assertThisInitialized(_this), \"removeKey\", function (removeKey) {\n var keyEntities = _this.state.keyEntities;\n var nextKeyEntities = keyEntities.map(function (entity) {\n if (entity.key !== removeKey) return entity;\n return _objectSpread(_objectSpread({}, entity), {}, {\n status: STATUS_REMOVED\n });\n });\n _this.setState({\n keyEntities: nextKeyEntities\n });\n return nextKeyEntities.filter(function (_ref) {\n var status = _ref.status;\n return status !== STATUS_REMOVED;\n }).length;\n });\n return _this;\n }\n _createClass(CSSMotionList, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var keyEntities = this.state.keyEntities;\n var _this$props = this.props,\n component = _this$props.component,\n children = _this$props.children,\n _onVisibleChanged = _this$props.onVisibleChanged,\n onAllRemoved = _this$props.onAllRemoved,\n restProps = _objectWithoutProperties(_this$props, _excluded);\n var Component = component || React.Fragment;\n var motionProps = {};\n MOTION_PROP_NAMES.forEach(function (prop) {\n motionProps[prop] = restProps[prop];\n delete restProps[prop];\n });\n delete restProps.keys;\n return /*#__PURE__*/React.createElement(Component, restProps, keyEntities.map(function (_ref2, index) {\n var status = _ref2.status,\n eventProps = _objectWithoutProperties(_ref2, _excluded2);\n var visible = status === STATUS_ADD || status === STATUS_KEEP;\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({}, motionProps, {\n key: eventProps.key,\n visible: visible,\n eventProps: eventProps,\n onVisibleChanged: function onVisibleChanged(changedVisible) {\n _onVisibleChanged === null || _onVisibleChanged === void 0 || _onVisibleChanged(changedVisible, {\n key: eventProps.key\n });\n if (!changedVisible) {\n var restKeysCount = _this2.removeKey(eventProps.key);\n if (restKeysCount === 0 && onAllRemoved) {\n onAllRemoved();\n }\n }\n }\n }), function (props, ref) {\n return children(_objectSpread(_objectSpread({}, props), {}, {\n index: index\n }), ref);\n });\n }));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref3, _ref4) {\n var keys = _ref3.keys;\n var keyEntities = _ref4.keyEntities;\n var parsedKeyObjects = parseKeys(keys);\n var mixedKeyEntities = diffKeys(keyEntities, parsedKeyObjects);\n return {\n keyEntities: mixedKeyEntities.filter(function (entity) {\n var prevEntity = keyEntities.find(function (_ref5) {\n var key = _ref5.key;\n return entity.key === key;\n });\n\n // Remove if already mark as removed\n if (prevEntity && prevEntity.status === STATUS_REMOVED && entity.status === STATUS_REMOVE) {\n return false;\n }\n return true;\n })\n };\n }\n }]);\n return CSSMotionList;\n }(React.Component);\n _defineProperty(CSSMotionList, \"defaultProps\", {\n component: 'div'\n });\n return CSSMotionList;\n}\nexport default genCSSMotionList(supportTransition);","import CSSMotion from \"./CSSMotion\";\nimport CSSMotionList from \"./CSSMotionList\";\nexport { default as Provider } from \"./context\";\nexport { CSSMotionList };\nexport default CSSMotion;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nimport { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\n\nvar Notice = /*#__PURE__*/function (_Component) {\n _inherits(Notice, _Component);\n\n var _super = _createSuper(Notice);\n\n function Notice() {\n var _this;\n\n _classCallCheck(this, Notice);\n\n _this = _super.apply(this, arguments);\n _this.closeTimer = null;\n\n _this.close = function (e) {\n if (e) {\n e.stopPropagation();\n }\n\n _this.clearCloseTimer();\n\n var _this$props = _this.props,\n onClose = _this$props.onClose,\n noticeKey = _this$props.noticeKey;\n\n if (onClose) {\n onClose(noticeKey);\n }\n };\n\n _this.startCloseTimer = function () {\n if (_this.props.duration) {\n _this.closeTimer = window.setTimeout(function () {\n _this.close();\n }, _this.props.duration * 1000);\n }\n };\n\n _this.clearCloseTimer = function () {\n if (_this.closeTimer) {\n clearTimeout(_this.closeTimer);\n _this.closeTimer = null;\n }\n };\n\n return _this;\n }\n\n _createClass(Notice, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.startCloseTimer();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (this.props.duration !== prevProps.duration || this.props.updateMark !== prevProps.updateMark) {\n this.restartCloseTimer();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.clearCloseTimer();\n }\n }, {\n key: \"restartCloseTimer\",\n value: function restartCloseTimer() {\n this.clearCloseTimer();\n this.startCloseTimer();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n prefixCls = _this$props2.prefixCls,\n className = _this$props2.className,\n closable = _this$props2.closable,\n closeIcon = _this$props2.closeIcon,\n style = _this$props2.style,\n onClick = _this$props2.onClick,\n children = _this$props2.children,\n holder = _this$props2.holder;\n var componentClass = \"\".concat(prefixCls, \"-notice\");\n var dataOrAriaAttributeProps = Object.keys(this.props).reduce(function (acc, key) {\n if (key.substr(0, 5) === 'data-' || key.substr(0, 5) === 'aria-' || key === 'role') {\n acc[key] = _this2.props[key];\n }\n\n return acc;\n }, {});\n var node = React.createElement(\"div\", Object.assign({\n className: classNames(componentClass, className, _defineProperty({}, \"\".concat(componentClass, \"-closable\"), closable)),\n style: style,\n onMouseEnter: this.clearCloseTimer,\n onMouseLeave: this.startCloseTimer,\n onClick: onClick\n }, dataOrAriaAttributeProps), React.createElement(\"div\", {\n className: \"\".concat(componentClass, \"-content\")\n }, children), closable ? React.createElement(\"a\", {\n tabIndex: 0,\n onClick: this.close,\n className: \"\".concat(componentClass, \"-close\")\n }, closeIcon || React.createElement(\"span\", {\n className: \"\".concat(componentClass, \"-close-x\")\n })) : null);\n\n if (holder) {\n return ReactDOM.createPortal(node, holder);\n }\n\n return node;\n }\n }]);\n\n return Notice;\n}(Component);\n\nexport { Notice as default };\nNotice.defaultProps = {\n onClose: function onClose() {},\n duration: 1.5\n};","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nimport { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport { CSSMotionList } from 'rc-motion';\nimport Notice from './Notice';\nimport _useNotification from './useNotification';\nvar seed = 0;\nvar now = Date.now();\n\nfunction getUuid() {\n var id = seed;\n seed += 1;\n return \"rcNotification_\".concat(now, \"_\").concat(id);\n}\n\nvar Notification = /*#__PURE__*/function (_Component) {\n _inherits(Notification, _Component);\n\n var _super = _createSuper(Notification);\n\n function Notification() {\n var _this;\n\n _classCallCheck(this, Notification);\n\n _this = _super.apply(this, arguments);\n _this.state = {\n notices: []\n };\n _this.hookRefs = new Map();\n\n _this.add = function (originNotice, holderCallback) {\n var key = originNotice.key || getUuid();\n\n var notice = _objectSpread(_objectSpread({}, originNotice), {}, {\n key: key\n });\n\n var maxCount = _this.props.maxCount;\n\n _this.setState(function (previousState) {\n var notices = previousState.notices;\n var noticeIndex = notices.map(function (v) {\n return v.notice.key;\n }).indexOf(key);\n var updatedNotices = notices.concat();\n\n if (noticeIndex !== -1) {\n updatedNotices.splice(noticeIndex, 1, {\n notice: notice,\n holderCallback: holderCallback\n });\n } else {\n if (maxCount && notices.length >= maxCount) {\n // XXX, use key of first item to update new added (let React to move exsiting\n // instead of remove and mount). Same key was used before for both a) external\n // manual control and b) internal react 'key' prop , which is not that good.\n // eslint-disable-next-line no-param-reassign\n // zombieJ: Not know why use `updateKey`. This makes Notice infinite loop in jest.\n // Change to `updateMark` for compare instead.\n // https://github.com/react-component/notification/commit/32299e6be396f94040bfa82517eea940db947ece\n notice.key = updatedNotices[0].notice.key;\n notice.updateMark = getUuid(); // zombieJ: That's why. User may close by key directly.\n // We need record this but not re-render to avoid upper issue\n // https://github.com/react-component/notification/issues/129\n\n notice.userPassKey = key;\n updatedNotices.shift();\n }\n\n updatedNotices.push({\n notice: notice,\n holderCallback: holderCallback\n });\n }\n\n return {\n notices: updatedNotices\n };\n });\n };\n\n _this.remove = function (removeKey) {\n _this.setState(function (_ref) {\n var notices = _ref.notices;\n return {\n notices: notices.filter(function (_ref2) {\n var _ref2$notice = _ref2.notice,\n key = _ref2$notice.key,\n userPassKey = _ref2$notice.userPassKey;\n var mergedKey = userPassKey || key;\n return mergedKey !== removeKey;\n })\n };\n });\n };\n\n _this.noticePropsMap = {};\n return _this;\n }\n\n _createClass(Notification, [{\n key: \"getTransitionName\",\n value: function getTransitionName() {\n var _this$props = this.props,\n prefixCls = _this$props.prefixCls,\n animation = _this$props.animation;\n var transitionName = this.props.transitionName;\n\n if (!transitionName && animation) {\n transitionName = \"\".concat(prefixCls, \"-\").concat(animation);\n }\n\n return transitionName;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var notices = this.state.notices;\n var _this$props2 = this.props,\n prefixCls = _this$props2.prefixCls,\n className = _this$props2.className,\n closeIcon = _this$props2.closeIcon,\n style = _this$props2.style;\n var noticeKeys = [];\n notices.forEach(function (_ref3, index) {\n var notice = _ref3.notice,\n holderCallback = _ref3.holderCallback;\n var updateMark = index === notices.length - 1 ? notice.updateMark : undefined;\n var key = notice.key,\n userPassKey = notice.userPassKey;\n\n var noticeProps = _objectSpread(_objectSpread(_objectSpread({\n prefixCls: prefixCls,\n closeIcon: closeIcon\n }, notice), notice.props), {}, {\n key: key,\n noticeKey: userPassKey || key,\n updateMark: updateMark,\n onClose: function onClose(noticeKey) {\n var _notice$onClose;\n\n _this2.remove(noticeKey);\n\n (_notice$onClose = notice.onClose) === null || _notice$onClose === void 0 ? void 0 : _notice$onClose.call(notice);\n },\n onClick: notice.onClick,\n children: notice.content\n }); // Give to motion\n\n\n noticeKeys.push(key);\n _this2.noticePropsMap[key] = {\n props: noticeProps,\n holderCallback: holderCallback\n };\n });\n return React.createElement(\"div\", {\n className: classNames(prefixCls, className),\n style: style\n }, React.createElement(CSSMotionList, {\n keys: noticeKeys,\n motionName: this.getTransitionName(),\n onVisibleChanged: function onVisibleChanged(changedVisible, _ref4) {\n var key = _ref4.key;\n\n if (!changedVisible) {\n delete _this2.noticePropsMap[key];\n }\n }\n }, function (_ref5) {\n var key = _ref5.key,\n motionClassName = _ref5.className,\n motionStyle = _ref5.style;\n var _this2$noticePropsMap = _this2.noticePropsMap[key],\n noticeProps = _this2$noticePropsMap.props,\n holderCallback = _this2$noticePropsMap.holderCallback;\n\n if (holderCallback) {\n return React.createElement(\"div\", {\n key: key,\n className: classNames(motionClassName, \"\".concat(prefixCls, \"-hook-holder\")),\n style: _objectSpread({}, motionStyle),\n ref: function ref(div) {\n if (typeof key === 'undefined') {\n return;\n }\n\n if (div) {\n _this2.hookRefs.set(key, div);\n\n holderCallback(div, noticeProps);\n } else {\n _this2.hookRefs.delete(key);\n }\n }\n });\n }\n\n return React.createElement(Notice, Object.assign({}, noticeProps, {\n className: classNames(motionClassName, noticeProps === null || noticeProps === void 0 ? void 0 : noticeProps.className),\n style: _objectSpread(_objectSpread({}, motionStyle), noticeProps === null || noticeProps === void 0 ? void 0 : noticeProps.style)\n }));\n }));\n }\n }]);\n\n return Notification;\n}(Component);\n\nNotification.defaultProps = {\n prefixCls: 'rc-notification',\n animation: 'fade',\n style: {\n top: 65,\n left: '50%'\n }\n};\n\nNotification.newInstance = function newNotificationInstance(properties, callback) {\n var _ref6 = properties || {},\n getContainer = _ref6.getContainer,\n props = _objectWithoutProperties(_ref6, [\"getContainer\"]);\n\n var div = document.createElement('div');\n\n if (getContainer) {\n var root = getContainer();\n root.appendChild(div);\n } else {\n document.body.appendChild(div);\n }\n\n var called = false;\n\n function ref(notification) {\n if (called) {\n return;\n }\n\n called = true;\n callback({\n notice: function notice(noticeProps) {\n notification.add(noticeProps);\n },\n removeNotice: function removeNotice(key) {\n notification.remove(key);\n },\n component: notification,\n destroy: function destroy() {\n ReactDOM.unmountComponentAtNode(div);\n\n if (div.parentNode) {\n div.parentNode.removeChild(div);\n }\n },\n // Hooks\n useNotification: function useNotification() {\n return _useNotification(notification);\n }\n });\n } // Only used for test case usage\n\n\n if (process.env.NODE_ENV === 'test' && properties.TEST_RENDER) {\n properties.TEST_RENDER(React.createElement(Notification, Object.assign({}, props, {\n ref: ref\n })));\n return;\n }\n\n ReactDOM.render(React.createElement(Notification, Object.assign({}, props, {\n ref: ref\n })), div);\n};\n\nexport default Notification;","import Notification from './Notification';\nexport default Notification;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport Notice from './Notice';\nexport default function useNotification(notificationInstance) {\n var createdRef = React.useRef({});\n\n var _React$useState = React.useState([]),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n elements = _React$useState2[0],\n setElements = _React$useState2[1];\n\n function notify(noticeProps) {\n notificationInstance.add(noticeProps, function (div, props) {\n var key = props.key;\n\n if (div && !createdRef.current[key]) {\n var noticeEle = React.createElement(Notice, Object.assign({}, props, {\n holder: div\n }));\n createdRef.current[key] = noticeEle;\n setElements(function (originElements) {\n return [].concat(_toConsumableArray(originElements), [noticeEle]);\n });\n }\n });\n }\n\n return [notify, React.createElement(React.Fragment, null, elements)];\n}","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar Notice = /*#__PURE__*/function (_Component) {\n (0, _inherits2.default)(Notice, _Component);\n\n var _super = (0, _createSuper2.default)(Notice);\n\n function Notice() {\n var _this;\n\n (0, _classCallCheck2.default)(this, Notice);\n _this = _super.apply(this, arguments);\n _this.closeTimer = null;\n\n _this.close = function (e) {\n if (e) {\n e.stopPropagation();\n }\n\n _this.clearCloseTimer();\n\n var _this$props = _this.props,\n onClose = _this$props.onClose,\n noticeKey = _this$props.noticeKey;\n\n if (onClose) {\n onClose(noticeKey);\n }\n };\n\n _this.startCloseTimer = function () {\n if (_this.props.duration) {\n _this.closeTimer = window.setTimeout(function () {\n _this.close();\n }, _this.props.duration * 1000);\n }\n };\n\n _this.clearCloseTimer = function () {\n if (_this.closeTimer) {\n clearTimeout(_this.closeTimer);\n _this.closeTimer = null;\n }\n };\n\n return _this;\n }\n\n (0, _createClass2.default)(Notice, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.startCloseTimer();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (this.props.duration !== prevProps.duration || this.props.updateMark !== prevProps.updateMark) {\n this.restartCloseTimer();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.clearCloseTimer();\n }\n }, {\n key: \"restartCloseTimer\",\n value: function restartCloseTimer() {\n this.clearCloseTimer();\n this.startCloseTimer();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n prefixCls = _this$props2.prefixCls,\n className = _this$props2.className,\n closable = _this$props2.closable,\n closeIcon = _this$props2.closeIcon,\n style = _this$props2.style,\n onClick = _this$props2.onClick,\n children = _this$props2.children,\n holder = _this$props2.holder;\n var componentClass = \"\".concat(prefixCls, \"-notice\");\n var dataOrAriaAttributeProps = Object.keys(this.props).reduce(function (acc, key) {\n if (key.substr(0, 5) === 'data-' || key.substr(0, 5) === 'aria-' || key === 'role') {\n acc[key] = _this2.props[key];\n }\n\n return acc;\n }, {});\n var node = React.createElement(\"div\", Object.assign({\n className: (0, _classnames.default)(componentClass, className, (0, _defineProperty2.default)({}, \"\".concat(componentClass, \"-closable\"), closable)),\n style: style,\n onMouseEnter: this.clearCloseTimer,\n onMouseLeave: this.startCloseTimer,\n onClick: onClick\n }, dataOrAriaAttributeProps), React.createElement(\"div\", {\n className: \"\".concat(componentClass, \"-content\")\n }, children), closable ? React.createElement(\"a\", {\n tabIndex: 0,\n onClick: this.close,\n className: \"\".concat(componentClass, \"-close\")\n }, closeIcon || React.createElement(\"span\", {\n className: \"\".concat(componentClass, \"-close-x\")\n })) : null);\n\n if (holder) {\n return _reactDom.default.createPortal(node, holder);\n }\n\n return node;\n }\n }]);\n return Notice;\n}(React.Component);\n\nexports.default = Notice;\nNotice.defaultProps = {\n onClose: function onClose() {},\n duration: 1.5\n};","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = useNotification;\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _Notice = _interopRequireDefault(require(\"./Notice\"));\n\nfunction useNotification(notificationInstance) {\n var createdRef = React.useRef({});\n\n var _React$useState = React.useState([]),\n _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),\n elements = _React$useState2[0],\n setElements = _React$useState2[1];\n\n function notify(noticeProps) {\n notificationInstance.add(noticeProps, function (div, props) {\n var key = props.key;\n\n if (div && !createdRef.current[key]) {\n var noticeEle = React.createElement(_Notice.default, Object.assign({}, props, {\n holder: div\n }));\n createdRef.current[key] = noticeEle;\n setElements(function (originElements) {\n return [].concat((0, _toConsumableArray2.default)(originElements), [noticeEle]);\n });\n }\n });\n }\n\n return [notify, React.createElement(React.Fragment, null, elements)];\n}","import * as React from 'react';\nexport var CollectionContext = /*#__PURE__*/React.createContext(null);\n/**\n * Collect all the resize event from children ResizeObserver\n */\nexport function Collection(_ref) {\n var children = _ref.children,\n onBatchResize = _ref.onBatchResize;\n var resizeIdRef = React.useRef(0);\n var resizeInfosRef = React.useRef([]);\n var onCollectionResize = React.useContext(CollectionContext);\n var onResize = React.useCallback(function (size, element, data) {\n resizeIdRef.current += 1;\n var currentId = resizeIdRef.current;\n resizeInfosRef.current.push({\n size: size,\n element: element,\n data: data\n });\n Promise.resolve().then(function () {\n if (currentId === resizeIdRef.current) {\n onBatchResize === null || onBatchResize === void 0 || onBatchResize(resizeInfosRef.current);\n resizeInfosRef.current = [];\n }\n });\n\n // Continue bubbling if parent exist\n onCollectionResize === null || onCollectionResize === void 0 || onCollectionResize(size, element, data);\n }, [onBatchResize, onCollectionResize]);\n return /*#__PURE__*/React.createElement(CollectionContext.Provider, {\n value: onResize\n }, children);\n}","import ResizeObserver from 'resize-observer-polyfill';\n// =============================== Const ===============================\nvar elementListeners = new Map();\nfunction onResize(entities) {\n entities.forEach(function (entity) {\n var _elementListeners$get;\n var target = entity.target;\n (_elementListeners$get = elementListeners.get(target)) === null || _elementListeners$get === void 0 || _elementListeners$get.forEach(function (listener) {\n return listener(target);\n });\n });\n}\n\n// Note: ResizeObserver polyfill not support option to measure border-box resize\nvar resizeObserver = new ResizeObserver(onResize);\n\n// Dev env only\nexport var _el = process.env.NODE_ENV !== 'production' ? elementListeners : null; // eslint-disable-line\nexport var _rs = process.env.NODE_ENV !== 'production' ? onResize : null; // eslint-disable-line\n\n// ============================== Observe ==============================\nexport function observe(element, callback) {\n if (!elementListeners.has(element)) {\n elementListeners.set(element, new Set());\n resizeObserver.observe(element);\n }\n elementListeners.get(element).add(callback);\n}\nexport function unobserve(element, callback) {\n if (elementListeners.has(element)) {\n elementListeners.get(element).delete(callback);\n if (!elementListeners.get(element).size) {\n resizeObserver.unobserve(element);\n elementListeners.delete(element);\n }\n }\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\n/**\n * Fallback to findDOMNode if origin ref do not provide any dom element\n */\nvar DomWrapper = /*#__PURE__*/function (_React$Component) {\n _inherits(DomWrapper, _React$Component);\n var _super = _createSuper(DomWrapper);\n function DomWrapper() {\n _classCallCheck(this, DomWrapper);\n return _super.apply(this, arguments);\n }\n _createClass(DomWrapper, [{\n key: \"render\",\n value: function render() {\n return this.props.children;\n }\n }]);\n return DomWrapper;\n}(React.Component);\nexport { DomWrapper as default };","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport { supportRef, useComposeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { CollectionContext } from \"../Collection\";\nimport { observe, unobserve } from \"../utils/observerUtil\";\nimport DomWrapper from \"./DomWrapper\";\nfunction SingleObserver(props, ref) {\n var children = props.children,\n disabled = props.disabled;\n var elementRef = React.useRef(null);\n var wrapperRef = React.useRef(null);\n var onCollectionResize = React.useContext(CollectionContext);\n\n // =========================== Children ===========================\n var isRenderProps = typeof children === 'function';\n var mergedChildren = isRenderProps ? children(elementRef) : children;\n\n // ============================= Size =============================\n var sizeRef = React.useRef({\n width: -1,\n height: -1,\n offsetWidth: -1,\n offsetHeight: -1\n });\n\n // ============================= Ref ==============================\n var canRef = !isRenderProps && /*#__PURE__*/React.isValidElement(mergedChildren) && supportRef(mergedChildren);\n var originRef = canRef ? mergedChildren.ref : null;\n var mergedRef = useComposeRef(originRef, elementRef);\n var getDom = function getDom() {\n var _elementRef$current;\n return findDOMNode(elementRef.current) || (\n // Support `nativeElement` format\n elementRef.current && _typeof(elementRef.current) === 'object' ? findDOMNode((_elementRef$current = elementRef.current) === null || _elementRef$current === void 0 ? void 0 : _elementRef$current.nativeElement) : null) || findDOMNode(wrapperRef.current);\n };\n React.useImperativeHandle(ref, function () {\n return getDom();\n });\n\n // =========================== Observe ============================\n var propsRef = React.useRef(props);\n propsRef.current = props;\n\n // Handler\n var onInternalResize = React.useCallback(function (target) {\n var _propsRef$current = propsRef.current,\n onResize = _propsRef$current.onResize,\n data = _propsRef$current.data;\n var _target$getBoundingCl = target.getBoundingClientRect(),\n width = _target$getBoundingCl.width,\n height = _target$getBoundingCl.height;\n var offsetWidth = target.offsetWidth,\n offsetHeight = target.offsetHeight;\n\n /**\n * Resize observer trigger when content size changed.\n * In most case we just care about element size,\n * let's use `boundary` instead of `contentRect` here to avoid shaking.\n */\n var fixedWidth = Math.floor(width);\n var fixedHeight = Math.floor(height);\n if (sizeRef.current.width !== fixedWidth || sizeRef.current.height !== fixedHeight || sizeRef.current.offsetWidth !== offsetWidth || sizeRef.current.offsetHeight !== offsetHeight) {\n var size = {\n width: fixedWidth,\n height: fixedHeight,\n offsetWidth: offsetWidth,\n offsetHeight: offsetHeight\n };\n sizeRef.current = size;\n\n // IE is strange, right?\n var mergedOffsetWidth = offsetWidth === Math.round(width) ? width : offsetWidth;\n var mergedOffsetHeight = offsetHeight === Math.round(height) ? height : offsetHeight;\n var sizeInfo = _objectSpread(_objectSpread({}, size), {}, {\n offsetWidth: mergedOffsetWidth,\n offsetHeight: mergedOffsetHeight\n });\n\n // Let collection know what happened\n onCollectionResize === null || onCollectionResize === void 0 || onCollectionResize(sizeInfo, target, data);\n if (onResize) {\n // defer the callback but not defer to next frame\n Promise.resolve().then(function () {\n onResize(sizeInfo, target);\n });\n }\n }\n }, []);\n\n // Dynamic observe\n React.useEffect(function () {\n var currentElement = getDom();\n if (currentElement && !disabled) {\n observe(currentElement, onInternalResize);\n }\n return function () {\n return unobserve(currentElement, onInternalResize);\n };\n }, [elementRef.current, disabled]);\n\n // ============================ Render ============================\n return /*#__PURE__*/React.createElement(DomWrapper, {\n ref: wrapperRef\n }, canRef ? /*#__PURE__*/React.cloneElement(mergedChildren, {\n ref: mergedRef\n }) : mergedChildren);\n}\nvar RefSingleObserver = /*#__PURE__*/React.forwardRef(SingleObserver);\nif (process.env.NODE_ENV !== 'production') {\n RefSingleObserver.displayName = 'SingleObserver';\n}\nexport default RefSingleObserver;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport { warning } from \"rc-util/es/warning\";\nimport SingleObserver from \"./SingleObserver\";\nimport { Collection } from \"./Collection\";\nvar INTERNAL_PREFIX_KEY = 'rc-observer-key';\nimport { _rs } from \"./utils/observerUtil\";\nexport { /** @private Test only for mock trigger resize event */\n_rs };\nfunction ResizeObserver(props, ref) {\n var children = props.children;\n var childNodes = typeof children === 'function' ? [children] : toArray(children);\n if (process.env.NODE_ENV !== 'production') {\n if (childNodes.length > 1) {\n warning(false, 'Find more than one child node with `children` in ResizeObserver. Please use ResizeObserver.Collection instead.');\n } else if (childNodes.length === 0) {\n warning(false, '`children` of ResizeObserver is empty. Nothing is in observe.');\n }\n }\n return childNodes.map(function (child, index) {\n var key = (child === null || child === void 0 ? void 0 : child.key) || \"\".concat(INTERNAL_PREFIX_KEY, \"-\").concat(index);\n return /*#__PURE__*/React.createElement(SingleObserver, _extends({}, props, {\n key: key,\n ref: index === 0 ? ref : undefined\n }), child);\n });\n}\nvar RefResizeObserver = /*#__PURE__*/React.forwardRef(ResizeObserver);\nif (process.env.NODE_ENV !== 'production') {\n RefResizeObserver.displayName = 'ResizeObserver';\n}\nRefResizeObserver.Collection = Collection;\nexport default RefResizeObserver;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"invalidate\", \"item\", \"renderItem\", \"responsive\", \"responsiveDisabled\", \"registerSize\", \"itemKey\", \"className\", \"style\", \"children\", \"display\", \"order\", \"component\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\n// Use shared variable to save bundle size\nvar UNDEFINED = undefined;\nfunction InternalItem(props, ref) {\n var prefixCls = props.prefixCls,\n invalidate = props.invalidate,\n item = props.item,\n renderItem = props.renderItem,\n responsive = props.responsive,\n responsiveDisabled = props.responsiveDisabled,\n registerSize = props.registerSize,\n itemKey = props.itemKey,\n className = props.className,\n style = props.style,\n children = props.children,\n display = props.display,\n order = props.order,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n restProps = _objectWithoutProperties(props, _excluded);\n var mergedHidden = responsive && !display;\n // ================================ Effect ================================\n function internalRegisterSize(width) {\n registerSize(itemKey, width);\n }\n React.useEffect(function () {\n return function () {\n internalRegisterSize(null);\n };\n }, []);\n // ================================ Render ================================\n var childNode = renderItem && item !== UNDEFINED ? renderItem(item) : children;\n var overflowStyle;\n if (!invalidate) {\n overflowStyle = {\n opacity: mergedHidden ? 0 : 1,\n height: mergedHidden ? 0 : UNDEFINED,\n overflowY: mergedHidden ? 'hidden' : UNDEFINED,\n order: responsive ? order : UNDEFINED,\n pointerEvents: mergedHidden ? 'none' : UNDEFINED,\n position: mergedHidden ? 'absolute' : UNDEFINED\n };\n }\n var overflowProps = {};\n if (mergedHidden) {\n overflowProps['aria-hidden'] = true;\n }\n var itemNode = /*#__PURE__*/React.createElement(Component, _extends({\n className: classNames(!invalidate && prefixCls, className),\n style: _objectSpread(_objectSpread({}, overflowStyle), style)\n }, overflowProps, restProps, {\n ref: ref\n }), childNode);\n if (responsive) {\n itemNode = /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: function onResize(_ref) {\n var offsetWidth = _ref.offsetWidth;\n internalRegisterSize(offsetWidth);\n },\n disabled: responsiveDisabled\n }, itemNode);\n }\n return itemNode;\n}\nvar Item = /*#__PURE__*/React.forwardRef(InternalItem);\nItem.displayName = 'Item';\nexport default Item;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport * as React from 'react';\nimport { unstable_batchedUpdates } from 'react-dom';\nimport channelUpdate from './channelUpdate';\n/**\n * Batcher for record any `useEffectState` need update.\n */\nexport function useBatcher() {\n // Updater Trigger\n var updateFuncRef = React.useRef(null);\n // Notify update\n var notifyEffectUpdate = function notifyEffectUpdate(callback) {\n if (!updateFuncRef.current) {\n updateFuncRef.current = [];\n channelUpdate(function () {\n unstable_batchedUpdates(function () {\n updateFuncRef.current.forEach(function (fn) {\n fn();\n });\n updateFuncRef.current = null;\n });\n });\n }\n updateFuncRef.current.push(callback);\n };\n return notifyEffectUpdate;\n}\n/**\n * Trigger state update by `useLayoutEffect` to save perf.\n */\nexport default function useEffectState(notifyEffectUpdate, defaultValue) {\n // Value\n var _React$useState = React.useState(defaultValue),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n stateValue = _React$useState2[0],\n setStateValue = _React$useState2[1];\n // Set State\n var setEffectVal = useEvent(function (nextValue) {\n notifyEffectUpdate(function () {\n setStateValue(nextValue);\n });\n });\n return [stateValue, setEffectVal];\n}","import React from 'react';\nexport var OverflowContext = /*#__PURE__*/React.createContext(null);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"component\"],\n _excluded2 = [\"className\"],\n _excluded3 = [\"className\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Item from './Item';\nimport { OverflowContext } from './context';\nvar InternalRawItem = function InternalRawItem(props, ref) {\n var context = React.useContext(OverflowContext);\n // Render directly when context not provided\n if (!context) {\n var _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n _restProps = _objectWithoutProperties(props, _excluded);\n return /*#__PURE__*/React.createElement(Component, _extends({}, _restProps, {\n ref: ref\n }));\n }\n var contextClassName = context.className,\n restContext = _objectWithoutProperties(context, _excluded2);\n var className = props.className,\n restProps = _objectWithoutProperties(props, _excluded3);\n // Do not pass context to sub item to avoid multiple measure\n return /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n value: null\n }, /*#__PURE__*/React.createElement(Item, _extends({\n ref: ref,\n className: classNames(contextClassName, className)\n }, restContext, restProps)));\n};\nvar RawItem = /*#__PURE__*/React.forwardRef(InternalRawItem);\nRawItem.displayName = 'RawItem';\nexport default RawItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"data\", \"renderItem\", \"renderRawItem\", \"itemKey\", \"itemWidth\", \"ssr\", \"style\", \"className\", \"maxCount\", \"renderRest\", \"renderRawRest\", \"suffix\", \"component\", \"itemComponent\", \"onVisibleChange\"];\nimport * as React from 'react';\nimport { useState, useMemo, useCallback } from 'react';\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport Item from './Item';\nimport useEffectState, { useBatcher } from './hooks/useEffectState';\nimport RawItem from './RawItem';\nimport { OverflowContext } from './context';\nvar RESPONSIVE = 'responsive';\nvar INVALIDATE = 'invalidate';\nexport { OverflowContext } from './context';\nfunction defaultRenderRest(omittedItems) {\n return \"+ \".concat(omittedItems.length, \" ...\");\n}\nfunction Overflow(props, ref) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-overflow' : _props$prefixCls,\n _props$data = props.data,\n data = _props$data === void 0 ? [] : _props$data,\n renderItem = props.renderItem,\n renderRawItem = props.renderRawItem,\n itemKey = props.itemKey,\n _props$itemWidth = props.itemWidth,\n itemWidth = _props$itemWidth === void 0 ? 10 : _props$itemWidth,\n ssr = props.ssr,\n style = props.style,\n className = props.className,\n maxCount = props.maxCount,\n renderRest = props.renderRest,\n renderRawRest = props.renderRawRest,\n suffix = props.suffix,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n itemComponent = props.itemComponent,\n onVisibleChange = props.onVisibleChange,\n restProps = _objectWithoutProperties(props, _excluded);\n var fullySSR = ssr === 'full';\n var notifyEffectUpdate = useBatcher();\n var _useEffectState = useEffectState(notifyEffectUpdate, null),\n _useEffectState2 = _slicedToArray(_useEffectState, 2),\n containerWidth = _useEffectState2[0],\n setContainerWidth = _useEffectState2[1];\n var mergedContainerWidth = containerWidth || 0;\n var _useEffectState3 = useEffectState(notifyEffectUpdate, new Map()),\n _useEffectState4 = _slicedToArray(_useEffectState3, 2),\n itemWidths = _useEffectState4[0],\n setItemWidths = _useEffectState4[1];\n var _useEffectState5 = useEffectState(notifyEffectUpdate, 0),\n _useEffectState6 = _slicedToArray(_useEffectState5, 2),\n prevRestWidth = _useEffectState6[0],\n setPrevRestWidth = _useEffectState6[1];\n var _useEffectState7 = useEffectState(notifyEffectUpdate, 0),\n _useEffectState8 = _slicedToArray(_useEffectState7, 2),\n restWidth = _useEffectState8[0],\n setRestWidth = _useEffectState8[1];\n var _useEffectState9 = useEffectState(notifyEffectUpdate, 0),\n _useEffectState10 = _slicedToArray(_useEffectState9, 2),\n suffixWidth = _useEffectState10[0],\n setSuffixWidth = _useEffectState10[1];\n var _useState = useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n suffixFixedStart = _useState2[0],\n setSuffixFixedStart = _useState2[1];\n var _useState3 = useState(null),\n _useState4 = _slicedToArray(_useState3, 2),\n displayCount = _useState4[0],\n setDisplayCount = _useState4[1];\n var mergedDisplayCount = React.useMemo(function () {\n if (displayCount === null && fullySSR) {\n return Number.MAX_SAFE_INTEGER;\n }\n return displayCount || 0;\n }, [displayCount, containerWidth]);\n var _useState5 = useState(false),\n _useState6 = _slicedToArray(_useState5, 2),\n restReady = _useState6[0],\n setRestReady = _useState6[1];\n var itemPrefixCls = \"\".concat(prefixCls, \"-item\");\n // Always use the max width to avoid blink\n var mergedRestWidth = Math.max(prevRestWidth, restWidth);\n // ================================= Data =================================\n var isResponsive = maxCount === RESPONSIVE;\n var shouldResponsive = data.length && isResponsive;\n var invalidate = maxCount === INVALIDATE;\n /**\n * When is `responsive`, we will always render rest node to get the real width of it for calculation\n */\n var showRest = shouldResponsive || typeof maxCount === 'number' && data.length > maxCount;\n var mergedData = useMemo(function () {\n var items = data;\n if (shouldResponsive) {\n if (containerWidth === null && fullySSR) {\n items = data;\n } else {\n items = data.slice(0, Math.min(data.length, mergedContainerWidth / itemWidth));\n }\n } else if (typeof maxCount === 'number') {\n items = data.slice(0, maxCount);\n }\n return items;\n }, [data, itemWidth, containerWidth, maxCount, shouldResponsive]);\n var omittedItems = useMemo(function () {\n if (shouldResponsive) {\n return data.slice(mergedDisplayCount + 1);\n }\n return data.slice(mergedData.length);\n }, [data, mergedData, shouldResponsive, mergedDisplayCount]);\n // ================================= Item =================================\n var getKey = useCallback(function (item, index) {\n var _ref;\n if (typeof itemKey === 'function') {\n return itemKey(item);\n }\n return (_ref = itemKey && (item === null || item === void 0 ? void 0 : item[itemKey])) !== null && _ref !== void 0 ? _ref : index;\n }, [itemKey]);\n var mergedRenderItem = useCallback(renderItem || function (item) {\n return item;\n }, [renderItem]);\n function updateDisplayCount(count, suffixFixedStartVal, notReady) {\n // React 18 will sync render even when the value is same in some case.\n // We take `mergedData` as deps which may cause dead loop if it's dynamic generate.\n // ref: https://github.com/ant-design/ant-design/issues/36559\n if (displayCount === count && (suffixFixedStartVal === undefined || suffixFixedStartVal === suffixFixedStart)) {\n return;\n }\n setDisplayCount(count);\n if (!notReady) {\n setRestReady(count < data.length - 1);\n onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(count);\n }\n if (suffixFixedStartVal !== undefined) {\n setSuffixFixedStart(suffixFixedStartVal);\n }\n }\n // ================================= Size =================================\n function onOverflowResize(_, element) {\n setContainerWidth(element.clientWidth);\n }\n function registerSize(key, width) {\n setItemWidths(function (origin) {\n var clone = new Map(origin);\n if (width === null) {\n clone.delete(key);\n } else {\n clone.set(key, width);\n }\n return clone;\n });\n }\n function registerOverflowSize(_, width) {\n setRestWidth(width);\n setPrevRestWidth(restWidth);\n }\n function registerSuffixSize(_, width) {\n setSuffixWidth(width);\n }\n // ================================ Effect ================================\n function getItemWidth(index) {\n return itemWidths.get(getKey(mergedData[index], index));\n }\n useLayoutEffect(function () {\n if (mergedContainerWidth && typeof mergedRestWidth === 'number' && mergedData) {\n var totalWidth = suffixWidth;\n var len = mergedData.length;\n var lastIndex = len - 1;\n // When data count change to 0, reset this since not loop will reach\n if (!len) {\n updateDisplayCount(0, null);\n return;\n }\n for (var i = 0; i < len; i += 1) {\n var currentItemWidth = getItemWidth(i);\n // Fully will always render\n if (fullySSR) {\n currentItemWidth = currentItemWidth || 0;\n }\n // Break since data not ready\n if (currentItemWidth === undefined) {\n updateDisplayCount(i - 1, undefined, true);\n break;\n }\n // Find best match\n totalWidth += currentItemWidth;\n if (\n // Only one means `totalWidth` is the final width\n lastIndex === 0 && totalWidth <= mergedContainerWidth ||\n // Last two width will be the final width\n i === lastIndex - 1 && totalWidth + getItemWidth(lastIndex) <= mergedContainerWidth) {\n // Additional check if match the end\n updateDisplayCount(lastIndex, null);\n break;\n } else if (totalWidth + mergedRestWidth > mergedContainerWidth) {\n // Can not hold all the content to show rest\n updateDisplayCount(i - 1, totalWidth - currentItemWidth - suffixWidth + restWidth);\n break;\n }\n }\n if (suffix && getItemWidth(0) + suffixWidth > mergedContainerWidth) {\n setSuffixFixedStart(null);\n }\n }\n }, [mergedContainerWidth, itemWidths, restWidth, suffixWidth, getKey, mergedData]);\n // ================================ Render ================================\n var displayRest = restReady && !!omittedItems.length;\n var suffixStyle = {};\n if (suffixFixedStart !== null && shouldResponsive) {\n suffixStyle = {\n position: 'absolute',\n left: suffixFixedStart,\n top: 0\n };\n }\n var itemSharedProps = {\n prefixCls: itemPrefixCls,\n responsive: shouldResponsive,\n component: itemComponent,\n invalidate: invalidate\n };\n // >>>>> Choice render fun by `renderRawItem`\n var internalRenderItemNode = renderRawItem ? function (item, index) {\n var key = getKey(item, index);\n return /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n key: key,\n value: _objectSpread(_objectSpread({}, itemSharedProps), {}, {\n order: index,\n item: item,\n itemKey: key,\n registerSize: registerSize,\n display: index <= mergedDisplayCount\n })\n }, renderRawItem(item, index));\n } : function (item, index) {\n var key = getKey(item, index);\n return /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, {\n order: index,\n key: key,\n item: item,\n renderItem: mergedRenderItem,\n itemKey: key,\n registerSize: registerSize,\n display: index <= mergedDisplayCount\n }));\n };\n // >>>>> Rest node\n var restNode;\n var restContextProps = {\n order: displayRest ? mergedDisplayCount : Number.MAX_SAFE_INTEGER,\n className: \"\".concat(itemPrefixCls, \"-rest\"),\n registerSize: registerOverflowSize,\n display: displayRest\n };\n if (!renderRawRest) {\n var mergedRenderRest = renderRest || defaultRenderRest;\n restNode = /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, restContextProps), typeof mergedRenderRest === 'function' ? mergedRenderRest(omittedItems) : mergedRenderRest);\n } else if (renderRawRest) {\n restNode = /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n value: _objectSpread(_objectSpread({}, itemSharedProps), restContextProps)\n }, renderRawRest(omittedItems));\n }\n var overflowNode = /*#__PURE__*/React.createElement(Component, _extends({\n className: classNames(!invalidate && prefixCls, className),\n style: style,\n ref: ref\n }, restProps), mergedData.map(internalRenderItemNode), showRest ? restNode : null, suffix && /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, {\n responsive: isResponsive,\n responsiveDisabled: !shouldResponsive,\n order: mergedDisplayCount,\n className: \"\".concat(itemPrefixCls, \"-suffix\"),\n registerSize: registerSuffixSize,\n display: true,\n style: suffixStyle\n }), suffix));\n if (isResponsive) {\n overflowNode = /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onOverflowResize,\n disabled: !shouldResponsive\n }, overflowNode);\n }\n return overflowNode;\n}\nvar ForwardOverflow = /*#__PURE__*/React.forwardRef(Overflow);\nForwardOverflow.displayName = 'Overflow';\nForwardOverflow.Item = RawItem;\nForwardOverflow.RESPONSIVE = RESPONSIVE;\nForwardOverflow.INVALIDATE = INVALIDATE;\n// Convert to generic type\nexport default ForwardOverflow;","import raf from \"rc-util/es/raf\";\nexport default function channelUpdate(callback) {\n if (typeof MessageChannel === 'undefined') {\n raf(callback);\n } else {\n var channel = new MessageChannel();\n channel.port1.onmessage = function () {\n return callback();\n };\n channel.port2.postMessage(undefined);\n }\n}","import Overflow from './Overflow';\nexport default Overflow;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\n/* eslint react/prop-types: 0 */\nimport React from 'react';\nimport classNames from 'classnames';\n\nvar Pager = function Pager(props) {\n var _classNames;\n\n var prefixCls = \"\".concat(props.rootPrefixCls, \"-item\");\n var cls = classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(props.page), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-active\"), props.active), _defineProperty(_classNames, props.className, !!props.className), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), !props.page), _classNames));\n\n var handleClick = function handleClick() {\n props.onClick(props.page);\n };\n\n var handleKeyPress = function handleKeyPress(e) {\n props.onKeyPress(e, props.onClick, props.page);\n };\n\n return /*#__PURE__*/React.createElement(\"li\", {\n title: props.showTitle ? props.page : null,\n className: cls,\n onClick: handleClick,\n onKeyPress: handleKeyPress,\n tabIndex: \"0\"\n }, props.itemRender(props.page, 'page', /*#__PURE__*/React.createElement(\"a\", {\n rel: \"nofollow\"\n }, props.page)));\n};\n\nexport default Pager;","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n\n/* eslint react/prop-types: 0 */\nimport React from 'react';\nimport KEYCODE from './KeyCode';\n\nvar Options = /*#__PURE__*/function (_React$Component) {\n _inherits(Options, _React$Component);\n\n var _super = _createSuper(Options);\n\n function Options() {\n var _this;\n\n _classCallCheck(this, Options);\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 = _super.call.apply(_super, [this].concat(args));\n _this.state = {\n goInputText: ''\n };\n\n _this.buildOptionText = function (value) {\n return \"\".concat(value, \" \").concat(_this.props.locale.items_per_page);\n };\n\n _this.changeSize = function (value) {\n _this.props.changeSize(Number(value));\n };\n\n _this.handleChange = function (e) {\n _this.setState({\n goInputText: e.target.value\n });\n };\n\n _this.handleBlur = function (e) {\n var _this$props = _this.props,\n goButton = _this$props.goButton,\n quickGo = _this$props.quickGo,\n rootPrefixCls = _this$props.rootPrefixCls;\n var goInputText = _this.state.goInputText;\n\n if (goButton || goInputText === '') {\n return;\n }\n\n if (e.relatedTarget && (e.relatedTarget.className.indexOf(\"\".concat(rootPrefixCls, \"-prev\")) >= 0 || e.relatedTarget.className.indexOf(\"\".concat(rootPrefixCls, \"-next\")) >= 0)) {\n return;\n }\n\n _this.setState({\n goInputText: ''\n });\n\n quickGo(_this.getValidValue());\n };\n\n _this.go = function (e) {\n var goInputText = _this.state.goInputText;\n\n if (goInputText === '') {\n return;\n }\n\n if (e.keyCode === KEYCODE.ENTER || e.type === 'click') {\n _this.setState({\n goInputText: ''\n });\n\n _this.props.quickGo(_this.getValidValue());\n }\n };\n\n return _this;\n }\n\n _createClass(Options, [{\n key: \"getValidValue\",\n value: function getValidValue() {\n var _this$state = this.state,\n goInputText = _this$state.goInputText,\n current = _this$state.current; // eslint-disable-next-line no-restricted-globals\n\n return !goInputText || isNaN(goInputText) ? current : Number(goInputText);\n }\n }, {\n key: \"getPageSizeOptions\",\n value: function getPageSizeOptions() {\n var _this$props2 = this.props,\n pageSize = _this$props2.pageSize,\n pageSizeOptions = _this$props2.pageSizeOptions;\n\n if (pageSizeOptions.some(function (option) {\n return option.toString() === pageSize.toString();\n })) {\n return pageSizeOptions;\n }\n\n return pageSizeOptions.concat([pageSize.toString()]).sort(function (a, b) {\n // eslint-disable-next-line no-restricted-globals\n var numberA = isNaN(Number(a)) ? 0 : Number(a); // eslint-disable-next-line no-restricted-globals\n\n var numberB = isNaN(Number(b)) ? 0 : Number(b);\n return numberA - numberB;\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props3 = this.props,\n pageSize = _this$props3.pageSize,\n locale = _this$props3.locale,\n rootPrefixCls = _this$props3.rootPrefixCls,\n changeSize = _this$props3.changeSize,\n quickGo = _this$props3.quickGo,\n goButton = _this$props3.goButton,\n selectComponentClass = _this$props3.selectComponentClass,\n buildOptionText = _this$props3.buildOptionText,\n selectPrefixCls = _this$props3.selectPrefixCls,\n disabled = _this$props3.disabled;\n var goInputText = this.state.goInputText;\n var prefixCls = \"\".concat(rootPrefixCls, \"-options\");\n var Select = selectComponentClass;\n var changeSelect = null;\n var goInput = null;\n var gotoButton = null;\n\n if (!changeSize && !quickGo) {\n return null;\n }\n\n var pageSizeOptions = this.getPageSizeOptions();\n\n if (changeSize && Select) {\n var options = pageSizeOptions.map(function (opt, i) {\n return /*#__PURE__*/React.createElement(Select.Option, {\n key: i,\n value: opt.toString()\n }, (buildOptionText || _this2.buildOptionText)(opt));\n });\n changeSelect = /*#__PURE__*/React.createElement(Select, {\n disabled: disabled,\n prefixCls: selectPrefixCls,\n showSearch: false,\n className: \"\".concat(prefixCls, \"-size-changer\"),\n optionLabelProp: \"children\",\n dropdownMatchSelectWidth: false,\n value: (pageSize || pageSizeOptions[0]).toString(),\n onChange: this.changeSize,\n getPopupContainer: function getPopupContainer(triggerNode) {\n return triggerNode.parentNode;\n }\n }, options);\n }\n\n if (quickGo) {\n if (goButton) {\n gotoButton = typeof goButton === 'boolean' ? /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: this.go,\n onKeyUp: this.go,\n disabled: disabled,\n className: \"\".concat(prefixCls, \"-quick-jumper-button\")\n }, locale.jump_to_confirm) : /*#__PURE__*/React.createElement(\"span\", {\n onClick: this.go,\n onKeyUp: this.go\n }, goButton);\n }\n\n goInput = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-quick-jumper\")\n }, locale.jump_to, /*#__PURE__*/React.createElement(\"input\", {\n disabled: disabled,\n type: \"text\",\n value: goInputText,\n onChange: this.handleChange,\n onKeyUp: this.go,\n onBlur: this.handleBlur\n }), locale.page, gotoButton);\n }\n\n return /*#__PURE__*/React.createElement(\"li\", {\n className: \"\".concat(prefixCls)\n }, changeSelect, goInput);\n }\n }]);\n\n return Options;\n}(React.Component);\n\nOptions.defaultProps = {\n pageSizeOptions: ['10', '20', '50', '100']\n};\nexport default Options;","export default {\n ZERO: 48,\n NINE: 57,\n NUMPAD_ZERO: 96,\n NUMPAD_NINE: 105,\n BACKSPACE: 8,\n DELETE: 46,\n ENTER: 13,\n ARROW_UP: 38,\n ARROW_DOWN: 40\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n\n/* eslint react/prop-types: 0 */\nimport React, { cloneElement, isValidElement } from 'react';\nimport classNames from 'classnames';\nimport Pager from './Pager';\nimport Options from './Options';\nimport KEYCODE from './KeyCode';\nimport LOCALE from './locale/zh_CN';\n\nfunction noop() {}\n\nfunction isInteger(value) {\n return (// eslint-disable-next-line no-restricted-globals\n typeof value === 'number' && isFinite(value) && Math.floor(value) === value\n );\n}\n\nfunction defaultItemRender(page, type, element) {\n return element;\n}\n\nfunction calculatePage(p, state, props) {\n var pageSize = typeof p === 'undefined' ? state.pageSize : p;\n return Math.floor((props.total - 1) / pageSize) + 1;\n}\n\nvar Pagination = /*#__PURE__*/function (_React$Component) {\n _inherits(Pagination, _React$Component);\n\n var _super = _createSuper(Pagination);\n\n function Pagination(props) {\n var _this;\n\n _classCallCheck(this, Pagination);\n\n _this = _super.call(this, props);\n\n _this.getJumpPrevPage = function () {\n return Math.max(1, _this.state.current - (_this.props.showLessItems ? 3 : 5));\n };\n\n _this.getJumpNextPage = function () {\n return Math.min(calculatePage(undefined, _this.state, _this.props), _this.state.current + (_this.props.showLessItems ? 3 : 5));\n };\n\n _this.getItemIcon = function (icon, label) {\n var prefixCls = _this.props.prefixCls;\n var iconNode = icon || /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n \"aria-label\": label,\n className: \"\".concat(prefixCls, \"-item-link\")\n });\n\n if (typeof icon === 'function') {\n iconNode = React.createElement(icon, _objectSpread({}, _this.props));\n }\n\n return iconNode;\n };\n\n _this.savePaginationNode = function (node) {\n _this.paginationNode = node;\n };\n\n _this.isValid = function (page) {\n return isInteger(page) && page !== _this.state.current;\n };\n\n _this.shouldDisplayQuickJumper = function () {\n var _this$props = _this.props,\n showQuickJumper = _this$props.showQuickJumper,\n pageSize = _this$props.pageSize,\n total = _this$props.total;\n\n if (total <= pageSize) {\n return false;\n }\n\n return showQuickJumper;\n };\n\n _this.handleKeyDown = function (e) {\n if (e.keyCode === KEYCODE.ARROW_UP || e.keyCode === KEYCODE.ARROW_DOWN) {\n e.preventDefault();\n }\n };\n\n _this.handleKeyUp = function (e) {\n var value = _this.getValidValue(e);\n\n var currentInputValue = _this.state.currentInputValue;\n\n if (value !== currentInputValue) {\n _this.setState({\n currentInputValue: value\n });\n }\n\n if (e.keyCode === KEYCODE.ENTER) {\n _this.handleChange(value);\n } else if (e.keyCode === KEYCODE.ARROW_UP) {\n _this.handleChange(value - 1);\n } else if (e.keyCode === KEYCODE.ARROW_DOWN) {\n _this.handleChange(value + 1);\n }\n };\n\n _this.changePageSize = function (size) {\n var current = _this.state.current;\n var newCurrent = calculatePage(size, _this.state, _this.props);\n current = current > newCurrent ? newCurrent : current; // fix the issue:\n // Once 'total' is 0, 'current' in 'onShowSizeChange' is 0, which is not correct.\n\n if (newCurrent === 0) {\n // eslint-disable-next-line prefer-destructuring\n current = _this.state.current;\n }\n\n if (typeof size === 'number') {\n if (!('pageSize' in _this.props)) {\n _this.setState({\n pageSize: size\n });\n }\n\n if (!('current' in _this.props)) {\n _this.setState({\n current: current,\n currentInputValue: current\n });\n }\n }\n\n _this.props.onShowSizeChange(current, size);\n\n if ('onChange' in _this.props && _this.props.onChange) {\n _this.props.onChange(current, size);\n }\n };\n\n _this.handleChange = function (p) {\n var disabled = _this.props.disabled;\n var page = p;\n\n if (_this.isValid(page) && !disabled) {\n var currentPage = calculatePage(undefined, _this.state, _this.props);\n\n if (page > currentPage) {\n page = currentPage;\n } else if (page < 1) {\n page = 1;\n }\n\n if (!('current' in _this.props)) {\n _this.setState({\n current: page,\n currentInputValue: page\n });\n }\n\n var pageSize = _this.state.pageSize;\n\n _this.props.onChange(page, pageSize);\n\n return page;\n }\n\n return _this.state.current;\n };\n\n _this.prev = function () {\n if (_this.hasPrev()) {\n _this.handleChange(_this.state.current - 1);\n }\n };\n\n _this.next = function () {\n if (_this.hasNext()) {\n _this.handleChange(_this.state.current + 1);\n }\n };\n\n _this.jumpPrev = function () {\n _this.handleChange(_this.getJumpPrevPage());\n };\n\n _this.jumpNext = function () {\n _this.handleChange(_this.getJumpNextPage());\n };\n\n _this.hasPrev = function () {\n return _this.state.current > 1;\n };\n\n _this.hasNext = function () {\n return _this.state.current < calculatePage(undefined, _this.state, _this.props);\n };\n\n _this.runIfEnter = function (event, callback) {\n if (event.key === 'Enter' || event.charCode === 13) {\n for (var _len = arguments.length, restParams = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n restParams[_key - 2] = arguments[_key];\n }\n\n callback.apply(void 0, restParams);\n }\n };\n\n _this.runIfEnterPrev = function (e) {\n _this.runIfEnter(e, _this.prev);\n };\n\n _this.runIfEnterNext = function (e) {\n _this.runIfEnter(e, _this.next);\n };\n\n _this.runIfEnterJumpPrev = function (e) {\n _this.runIfEnter(e, _this.jumpPrev);\n };\n\n _this.runIfEnterJumpNext = function (e) {\n _this.runIfEnter(e, _this.jumpNext);\n };\n\n _this.handleGoTO = function (e) {\n if (e.keyCode === KEYCODE.ENTER || e.type === 'click') {\n _this.handleChange(_this.state.currentInputValue);\n }\n };\n\n var hasOnChange = props.onChange !== noop;\n var hasCurrent = ('current' in props);\n\n if (hasCurrent && !hasOnChange) {\n // eslint-disable-next-line no-console\n console.warn('Warning: You provided a `current` prop to a Pagination component without an `onChange` handler. This will render a read-only component.');\n }\n\n var _current = props.defaultCurrent;\n\n if ('current' in props) {\n // eslint-disable-next-line prefer-destructuring\n _current = props.current;\n }\n\n var _pageSize = props.defaultPageSize;\n\n if ('pageSize' in props) {\n // eslint-disable-next-line prefer-destructuring\n _pageSize = props.pageSize;\n }\n\n _current = Math.min(_current, calculatePage(_pageSize, undefined, props));\n _this.state = {\n current: _current,\n currentInputValue: _current,\n pageSize: _pageSize\n };\n return _this;\n }\n\n _createClass(Pagination, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n // When current page change, fix focused style of prev item\n // A hacky solution of https://github.com/ant-design/ant-design/issues/8948\n var prefixCls = this.props.prefixCls;\n\n if (prevState.current !== this.state.current && this.paginationNode) {\n var lastCurrentNode = this.paginationNode.querySelector(\".\".concat(prefixCls, \"-item-\").concat(prevState.current));\n\n if (lastCurrentNode && document.activeElement === lastCurrentNode) {\n lastCurrentNode.blur();\n }\n }\n }\n }, {\n key: \"getValidValue\",\n value: function getValidValue(e) {\n var inputValue = e.target.value;\n var allPages = calculatePage(undefined, this.state, this.props);\n var currentInputValue = this.state.currentInputValue;\n var value;\n\n if (inputValue === '') {\n value = inputValue; // eslint-disable-next-line no-restricted-globals\n } else if (isNaN(Number(inputValue))) {\n value = currentInputValue;\n } else if (inputValue >= allPages) {\n value = allPages;\n } else {\n value = Number(inputValue);\n }\n\n return value;\n }\n }, {\n key: \"getShowSizeChanger\",\n value: function getShowSizeChanger() {\n var _this$props2 = this.props,\n showSizeChanger = _this$props2.showSizeChanger,\n total = _this$props2.total,\n totalBoundaryShowSizeChanger = _this$props2.totalBoundaryShowSizeChanger;\n\n if (typeof showSizeChanger !== 'undefined') {\n return showSizeChanger;\n }\n\n return total > totalBoundaryShowSizeChanger;\n }\n }, {\n key: \"renderPrev\",\n value: function renderPrev(prevPage) {\n var _this$props3 = this.props,\n prevIcon = _this$props3.prevIcon,\n itemRender = _this$props3.itemRender;\n var prevButton = itemRender(prevPage, 'prev', this.getItemIcon(prevIcon, 'prev page'));\n var disabled = !this.hasPrev();\n return isValidElement(prevButton) ? cloneElement(prevButton, {\n disabled: disabled\n }) : prevButton;\n }\n }, {\n key: \"renderNext\",\n value: function renderNext(nextPage) {\n var _this$props4 = this.props,\n nextIcon = _this$props4.nextIcon,\n itemRender = _this$props4.itemRender;\n var nextButton = itemRender(nextPage, 'next', this.getItemIcon(nextIcon, 'next page'));\n var disabled = !this.hasNext();\n return isValidElement(nextButton) ? cloneElement(nextButton, {\n disabled: disabled\n }) : nextButton;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props5 = this.props,\n prefixCls = _this$props5.prefixCls,\n className = _this$props5.className,\n style = _this$props5.style,\n disabled = _this$props5.disabled,\n hideOnSinglePage = _this$props5.hideOnSinglePage,\n total = _this$props5.total,\n locale = _this$props5.locale,\n showQuickJumper = _this$props5.showQuickJumper,\n showLessItems = _this$props5.showLessItems,\n showTitle = _this$props5.showTitle,\n showTotal = _this$props5.showTotal,\n simple = _this$props5.simple,\n itemRender = _this$props5.itemRender,\n showPrevNextJumpers = _this$props5.showPrevNextJumpers,\n jumpPrevIcon = _this$props5.jumpPrevIcon,\n jumpNextIcon = _this$props5.jumpNextIcon,\n selectComponentClass = _this$props5.selectComponentClass,\n selectPrefixCls = _this$props5.selectPrefixCls,\n pageSizeOptions = _this$props5.pageSizeOptions;\n var _this$state = this.state,\n current = _this$state.current,\n pageSize = _this$state.pageSize,\n currentInputValue = _this$state.currentInputValue; // When hideOnSinglePage is true and there is only 1 page, hide the pager\n\n if (hideOnSinglePage === true && total <= pageSize) {\n return null;\n }\n\n var allPages = calculatePage(undefined, this.state, this.props);\n var pagerList = [];\n var jumpPrev = null;\n var jumpNext = null;\n var firstPager = null;\n var lastPager = null;\n var gotoButton = null;\n var goButton = showQuickJumper && showQuickJumper.goButton;\n var pageBufferSize = showLessItems ? 1 : 2;\n var prevPage = current - 1 > 0 ? current - 1 : 0;\n var nextPage = current + 1 < allPages ? current + 1 : allPages;\n var dataOrAriaAttributeProps = Object.keys(this.props).reduce(function (prev, key) {\n if (key.substr(0, 5) === 'data-' || key.substr(0, 5) === 'aria-' || key === 'role') {\n // eslint-disable-next-line no-param-reassign\n prev[key] = _this2.props[key];\n }\n\n return prev;\n }, {});\n\n if (simple) {\n if (goButton) {\n if (typeof goButton === 'boolean') {\n gotoButton = /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: this.handleGoTO,\n onKeyUp: this.handleGoTO\n }, locale.jump_to_confirm);\n } else {\n gotoButton = /*#__PURE__*/React.createElement(\"span\", {\n onClick: this.handleGoTO,\n onKeyUp: this.handleGoTO\n }, goButton);\n }\n\n gotoButton = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? \"\".concat(locale.jump_to).concat(current, \"/\").concat(allPages) : null,\n className: \"\".concat(prefixCls, \"-simple-pager\")\n }, gotoButton);\n }\n\n return /*#__PURE__*/React.createElement(\"ul\", _extends({\n className: classNames(prefixCls, \"\".concat(prefixCls, \"-simple\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled), className),\n style: style,\n ref: this.savePaginationNode\n }, dataOrAriaAttributeProps), /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.prev_page : null,\n onClick: this.prev,\n tabIndex: this.hasPrev() ? 0 : null,\n onKeyPress: this.runIfEnterPrev,\n className: classNames(\"\".concat(prefixCls, \"-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), !this.hasPrev())),\n \"aria-disabled\": !this.hasPrev()\n }, this.renderPrev(prevPage)), /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? \"\".concat(current, \"/\").concat(allPages) : null,\n className: \"\".concat(prefixCls, \"-simple-pager\")\n }, /*#__PURE__*/React.createElement(\"input\", {\n type: \"text\",\n value: currentInputValue,\n disabled: disabled,\n onKeyDown: this.handleKeyDown,\n onKeyUp: this.handleKeyUp,\n onChange: this.handleKeyUp,\n size: \"3\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-slash\")\n }, \"/\"), allPages), /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.next_page : null,\n onClick: this.next,\n tabIndex: this.hasPrev() ? 0 : null,\n onKeyPress: this.runIfEnterNext,\n className: classNames(\"\".concat(prefixCls, \"-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), !this.hasNext())),\n \"aria-disabled\": !this.hasNext()\n }, this.renderNext(nextPage)), gotoButton);\n }\n\n if (allPages <= 3 + pageBufferSize * 2) {\n var pagerProps = {\n locale: locale,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n showTitle: showTitle,\n itemRender: itemRender\n };\n\n if (!allPages) {\n pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n key: \"noPager\",\n page: allPages,\n className: \"\".concat(prefixCls, \"-disabled\")\n })));\n }\n\n for (var i = 1; i <= allPages; i += 1) {\n var active = current === i;\n pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n key: i,\n page: i,\n active: active\n })));\n }\n } else {\n var prevItemTitle = showLessItems ? locale.prev_3 : locale.prev_5;\n var nextItemTitle = showLessItems ? locale.next_3 : locale.next_5;\n\n if (showPrevNextJumpers) {\n jumpPrev = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? prevItemTitle : null,\n key: \"prev\",\n onClick: this.jumpPrev,\n tabIndex: \"0\",\n onKeyPress: this.runIfEnterJumpPrev,\n className: classNames(\"\".concat(prefixCls, \"-jump-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-jump-prev-custom-icon\"), !!jumpPrevIcon))\n }, itemRender(this.getJumpPrevPage(), 'jump-prev', this.getItemIcon(jumpPrevIcon, 'prev page')));\n jumpNext = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? nextItemTitle : null,\n key: \"next\",\n tabIndex: \"0\",\n onClick: this.jumpNext,\n onKeyPress: this.runIfEnterJumpNext,\n className: classNames(\"\".concat(prefixCls, \"-jump-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-jump-next-custom-icon\"), !!jumpNextIcon))\n }, itemRender(this.getJumpNextPage(), 'jump-next', this.getItemIcon(jumpNextIcon, 'next page')));\n }\n\n lastPager = /*#__PURE__*/React.createElement(Pager, {\n locale: locale,\n last: true,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n key: allPages,\n page: allPages,\n active: false,\n showTitle: showTitle,\n itemRender: itemRender\n });\n firstPager = /*#__PURE__*/React.createElement(Pager, {\n locale: locale,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n key: 1,\n page: 1,\n active: false,\n showTitle: showTitle,\n itemRender: itemRender\n });\n var left = Math.max(1, current - pageBufferSize);\n var right = Math.min(current + pageBufferSize, allPages);\n\n if (current - 1 <= pageBufferSize) {\n right = 1 + pageBufferSize * 2;\n }\n\n if (allPages - current <= pageBufferSize) {\n left = allPages - pageBufferSize * 2;\n }\n\n for (var _i = left; _i <= right; _i += 1) {\n var _active = current === _i;\n\n pagerList.push( /*#__PURE__*/React.createElement(Pager, {\n locale: locale,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n key: _i,\n page: _i,\n active: _active,\n showTitle: showTitle,\n itemRender: itemRender\n }));\n }\n\n if (current - 1 >= pageBufferSize * 2 && current !== 1 + 2) {\n pagerList[0] = cloneElement(pagerList[0], {\n className: \"\".concat(prefixCls, \"-item-after-jump-prev\")\n });\n pagerList.unshift(jumpPrev);\n }\n\n if (allPages - current >= pageBufferSize * 2 && current !== allPages - 2) {\n pagerList[pagerList.length - 1] = cloneElement(pagerList[pagerList.length - 1], {\n className: \"\".concat(prefixCls, \"-item-before-jump-next\")\n });\n pagerList.push(jumpNext);\n }\n\n if (left !== 1) {\n pagerList.unshift(firstPager);\n }\n\n if (right !== allPages) {\n pagerList.push(lastPager);\n }\n }\n\n var totalText = null;\n\n if (showTotal) {\n totalText = /*#__PURE__*/React.createElement(\"li\", {\n className: \"\".concat(prefixCls, \"-total-text\")\n }, showTotal(total, [total === 0 ? 0 : (current - 1) * pageSize + 1, current * pageSize > total ? total : current * pageSize]));\n }\n\n var prevDisabled = !this.hasPrev() || !allPages;\n var nextDisabled = !this.hasNext() || !allPages;\n return /*#__PURE__*/React.createElement(\"ul\", _extends({\n className: classNames(prefixCls, className, _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled)),\n style: style,\n unselectable: \"unselectable\",\n ref: this.savePaginationNode\n }, dataOrAriaAttributeProps), totalText, /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.prev_page : null,\n onClick: this.prev,\n tabIndex: prevDisabled ? null : 0,\n onKeyPress: this.runIfEnterPrev,\n className: classNames(\"\".concat(prefixCls, \"-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), prevDisabled)),\n \"aria-disabled\": prevDisabled\n }, this.renderPrev(prevPage)), pagerList, /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.next_page : null,\n onClick: this.next,\n tabIndex: nextDisabled ? null : 0,\n onKeyPress: this.runIfEnterNext,\n className: classNames(\"\".concat(prefixCls, \"-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), nextDisabled)),\n \"aria-disabled\": nextDisabled\n }, this.renderNext(nextPage)), /*#__PURE__*/React.createElement(Options, {\n disabled: disabled,\n locale: locale,\n rootPrefixCls: prefixCls,\n selectComponentClass: selectComponentClass,\n selectPrefixCls: selectPrefixCls,\n changeSize: this.getShowSizeChanger() ? this.changePageSize : null,\n current: current,\n pageSize: pageSize,\n pageSizeOptions: pageSizeOptions,\n quickGo: this.shouldDisplayQuickJumper() ? this.handleChange : null,\n goButton: goButton\n }));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, prevState) {\n var newState = {};\n\n if ('current' in props) {\n newState.current = props.current;\n\n if (props.current !== prevState.current) {\n newState.currentInputValue = newState.current;\n }\n }\n\n if ('pageSize' in props && props.pageSize !== prevState.pageSize) {\n var current = prevState.current;\n var newCurrent = calculatePage(props.pageSize, prevState, props);\n current = current > newCurrent ? newCurrent : current;\n\n if (!('current' in props)) {\n newState.current = current;\n newState.currentInputValue = current;\n }\n\n newState.pageSize = props.pageSize;\n }\n\n return newState;\n }\n }]);\n\n return Pagination;\n}(React.Component);\n\nPagination.defaultProps = {\n defaultCurrent: 1,\n total: 0,\n defaultPageSize: 10,\n onChange: noop,\n className: '',\n selectPrefixCls: 'rc-select',\n prefixCls: 'rc-pagination',\n selectComponentClass: null,\n hideOnSinglePage: false,\n showPrevNextJumpers: true,\n showQuickJumper: false,\n showLessItems: false,\n showTitle: true,\n onShowSizeChange: noop,\n locale: LOCALE,\n style: {},\n itemRender: defaultItemRender,\n totalBoundaryShowSizeChanger: 50\n};\nexport default Pagination;","export default {\n // Options.jsx\n items_per_page: '条/页',\n jump_to: '跳至',\n jump_to_confirm: '确定',\n page: '页',\n // Pagination.jsx\n prev_page: '上一页',\n next_page: '下一页',\n prev_5: '向前 5 页',\n next_5: '向后 5 页',\n prev_3: '向前 3 页',\n next_3: '向后 3 页'\n};","export default {\n // Options.jsx\n items_per_page: '/ page',\n jump_to: 'Go to',\n jump_to_confirm: 'confirm',\n page: '',\n // Pagination.jsx\n prev_page: 'Previous Page',\n next_page: 'Next Page',\n prev_5: 'Previous 5 Pages',\n next_5: 'Next 5 Pages',\n prev_3: 'Previous 3 Pages',\n next_3: 'Next 3 Pages'\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n // Options.jsx\n items_per_page: '/ page',\n jump_to: 'Go to',\n jump_to_confirm: 'confirm',\n page: '',\n // Pagination.jsx\n prev_page: 'Previous Page',\n next_page: 'Next Page',\n prev_5: 'Previous 5 Pages',\n next_5: 'Next 5 Pages',\n prev_3: 'Previous 3 Pages',\n next_3: 'Next 3 Pages'\n};\nexports.default = _default;","import { useRef, useEffect } from 'react';\nexport var defaultProps = {\n className: '',\n percent: 0,\n prefixCls: 'rc-progress',\n strokeColor: '#2db7f5',\n strokeLinecap: 'round',\n strokeWidth: 1,\n style: {},\n trailColor: '#D9D9D9',\n trailWidth: 1\n};\nexport var useTransitionDuration = function useTransitionDuration(percentList) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n var paths = percentList.map(function () {\n return useRef();\n });\n var prevTimeStamp = useRef(null);\n useEffect(function () {\n var now = Date.now();\n var updated = false;\n Object.keys(paths).forEach(function (key) {\n var path = paths[key].current;\n\n if (!path) {\n return;\n }\n\n updated = true;\n var pathStyle = path.style;\n pathStyle.transitionDuration = '.3s, .3s, .3s, .06s';\n\n if (prevTimeStamp.current && now - prevTimeStamp.current < 100) {\n pathStyle.transitionDuration = '0s, 0s';\n }\n });\n\n if (updated) {\n prevTimeStamp.current = Date.now();\n }\n });\n return [paths];\n};","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useTransitionDuration, defaultProps } from './common';\n\nvar Line = function Line(_ref) {\n var className = _ref.className,\n percent = _ref.percent,\n prefixCls = _ref.prefixCls,\n strokeColor = _ref.strokeColor,\n strokeLinecap = _ref.strokeLinecap,\n strokeWidth = _ref.strokeWidth,\n style = _ref.style,\n trailColor = _ref.trailColor,\n trailWidth = _ref.trailWidth,\n transition = _ref.transition,\n restProps = _objectWithoutProperties(_ref, [\"className\", \"percent\", \"prefixCls\", \"strokeColor\", \"strokeLinecap\", \"strokeWidth\", \"style\", \"trailColor\", \"trailWidth\", \"transition\"]);\n\n // eslint-disable-next-line no-param-reassign\n delete restProps.gapPosition;\n var percentList = Array.isArray(percent) ? percent : [percent];\n var strokeColorList = Array.isArray(strokeColor) ? strokeColor : [strokeColor];\n\n var _useTransitionDuratio = useTransitionDuration(percentList),\n _useTransitionDuratio2 = _slicedToArray(_useTransitionDuratio, 1),\n paths = _useTransitionDuratio2[0];\n\n var center = strokeWidth / 2;\n var right = 100 - strokeWidth / 2;\n var pathString = \"M \".concat(strokeLinecap === 'round' ? center : 0, \",\").concat(center, \"\\n L \").concat(strokeLinecap === 'round' ? right : 100, \",\").concat(center);\n var viewBoxString = \"0 0 100 \".concat(strokeWidth);\n var stackPtg = 0;\n return React.createElement(\"svg\", Object.assign({\n className: classNames(\"\".concat(prefixCls, \"-line\"), className),\n viewBox: viewBoxString,\n preserveAspectRatio: \"none\",\n style: style\n }, restProps), React.createElement(\"path\", {\n className: \"\".concat(prefixCls, \"-line-trail\"),\n d: pathString,\n strokeLinecap: strokeLinecap,\n stroke: trailColor,\n strokeWidth: trailWidth || strokeWidth,\n fillOpacity: \"0\"\n }), percentList.map(function (ptg, index) {\n var pathStyle = {\n strokeDasharray: \"\".concat(ptg, \"px, 100px\"),\n strokeDashoffset: \"-\".concat(stackPtg, \"px\"),\n transition: transition || 'stroke-dashoffset 0.3s ease 0s, stroke-dasharray .3s ease 0s, stroke 0.3s linear'\n };\n var color = strokeColorList[index] || strokeColorList[strokeColorList.length - 1];\n stackPtg += ptg;\n return React.createElement(\"path\", {\n key: index,\n className: \"\".concat(prefixCls, \"-line-path\"),\n d: pathString,\n strokeLinecap: strokeLinecap,\n stroke: color,\n strokeWidth: strokeWidth,\n fillOpacity: \"0\",\n ref: paths[index],\n style: pathStyle\n });\n }));\n};\n\nLine.defaultProps = defaultProps;\nLine.displayName = 'Line';\nexport default Line;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useTransitionDuration, defaultProps } from './common';\nvar gradientSeed = 0;\n\nfunction stripPercentToNumber(percent) {\n return +percent.replace('%', '');\n}\n\nfunction toArray(symArray) {\n return Array.isArray(symArray) ? symArray : [symArray];\n}\n\nfunction getPathStyles(offset, percent, strokeColor, strokeWidth) {\n var gapDegree = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n var gapPosition = arguments.length > 5 ? arguments[5] : undefined;\n var radius = 50 - strokeWidth / 2;\n var beginPositionX = 0;\n var beginPositionY = -radius;\n var endPositionX = 0;\n var endPositionY = -2 * radius;\n\n switch (gapPosition) {\n case 'left':\n beginPositionX = -radius;\n beginPositionY = 0;\n endPositionX = 2 * radius;\n endPositionY = 0;\n break;\n\n case 'right':\n beginPositionX = radius;\n beginPositionY = 0;\n endPositionX = -2 * radius;\n endPositionY = 0;\n break;\n\n case 'bottom':\n beginPositionY = radius;\n endPositionY = 2 * radius;\n break;\n\n default:\n }\n\n var pathString = \"M 50,50 m \".concat(beginPositionX, \",\").concat(beginPositionY, \"\\n a \").concat(radius, \",\").concat(radius, \" 0 1 1 \").concat(endPositionX, \",\").concat(-endPositionY, \"\\n a \").concat(radius, \",\").concat(radius, \" 0 1 1 \").concat(-endPositionX, \",\").concat(endPositionY);\n var len = Math.PI * 2 * radius;\n var pathStyle = {\n stroke: strokeColor,\n strokeDasharray: \"\".concat(percent / 100 * (len - gapDegree), \"px \").concat(len, \"px\"),\n strokeDashoffset: \"-\".concat(gapDegree / 2 + offset / 100 * (len - gapDegree), \"px\"),\n transition: 'stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s'\n };\n return {\n pathString: pathString,\n pathStyle: pathStyle\n };\n}\n\nvar Circle = function Circle(_ref) {\n var prefixCls = _ref.prefixCls,\n strokeWidth = _ref.strokeWidth,\n trailWidth = _ref.trailWidth,\n gapDegree = _ref.gapDegree,\n gapPosition = _ref.gapPosition,\n trailColor = _ref.trailColor,\n strokeLinecap = _ref.strokeLinecap,\n style = _ref.style,\n className = _ref.className,\n strokeColor = _ref.strokeColor,\n percent = _ref.percent,\n restProps = _objectWithoutProperties(_ref, [\"prefixCls\", \"strokeWidth\", \"trailWidth\", \"gapDegree\", \"gapPosition\", \"trailColor\", \"strokeLinecap\", \"style\", \"className\", \"strokeColor\", \"percent\"]);\n\n var gradientId = React.useMemo(function () {\n gradientSeed += 1;\n return gradientSeed;\n }, []);\n\n var _getPathStyles = getPathStyles(0, 100, trailColor, strokeWidth, gapDegree, gapPosition),\n pathString = _getPathStyles.pathString,\n pathStyle = _getPathStyles.pathStyle;\n\n var percentList = toArray(percent);\n var strokeColorList = toArray(strokeColor);\n var gradient = strokeColorList.find(function (color) {\n return Object.prototype.toString.call(color) === '[object Object]';\n });\n\n var _useTransitionDuratio = useTransitionDuration(percentList),\n _useTransitionDuratio2 = _slicedToArray(_useTransitionDuratio, 1),\n paths = _useTransitionDuratio2[0];\n\n var getStokeList = function getStokeList() {\n var stackPtg = 0;\n return percentList.map(function (ptg, index) {\n var color = strokeColorList[index] || strokeColorList[strokeColorList.length - 1];\n var stroke = Object.prototype.toString.call(color) === '[object Object]' ? \"url(#\".concat(prefixCls, \"-gradient-\").concat(gradientId, \")\") : '';\n var pathStyles = getPathStyles(stackPtg, ptg, color, strokeWidth, gapDegree, gapPosition);\n stackPtg += ptg;\n return React.createElement(\"path\", {\n key: index,\n className: \"\".concat(prefixCls, \"-circle-path\"),\n d: pathStyles.pathString,\n stroke: stroke,\n strokeLinecap: strokeLinecap,\n strokeWidth: strokeWidth,\n opacity: ptg === 0 ? 0 : 1,\n fillOpacity: \"0\",\n style: pathStyles.pathStyle,\n ref: paths[index]\n });\n });\n };\n\n return React.createElement(\"svg\", Object.assign({\n className: classNames(\"\".concat(prefixCls, \"-circle\"), className),\n viewBox: \"0 0 100 100\",\n style: style\n }, restProps), gradient && React.createElement(\"defs\", null, React.createElement(\"linearGradient\", {\n id: \"\".concat(prefixCls, \"-gradient-\").concat(gradientId),\n x1: \"100%\",\n y1: \"0%\",\n x2: \"0%\",\n y2: \"0%\"\n }, Object.keys(gradient).sort(function (a, b) {\n return stripPercentToNumber(a) - stripPercentToNumber(b);\n }).map(function (key, index) {\n return React.createElement(\"stop\", {\n key: index,\n offset: key,\n stopColor: gradient[key]\n });\n }))), React.createElement(\"path\", {\n className: \"\".concat(prefixCls, \"-circle-trail\"),\n d: pathString,\n stroke: trailColor,\n strokeLinecap: strokeLinecap,\n strokeWidth: trailWidth || strokeWidth,\n fillOpacity: \"0\",\n style: pathStyle\n }), getStokeList().reverse());\n};\n\nCircle.defaultProps = defaultProps;\nCircle.displayName = 'Circle';\nexport default Circle;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport toArray from \"rc-util/es/Children/toArray\";\nimport warning from \"rc-util/es/warning\";\nimport { composeRef, supportRef } from \"rc-util/es/ref\";\nimport ResizeObserver from 'resize-observer-polyfill';\nvar INTERNAL_PREFIX_KEY = 'rc-observer-key'; // Still need to be compatible with React 15, we use class component here\n\nvar ReactResizeObserver = /*#__PURE__*/function (_React$Component) {\n _inherits(ReactResizeObserver, _React$Component);\n\n var _super = _createSuper(ReactResizeObserver);\n\n function ReactResizeObserver() {\n var _this;\n\n _classCallCheck(this, ReactResizeObserver);\n\n _this = _super.apply(this, arguments);\n _this.resizeObserver = null;\n _this.childNode = null;\n _this.currentElement = null;\n _this.state = {\n width: 0,\n height: 0,\n offsetHeight: 0,\n offsetWidth: 0\n };\n\n _this.onResize = function (entries) {\n var onResize = _this.props.onResize;\n var target = entries[0].target;\n\n var _target$getBoundingCl = target.getBoundingClientRect(),\n width = _target$getBoundingCl.width,\n height = _target$getBoundingCl.height;\n\n var offsetWidth = target.offsetWidth,\n offsetHeight = target.offsetHeight;\n /**\n * Resize observer trigger when content size changed.\n * In most case we just care about element size,\n * let's use `boundary` instead of `contentRect` here to avoid shaking.\n */\n\n var fixedWidth = Math.floor(width);\n var fixedHeight = Math.floor(height);\n\n if (_this.state.width !== fixedWidth || _this.state.height !== fixedHeight || _this.state.offsetWidth !== offsetWidth || _this.state.offsetHeight !== offsetHeight) {\n var size = {\n width: fixedWidth,\n height: fixedHeight,\n offsetWidth: offsetWidth,\n offsetHeight: offsetHeight\n };\n\n _this.setState(size);\n\n if (onResize) {\n // defer the callback but not defer to next frame\n Promise.resolve().then(function () {\n onResize(_objectSpread(_objectSpread({}, size), {}, {\n offsetWidth: offsetWidth,\n offsetHeight: offsetHeight\n }));\n });\n }\n }\n };\n\n _this.setChildNode = function (node) {\n _this.childNode = node;\n };\n\n return _this;\n }\n\n _createClass(ReactResizeObserver, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.onComponentUpdated();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.onComponentUpdated();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.destroyObserver();\n }\n }, {\n key: \"onComponentUpdated\",\n value: function onComponentUpdated() {\n var disabled = this.props.disabled; // Unregister if disabled\n\n if (disabled) {\n this.destroyObserver();\n return;\n } // Unregister if element changed\n\n\n var element = findDOMNode(this.childNode || this);\n var elementChanged = element !== this.currentElement;\n\n if (elementChanged) {\n this.destroyObserver();\n this.currentElement = element;\n }\n\n if (!this.resizeObserver && element) {\n this.resizeObserver = new ResizeObserver(this.onResize);\n this.resizeObserver.observe(element);\n }\n }\n }, {\n key: \"destroyObserver\",\n value: function destroyObserver() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n var childNodes = toArray(children);\n\n if (childNodes.length > 1) {\n warning(false, 'Find more than one child node with `children` in ResizeObserver. Will only observe first one.');\n } else if (childNodes.length === 0) {\n warning(false, '`children` of ResizeObserver is empty. Nothing is in observe.');\n return null;\n }\n\n var childNode = childNodes[0];\n\n if (React.isValidElement(childNode) && supportRef(childNode)) {\n var ref = childNode.ref;\n childNodes[0] = React.cloneElement(childNode, {\n ref: composeRef(ref, this.setChildNode)\n });\n }\n\n return childNodes.length === 1 ? childNodes[0] : childNodes.map(function (node, index) {\n if (!React.isValidElement(node) || 'key' in node && node.key !== null) {\n return node;\n }\n\n return React.cloneElement(node, {\n key: \"\".concat(INTERNAL_PREFIX_KEY, \"-\").concat(index)\n });\n });\n }\n }]);\n\n return ReactResizeObserver;\n}(React.Component);\n\nReactResizeObserver.displayName = 'ResizeObserver';\nexport default ReactResizeObserver;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n\n/* eslint react/prop-types: 0 */\nimport React from 'react';\nimport classNames from 'classnames';\n\nfunction isString(str) {\n return typeof str === 'string';\n}\n\nvar Step = /*#__PURE__*/function (_React$Component) {\n _inherits(Step, _React$Component);\n\n var _super = _createSuper(Step);\n\n function Step() {\n var _this;\n\n _classCallCheck(this, Step);\n\n _this = _super.apply(this, arguments);\n\n _this.onClick = function () {\n var _this$props = _this.props,\n onClick = _this$props.onClick,\n onStepClick = _this$props.onStepClick,\n stepIndex = _this$props.stepIndex;\n\n if (onClick) {\n onClick.apply(void 0, arguments);\n }\n\n onStepClick(stepIndex);\n };\n\n return _this;\n }\n\n _createClass(Step, [{\n key: \"renderIconNode\",\n value: function renderIconNode() {\n var _classNames;\n\n var _this$props2 = this.props,\n prefixCls = _this$props2.prefixCls,\n progressDot = _this$props2.progressDot,\n stepIcon = _this$props2.stepIcon,\n stepNumber = _this$props2.stepNumber,\n status = _this$props2.status,\n title = _this$props2.title,\n description = _this$props2.description,\n icon = _this$props2.icon,\n iconPrefix = _this$props2.iconPrefix,\n icons = _this$props2.icons;\n var iconNode;\n var iconClassName = classNames(\"\".concat(prefixCls, \"-icon\"), \"\".concat(iconPrefix, \"icon\"), (_classNames = {}, _defineProperty(_classNames, \"\".concat(iconPrefix, \"icon-\").concat(icon), icon && isString(icon)), _defineProperty(_classNames, \"\".concat(iconPrefix, \"icon-check\"), !icon && status === 'finish' && (icons && !icons.finish || !icons)), _defineProperty(_classNames, \"\".concat(iconPrefix, \"icon-cross\"), !icon && status === 'error' && (icons && !icons.error || !icons)), _classNames));\n var iconDot = React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-icon-dot\")\n }); // `progressDot` enjoy the highest priority\n\n if (progressDot) {\n if (typeof progressDot === 'function') {\n iconNode = React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-icon\")\n }, progressDot(iconDot, {\n index: stepNumber - 1,\n status: status,\n title: title,\n description: description\n }));\n } else {\n iconNode = React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-icon\")\n }, iconDot);\n }\n } else if (icon && !isString(icon)) {\n iconNode = React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-icon\")\n }, icon);\n } else if (icons && icons.finish && status === 'finish') {\n iconNode = React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-icon\")\n }, icons.finish);\n } else if (icons && icons.error && status === 'error') {\n iconNode = React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-icon\")\n }, icons.error);\n } else if (icon || status === 'finish' || status === 'error') {\n iconNode = React.createElement(\"span\", {\n className: iconClassName\n });\n } else {\n iconNode = React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-icon\")\n }, stepNumber);\n }\n\n if (stepIcon) {\n iconNode = stepIcon({\n index: stepNumber - 1,\n status: status,\n title: title,\n description: description,\n node: iconNode\n });\n }\n\n return iconNode;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classNames2;\n\n var _this$props3 = this.props,\n className = _this$props3.className,\n prefixCls = _this$props3.prefixCls,\n style = _this$props3.style,\n active = _this$props3.active,\n _this$props3$status = _this$props3.status,\n status = _this$props3$status === void 0 ? 'wait' : _this$props3$status,\n iconPrefix = _this$props3.iconPrefix,\n icon = _this$props3.icon,\n wrapperStyle = _this$props3.wrapperStyle,\n stepNumber = _this$props3.stepNumber,\n disabled = _this$props3.disabled,\n description = _this$props3.description,\n title = _this$props3.title,\n subTitle = _this$props3.subTitle,\n progressDot = _this$props3.progressDot,\n stepIcon = _this$props3.stepIcon,\n tailContent = _this$props3.tailContent,\n icons = _this$props3.icons,\n stepIndex = _this$props3.stepIndex,\n onStepClick = _this$props3.onStepClick,\n onClick = _this$props3.onClick,\n restProps = _objectWithoutProperties(_this$props3, [\"className\", \"prefixCls\", \"style\", \"active\", \"status\", \"iconPrefix\", \"icon\", \"wrapperStyle\", \"stepNumber\", \"disabled\", \"description\", \"title\", \"subTitle\", \"progressDot\", \"stepIcon\", \"tailContent\", \"icons\", \"stepIndex\", \"onStepClick\", \"onClick\"]);\n\n var classString = classNames(\"\".concat(prefixCls, \"-item\"), \"\".concat(prefixCls, \"-item-\").concat(status), className, (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-item-custom\"), icon), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-item-active\"), active), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-item-disabled\"), disabled === true), _classNames2));\n\n var stepItemStyle = _objectSpread({}, style);\n\n var accessibilityProps = {};\n\n if (onStepClick && !disabled) {\n accessibilityProps.role = 'button';\n accessibilityProps.tabIndex = 0;\n accessibilityProps.onClick = this.onClick;\n }\n\n return React.createElement(\"div\", Object.assign({}, restProps, {\n className: classString,\n style: stepItemStyle\n }), React.createElement(\"div\", Object.assign({\n onClick: onClick\n }, accessibilityProps, {\n className: \"\".concat(prefixCls, \"-item-container\")\n }), React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-tail\")\n }, tailContent), React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-icon\")\n }, this.renderIconNode()), React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-content\")\n }, React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-title\")\n }, title, subTitle && React.createElement(\"div\", {\n title: typeof subTitle === 'string' ? subTitle : undefined,\n className: \"\".concat(prefixCls, \"-item-subtitle\")\n }, subTitle)), description && React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-description\")\n }, description))));\n }\n }]);\n\n return Step;\n}(React.Component);\n\nexport { Step as default };","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n\n/* eslint react/no-did-mount-set-state: 0, react/prop-types: 0 */\nimport React, { cloneElement } from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport classNames from 'classnames';\nimport Step from './Step';\n\nvar Steps = /*#__PURE__*/function (_React$Component) {\n _inherits(Steps, _React$Component);\n\n var _super = _createSuper(Steps);\n\n function Steps() {\n var _this;\n\n _classCallCheck(this, Steps);\n\n _this = _super.apply(this, arguments);\n\n _this.onStepClick = function (next) {\n var _this$props = _this.props,\n onChange = _this$props.onChange,\n current = _this$props.current;\n\n if (onChange && current !== next) {\n onChange(next);\n }\n };\n\n return _this;\n }\n\n _createClass(Steps, [{\n key: \"render\",\n value: function render() {\n var _classNames,\n _this2 = this;\n\n var _this$props2 = this.props,\n prefixCls = _this$props2.prefixCls,\n _this$props2$style = _this$props2.style,\n style = _this$props2$style === void 0 ? {} : _this$props2$style,\n className = _this$props2.className,\n children = _this$props2.children,\n direction = _this$props2.direction,\n type = _this$props2.type,\n labelPlacement = _this$props2.labelPlacement,\n iconPrefix = _this$props2.iconPrefix,\n status = _this$props2.status,\n size = _this$props2.size,\n current = _this$props2.current,\n progressDot = _this$props2.progressDot,\n stepIcon = _this$props2.stepIcon,\n initial = _this$props2.initial,\n icons = _this$props2.icons,\n onChange = _this$props2.onChange,\n restProps = _objectWithoutProperties(_this$props2, [\"prefixCls\", \"style\", \"className\", \"children\", \"direction\", \"type\", \"labelPlacement\", \"iconPrefix\", \"status\", \"size\", \"current\", \"progressDot\", \"stepIcon\", \"initial\", \"icons\", \"onChange\"]);\n\n var isNav = type === 'navigation';\n var adjustedLabelPlacement = progressDot ? 'vertical' : labelPlacement;\n var classString = classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(direction), className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(size), size), _defineProperty(_classNames, \"\".concat(prefixCls, \"-label-\").concat(adjustedLabelPlacement), direction === 'horizontal'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-dot\"), !!progressDot), _defineProperty(_classNames, \"\".concat(prefixCls, \"-navigation\"), isNav), _classNames));\n return React.createElement(\"div\", Object.assign({\n className: classString,\n style: style\n }, restProps), toArray(children).map(function (child, index) {\n var stepNumber = initial + index;\n\n var childProps = _objectSpread({\n stepNumber: \"\".concat(stepNumber + 1),\n stepIndex: stepNumber,\n key: stepNumber,\n prefixCls: prefixCls,\n iconPrefix: iconPrefix,\n wrapperStyle: style,\n progressDot: progressDot,\n stepIcon: stepIcon,\n icons: icons,\n onStepClick: onChange && _this2.onStepClick\n }, child.props); // fix tail color\n\n\n if (status === 'error' && index === current - 1) {\n childProps.className = \"\".concat(prefixCls, \"-next-error\");\n }\n\n if (!child.props.status) {\n if (stepNumber === current) {\n childProps.status = status;\n } else if (stepNumber < current) {\n childProps.status = 'finish';\n } else {\n childProps.status = 'wait';\n }\n }\n\n childProps.active = stepNumber === current;\n return cloneElement(child, childProps);\n }));\n }\n }]);\n\n return Steps;\n}(React.Component);\n\nexport { Steps as default };\nSteps.Step = Step;\nSteps.defaultProps = {\n type: 'default',\n prefixCls: 'rc-steps',\n iconPrefix: 'rc',\n direction: 'horizontal',\n labelPlacement: 'horizontal',\n initial: 0,\n current: 0,\n status: 'process',\n size: '',\n progressDot: false\n};","import Steps from './Steps';\nimport Step from './Step';\nexport { Step };\nexport default Steps;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nvar Switch = React.forwardRef(function (_ref, ref) {\n var _classNames;\n\n var _ref$prefixCls = _ref.prefixCls,\n prefixCls = _ref$prefixCls === void 0 ? 'rc-switch' : _ref$prefixCls,\n className = _ref.className,\n checked = _ref.checked,\n defaultChecked = _ref.defaultChecked,\n disabled = _ref.disabled,\n loadingIcon = _ref.loadingIcon,\n checkedChildren = _ref.checkedChildren,\n unCheckedChildren = _ref.unCheckedChildren,\n onClick = _ref.onClick,\n onChange = _ref.onChange,\n onKeyDown = _ref.onKeyDown,\n restProps = _objectWithoutProperties(_ref, [\"prefixCls\", \"className\", \"checked\", \"defaultChecked\", \"disabled\", \"loadingIcon\", \"checkedChildren\", \"unCheckedChildren\", \"onClick\", \"onChange\", \"onKeyDown\"]);\n\n var _useMergedState = useMergedState(false, {\n value: checked,\n defaultValue: defaultChecked\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n innerChecked = _useMergedState2[0],\n setInnerChecked = _useMergedState2[1];\n\n function triggerChange(newChecked, event) {\n var mergedChecked = innerChecked;\n\n if (!disabled) {\n mergedChecked = newChecked;\n setInnerChecked(mergedChecked);\n onChange === null || onChange === void 0 ? void 0 : onChange(mergedChecked, event);\n }\n\n return mergedChecked;\n }\n\n function onInternalKeyDown(e) {\n if (e.which === KeyCode.LEFT) {\n triggerChange(false, e);\n } else if (e.which === KeyCode.RIGHT) {\n triggerChange(true, e);\n }\n\n onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(e);\n }\n\n function onInternalClick(e) {\n var ret = triggerChange(!innerChecked, e); // [Legacy] trigger onClick with value\n\n onClick === null || onClick === void 0 ? void 0 : onClick(ret, e);\n }\n\n var switchClassName = classNames(prefixCls, className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-checked\"), innerChecked), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), disabled), _classNames));\n return React.createElement(\"button\", Object.assign({}, restProps, {\n type: \"button\",\n role: \"switch\",\n \"aria-checked\": innerChecked,\n disabled: disabled,\n className: switchClassName,\n ref: ref,\n onKeyDown: onInternalKeyDown,\n onClick: onInternalClick\n }), loadingIcon, React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-inner\")\n }, innerChecked ? checkedChildren : unCheckedChildren));\n});\nSwitch.displayName = 'Switch';\nexport default Switch;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useRef, useState, useEffect } from 'react';\nimport raf from \"rc-util/es/raf\";\nexport default function useRaf(callback) {\n var rafRef = useRef();\n var removedRef = useRef(false);\n\n function trigger() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (!removedRef.current) {\n raf.cancel(rafRef.current);\n rafRef.current = raf(function () {\n callback.apply(void 0, args);\n });\n }\n }\n\n useEffect(function () {\n return function () {\n removedRef.current = true;\n raf.cancel(rafRef.current);\n };\n }, []);\n return trigger;\n}\nexport function useRafState(defaultState) {\n var batchRef = useRef([]);\n\n var _useState = useState({}),\n _useState2 = _slicedToArray(_useState, 2),\n forceUpdate = _useState2[1];\n\n var state = useRef(typeof defaultState === 'function' ? defaultState() : defaultState);\n var flushUpdate = useRaf(function () {\n var current = state.current;\n batchRef.current.forEach(function (callback) {\n current = callback(current);\n });\n batchRef.current = [];\n state.current = current;\n forceUpdate({});\n });\n\n function updater(callback) {\n batchRef.current.push(callback);\n flushUpdate();\n }\n\n return [state.current, updater];\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\n\nfunction TabNode(_ref, ref) {\n var _classNames;\n\n var prefixCls = _ref.prefixCls,\n id = _ref.id,\n active = _ref.active,\n rtl = _ref.rtl,\n _ref$tab = _ref.tab,\n key = _ref$tab.key,\n tab = _ref$tab.tab,\n disabled = _ref$tab.disabled,\n closeIcon = _ref$tab.closeIcon,\n tabBarGutter = _ref.tabBarGutter,\n tabPosition = _ref.tabPosition,\n closable = _ref.closable,\n renderWrapper = _ref.renderWrapper,\n removeAriaLabel = _ref.removeAriaLabel,\n editable = _ref.editable,\n onClick = _ref.onClick,\n onRemove = _ref.onRemove,\n onFocus = _ref.onFocus;\n var tabPrefix = \"\".concat(prefixCls, \"-tab\");\n React.useEffect(function () {\n return onRemove;\n }, []);\n var nodeStyle = {};\n\n if (tabPosition === 'top' || tabPosition === 'bottom') {\n nodeStyle[rtl ? 'marginLeft' : 'marginRight'] = tabBarGutter;\n } else {\n nodeStyle.marginBottom = tabBarGutter;\n }\n\n var removable = editable && closable !== false && !disabled;\n\n function onInternalClick(e) {\n if (disabled) return;\n onClick(e);\n }\n\n function onRemoveTab(event) {\n event.preventDefault();\n event.stopPropagation();\n editable.onEdit('remove', {\n key: key,\n event: event\n });\n }\n\n var node = /*#__PURE__*/React.createElement(\"div\", {\n key: key,\n ref: ref,\n className: classNames(tabPrefix, (_classNames = {}, _defineProperty(_classNames, \"\".concat(tabPrefix, \"-with-remove\"), removable), _defineProperty(_classNames, \"\".concat(tabPrefix, \"-active\"), active), _defineProperty(_classNames, \"\".concat(tabPrefix, \"-disabled\"), disabled), _classNames)),\n style: nodeStyle,\n onClick: onInternalClick\n }, /*#__PURE__*/React.createElement(\"div\", {\n role: \"tab\",\n \"aria-selected\": active,\n id: id && \"\".concat(id, \"-tab-\").concat(key),\n className: \"\".concat(tabPrefix, \"-btn\"),\n \"aria-controls\": id && \"\".concat(id, \"-panel-\").concat(key),\n \"aria-disabled\": disabled,\n tabIndex: disabled ? null : 0,\n onClick: function onClick(e) {\n e.stopPropagation();\n onInternalClick(e);\n },\n onKeyDown: function onKeyDown(e) {\n if ([KeyCode.SPACE, KeyCode.ENTER].includes(e.which)) {\n e.preventDefault();\n onInternalClick(e);\n }\n },\n onFocus: onFocus\n }, tab), removable && /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n \"aria-label\": removeAriaLabel || 'remove',\n tabIndex: 0,\n className: \"\".concat(tabPrefix, \"-remove\"),\n onClick: function onClick(e) {\n e.stopPropagation();\n onRemoveTab(e);\n }\n }, closeIcon || editable.removeIcon || '×'));\n\n if (renderWrapper) {\n node = renderWrapper(node);\n }\n\n return node;\n}\n\nexport default /*#__PURE__*/React.forwardRef(TabNode);","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { useMemo } from 'react';\nvar DEFAULT_SIZE = {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n};\nexport default function useOffsets(tabs, tabSizes, holderScrollWidth) {\n return useMemo(function () {\n var _tabs$;\n\n var map = new Map();\n var lastOffset = tabSizes.get((_tabs$ = tabs[0]) === null || _tabs$ === void 0 ? void 0 : _tabs$.key) || DEFAULT_SIZE;\n var rightOffset = lastOffset.left + lastOffset.width;\n\n for (var i = 0; i < tabs.length; i += 1) {\n var key = tabs[i].key;\n var data = tabSizes.get(key); // Reuse last one when not exist yet\n\n if (!data) {\n var _tabs;\n\n data = tabSizes.get((_tabs = tabs[i - 1]) === null || _tabs === void 0 ? void 0 : _tabs.key) || DEFAULT_SIZE;\n }\n\n var entity = map.get(key) || _objectSpread({}, data); // Right\n\n\n entity.right = rightOffset - entity.left - entity.width; // Update entity\n\n map.set(key, entity);\n }\n\n return map;\n }, [tabs.map(function (tab) {\n return tab.key;\n }).join('_'), tabSizes, holderScrollWidth]);\n}","import { useMemo } from 'react';\nvar DEFAULT_SIZE = {\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n right: 0\n};\nexport default function useVisibleRange(tabOffsets, containerSize, tabContentNodeSize, addNodeSize, _ref) {\n var tabs = _ref.tabs,\n tabPosition = _ref.tabPosition,\n rtl = _ref.rtl;\n var unit;\n var position;\n var transformSize;\n\n if (['top', 'bottom'].includes(tabPosition)) {\n unit = 'width';\n position = rtl ? 'right' : 'left';\n transformSize = Math.abs(containerSize.left);\n } else {\n unit = 'height';\n position = 'top';\n transformSize = -containerSize.top;\n }\n\n var basicSize = containerSize[unit];\n var tabContentSize = tabContentNodeSize[unit];\n var addSize = addNodeSize[unit];\n var mergedBasicSize = basicSize;\n\n if (tabContentSize + addSize > basicSize) {\n mergedBasicSize = basicSize - addSize;\n }\n\n return useMemo(function () {\n if (!tabs.length) {\n return [0, 0];\n }\n\n var len = tabs.length;\n var endIndex = len;\n\n for (var i = 0; i < len; i += 1) {\n var offset = tabOffsets.get(tabs[i].key) || DEFAULT_SIZE;\n\n if (offset[position] + offset[unit] > transformSize + mergedBasicSize) {\n endIndex = i - 1;\n break;\n }\n }\n\n var startIndex = 0;\n\n for (var _i = len - 1; _i >= 0; _i -= 1) {\n var _offset = tabOffsets.get(tabs[_i].key) || DEFAULT_SIZE;\n\n if (_offset[position] < transformSize) {\n startIndex = _i + 1;\n break;\n }\n }\n\n return [startIndex, endIndex];\n }, [tabOffsets, transformSize, mergedBasicSize, tabPosition, tabs.map(function (tab) {\n return tab.key;\n }).join('_'), rtl]);\n}","import * as React from 'react';\n\nfunction AddButton(_ref, ref) {\n var prefixCls = _ref.prefixCls,\n editable = _ref.editable,\n locale = _ref.locale,\n style = _ref.style;\n\n if (!editable || editable.showAdd === false) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"button\", {\n ref: ref,\n type: \"button\",\n className: \"\".concat(prefixCls, \"-nav-add\"),\n style: style,\n \"aria-label\": (locale === null || locale === void 0 ? void 0 : locale.addAriaLabel) || 'Add tab',\n onClick: function onClick(event) {\n editable.onEdit('add', {\n event: event\n });\n }\n }, editable.addIcon || '+');\n}\n\nexport default /*#__PURE__*/React.forwardRef(AddButton);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useState, useEffect } from 'react';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport Menu, { MenuItem } from 'rc-menu';\nimport Dropdown from 'rc-dropdown';\nimport AddButton from './AddButton';\n\nfunction OperationNode(_ref, ref) {\n var prefixCls = _ref.prefixCls,\n id = _ref.id,\n tabs = _ref.tabs,\n locale = _ref.locale,\n mobile = _ref.mobile,\n _ref$moreIcon = _ref.moreIcon,\n moreIcon = _ref$moreIcon === void 0 ? 'More' : _ref$moreIcon,\n moreTransitionName = _ref.moreTransitionName,\n style = _ref.style,\n className = _ref.className,\n editable = _ref.editable,\n tabBarGutter = _ref.tabBarGutter,\n rtl = _ref.rtl,\n onTabClick = _ref.onTabClick;\n\n // ======================== Dropdown ========================\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n open = _useState2[0],\n setOpen = _useState2[1];\n\n var _useState3 = useState(null),\n _useState4 = _slicedToArray(_useState3, 2),\n selectedKey = _useState4[0],\n setSelectedKey = _useState4[1];\n\n var popupId = \"\".concat(id, \"-more-popup\");\n var dropdownPrefix = \"\".concat(prefixCls, \"-dropdown\");\n var selectedItemId = selectedKey !== null ? \"\".concat(popupId, \"-\").concat(selectedKey) : null;\n var dropdownAriaLabel = locale === null || locale === void 0 ? void 0 : locale.dropdownAriaLabel;\n var menu = /*#__PURE__*/React.createElement(Menu, {\n onClick: function onClick(_ref2) {\n var key = _ref2.key,\n domEvent = _ref2.domEvent;\n onTabClick(key, domEvent);\n setOpen(false);\n },\n id: popupId,\n tabIndex: -1,\n role: \"listbox\",\n \"aria-activedescendant\": selectedItemId,\n selectedKeys: [selectedKey],\n \"aria-label\": dropdownAriaLabel !== undefined ? dropdownAriaLabel : 'expanded dropdown'\n }, tabs.map(function (tab) {\n return /*#__PURE__*/React.createElement(MenuItem, {\n key: tab.key,\n id: \"\".concat(popupId, \"-\").concat(tab.key),\n role: \"option\",\n \"aria-controls\": id && \"\".concat(id, \"-panel-\").concat(tab.key),\n disabled: tab.disabled\n }, tab.tab);\n }));\n\n function selectOffset(offset) {\n var enabledTabs = tabs.filter(function (tab) {\n return !tab.disabled;\n });\n var selectedIndex = enabledTabs.findIndex(function (tab) {\n return tab.key === selectedKey;\n }) || 0;\n var len = enabledTabs.length;\n\n for (var i = 0; i < len; i += 1) {\n selectedIndex = (selectedIndex + offset + len) % len;\n var tab = enabledTabs[selectedIndex];\n\n if (!tab.disabled) {\n setSelectedKey(tab.key);\n return;\n }\n }\n }\n\n function onKeyDown(e) {\n var which = e.which;\n\n if (!open) {\n if ([KeyCode.DOWN, KeyCode.SPACE, KeyCode.ENTER].includes(which)) {\n setOpen(true);\n e.preventDefault();\n }\n\n return;\n }\n\n switch (which) {\n case KeyCode.UP:\n selectOffset(-1);\n e.preventDefault();\n break;\n\n case KeyCode.DOWN:\n selectOffset(1);\n e.preventDefault();\n break;\n\n case KeyCode.ESC:\n setOpen(false);\n break;\n\n case KeyCode.SPACE:\n case KeyCode.ENTER:\n if (selectedKey !== null) onTabClick(selectedKey, e);\n break;\n }\n } // ========================= Effect =========================\n\n\n useEffect(function () {\n // We use query element here to avoid React strict warning\n var ele = document.getElementById(selectedItemId);\n\n if (ele && ele.scrollIntoView) {\n ele.scrollIntoView(false);\n }\n }, [selectedKey]);\n useEffect(function () {\n if (!open) {\n setSelectedKey(null);\n }\n }, [open]); // ========================= Render =========================\n\n var moreStyle = _defineProperty({}, rtl ? 'marginLeft' : 'marginRight', tabBarGutter);\n\n if (!tabs.length) {\n moreStyle.visibility = 'hidden';\n moreStyle.order = 1;\n }\n\n var overlayClassName = classNames(_defineProperty({}, \"\".concat(dropdownPrefix, \"-rtl\"), rtl));\n var moreNode = mobile ? null : /*#__PURE__*/React.createElement(Dropdown, {\n prefixCls: dropdownPrefix,\n overlay: menu,\n trigger: ['hover'],\n visible: open,\n transitionName: moreTransitionName,\n onVisibleChange: setOpen,\n overlayClassName: overlayClassName,\n mouseEnterDelay: 0.1,\n mouseLeaveDelay: 0.1\n }, /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n className: \"\".concat(prefixCls, \"-nav-more\"),\n style: moreStyle,\n tabIndex: -1,\n \"aria-hidden\": \"true\",\n \"aria-haspopup\": \"listbox\",\n \"aria-controls\": popupId,\n id: \"\".concat(id, \"-more\"),\n \"aria-expanded\": open,\n onKeyDown: onKeyDown\n }, moreIcon));\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-nav-operations\"), className),\n style: style,\n ref: ref\n }, moreNode, /*#__PURE__*/React.createElement(AddButton, {\n prefixCls: prefixCls,\n locale: locale,\n editable: editable\n }));\n}\n\nexport default /*#__PURE__*/React.forwardRef(OperationNode);","import { createContext } from 'react';\nexport default /*#__PURE__*/createContext(null);","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useState, useRef } from 'react';\nvar MIN_SWIPE_DISTANCE = 0.1;\nvar STOP_SWIPE_DISTANCE = 0.01;\nvar REFRESH_INTERVAL = 20;\nvar SPEED_OFF_MULTIPLE = Math.pow(0.995, REFRESH_INTERVAL); // ================================= Hook =================================\n\nexport default function useTouchMove(ref, onOffset) {\n var _useState = useState(),\n _useState2 = _slicedToArray(_useState, 2),\n touchPosition = _useState2[0],\n setTouchPosition = _useState2[1];\n\n var _useState3 = useState(0),\n _useState4 = _slicedToArray(_useState3, 2),\n lastTimestamp = _useState4[0],\n setLastTimestamp = _useState4[1];\n\n var _useState5 = useState(0),\n _useState6 = _slicedToArray(_useState5, 2),\n lastTimeDiff = _useState6[0],\n setLastTimeDiff = _useState6[1];\n\n var _useState7 = useState(),\n _useState8 = _slicedToArray(_useState7, 2),\n lastOffset = _useState8[0],\n setLastOffset = _useState8[1];\n\n var motionRef = useRef(); // ========================= Events =========================\n // >>> Touch events\n\n function onTouchStart(e) {\n var _e$touches$ = e.touches[0],\n screenX = _e$touches$.screenX,\n screenY = _e$touches$.screenY;\n setTouchPosition({\n x: screenX,\n y: screenY\n });\n window.clearInterval(motionRef.current);\n }\n\n function onTouchMove(e) {\n if (!touchPosition) return;\n e.preventDefault();\n var _e$touches$2 = e.touches[0],\n screenX = _e$touches$2.screenX,\n screenY = _e$touches$2.screenY;\n setTouchPosition({\n x: screenX,\n y: screenY\n });\n var offsetX = screenX - touchPosition.x;\n var offsetY = screenY - touchPosition.y;\n onOffset(offsetX, offsetY);\n var now = Date.now();\n setLastTimestamp(now);\n setLastTimeDiff(now - lastTimestamp);\n setLastOffset({\n x: offsetX,\n y: offsetY\n });\n }\n\n function onTouchEnd() {\n if (!touchPosition) return;\n setTouchPosition(null);\n setLastOffset(null); // Swipe if needed\n\n if (lastOffset) {\n var distanceX = lastOffset.x / lastTimeDiff;\n var distanceY = lastOffset.y / lastTimeDiff;\n var absX = Math.abs(distanceX);\n var absY = Math.abs(distanceY); // Skip swipe if low distance\n\n if (Math.max(absX, absY) < MIN_SWIPE_DISTANCE) return;\n var currentX = distanceX;\n var currentY = distanceY;\n motionRef.current = window.setInterval(function () {\n if (Math.abs(currentX) < STOP_SWIPE_DISTANCE && Math.abs(currentY) < STOP_SWIPE_DISTANCE) {\n window.clearInterval(motionRef.current);\n return;\n }\n\n currentX *= SPEED_OFF_MULTIPLE;\n currentY *= SPEED_OFF_MULTIPLE;\n onOffset(currentX * REFRESH_INTERVAL, currentY * REFRESH_INTERVAL);\n }, REFRESH_INTERVAL);\n }\n } // >>> Wheel event\n\n\n var lastWheelDirectionRef = useRef();\n\n function onWheel(e) {\n var deltaX = e.deltaX,\n deltaY = e.deltaY; // Convert both to x & y since wheel only happened on PC\n\n var mixed = 0;\n var absX = Math.abs(deltaX);\n var absY = Math.abs(deltaY);\n\n if (absX === absY) {\n mixed = lastWheelDirectionRef.current === 'x' ? deltaX : deltaY;\n } else if (absX > absY) {\n mixed = deltaX;\n lastWheelDirectionRef.current = 'x';\n } else {\n mixed = deltaY;\n lastWheelDirectionRef.current = 'y';\n }\n\n if (onOffset(-mixed, -mixed)) {\n e.preventDefault();\n }\n } // ========================= Effect =========================\n\n\n var touchEventsRef = useRef(null);\n touchEventsRef.current = {\n onTouchStart: onTouchStart,\n onTouchMove: onTouchMove,\n onTouchEnd: onTouchEnd,\n onWheel: onWheel\n };\n React.useEffect(function () {\n function onProxyTouchStart(e) {\n touchEventsRef.current.onTouchStart(e);\n }\n\n function onProxyTouchMove(e) {\n touchEventsRef.current.onTouchMove(e);\n }\n\n function onProxyTouchEnd(e) {\n touchEventsRef.current.onTouchEnd(e);\n }\n\n function onProxyWheel(e) {\n touchEventsRef.current.onWheel(e);\n }\n\n document.addEventListener('touchmove', onProxyTouchMove, {\n passive: false\n });\n document.addEventListener('touchend', onProxyTouchEnd, {\n passive: false\n }); // No need to clean up since element removed\n\n ref.current.addEventListener('touchstart', onProxyTouchStart, {\n passive: false\n });\n ref.current.addEventListener('wheel', onProxyWheel);\n return function () {\n document.removeEventListener('touchmove', onProxyTouchMove);\n document.removeEventListener('touchend', onProxyTouchEnd);\n };\n }, []);\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nexport default function useSyncState(defaultState, onChange) {\n var stateRef = React.useRef(defaultState);\n\n var _React$useState = React.useState({}),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n forceUpdate = _React$useState2[1];\n\n function setState(updater) {\n var newValue = typeof updater === 'function' ? updater(stateRef.current) : updater;\n\n if (newValue !== stateRef.current) {\n onChange(newValue, stateRef.current);\n }\n\n stateRef.current = newValue;\n forceUpdate({});\n }\n\n return [stateRef.current, setState];\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useState, useRef, useEffect } from 'react';\nimport classNames from 'classnames';\nimport raf from \"rc-util/es/raf\";\nimport ResizeObserver from 'rc-resize-observer';\nimport useRaf, { useRafState } from '../hooks/useRaf';\nimport TabNode from './TabNode';\nimport useOffsets from '../hooks/useOffsets';\nimport useVisibleRange from '../hooks/useVisibleRange';\nimport OperationNode from './OperationNode';\nimport TabContext from '../TabContext';\nimport useTouchMove from '../hooks/useTouchMove';\nimport useRefs from '../hooks/useRefs';\nimport AddButton from './AddButton';\nimport useSyncState from '../hooks/useSyncState';\n\nvar ExtraContent = function ExtraContent(_ref) {\n var position = _ref.position,\n prefixCls = _ref.prefixCls,\n extra = _ref.extra;\n if (!extra) return null;\n var content;\n var assertExtra = extra;\n\n if (position === 'right') {\n content = assertExtra.right || !assertExtra.left && assertExtra || null;\n }\n\n if (position === 'left') {\n content = assertExtra.left || null;\n }\n\n return content ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-extra-content\")\n }, content) : null;\n};\n\nfunction TabNavList(props, ref) {\n var _classNames;\n\n var _React$useContext = React.useContext(TabContext),\n prefixCls = _React$useContext.prefixCls,\n tabs = _React$useContext.tabs;\n\n var className = props.className,\n style = props.style,\n id = props.id,\n animated = props.animated,\n activeKey = props.activeKey,\n rtl = props.rtl,\n extra = props.extra,\n editable = props.editable,\n locale = props.locale,\n tabPosition = props.tabPosition,\n tabBarGutter = props.tabBarGutter,\n children = props.children,\n onTabClick = props.onTabClick,\n onTabScroll = props.onTabScroll;\n var tabsWrapperRef = useRef();\n var tabListRef = useRef();\n var operationsRef = useRef();\n var innerAddButtonRef = useRef();\n\n var _useRefs = useRefs(),\n _useRefs2 = _slicedToArray(_useRefs, 2),\n getBtnRef = _useRefs2[0],\n removeBtnRef = _useRefs2[1];\n\n var tabPositionTopOrBottom = tabPosition === 'top' || tabPosition === 'bottom';\n\n var _useSyncState = useSyncState(0, function (next, prev) {\n if (tabPositionTopOrBottom && onTabScroll) {\n onTabScroll({\n direction: next > prev ? 'left' : 'right'\n });\n }\n }),\n _useSyncState2 = _slicedToArray(_useSyncState, 2),\n transformLeft = _useSyncState2[0],\n setTransformLeft = _useSyncState2[1];\n\n var _useSyncState3 = useSyncState(0, function (next, prev) {\n if (!tabPositionTopOrBottom && onTabScroll) {\n onTabScroll({\n direction: next > prev ? 'top' : 'bottom'\n });\n }\n }),\n _useSyncState4 = _slicedToArray(_useSyncState3, 2),\n transformTop = _useSyncState4[0],\n setTransformTop = _useSyncState4[1];\n\n var _useState = useState(0),\n _useState2 = _slicedToArray(_useState, 2),\n wrapperScrollWidth = _useState2[0],\n setWrapperScrollWidth = _useState2[1];\n\n var _useState3 = useState(0),\n _useState4 = _slicedToArray(_useState3, 2),\n wrapperScrollHeight = _useState4[0],\n setWrapperScrollHeight = _useState4[1];\n\n var _useState5 = useState(0),\n _useState6 = _slicedToArray(_useState5, 2),\n wrapperContentWidth = _useState6[0],\n setWrapperContentWidth = _useState6[1];\n\n var _useState7 = useState(0),\n _useState8 = _slicedToArray(_useState7, 2),\n wrapperContentHeight = _useState8[0],\n setWrapperContentHeight = _useState8[1];\n\n var _useState9 = useState(null),\n _useState10 = _slicedToArray(_useState9, 2),\n wrapperWidth = _useState10[0],\n setWrapperWidth = _useState10[1];\n\n var _useState11 = useState(null),\n _useState12 = _slicedToArray(_useState11, 2),\n wrapperHeight = _useState12[0],\n setWrapperHeight = _useState12[1];\n\n var _useState13 = useState(0),\n _useState14 = _slicedToArray(_useState13, 2),\n addWidth = _useState14[0],\n setAddWidth = _useState14[1];\n\n var _useState15 = useState(0),\n _useState16 = _slicedToArray(_useState15, 2),\n addHeight = _useState16[0],\n setAddHeight = _useState16[1];\n\n var _useRafState = useRafState(new Map()),\n _useRafState2 = _slicedToArray(_useRafState, 2),\n tabSizes = _useRafState2[0],\n setTabSizes = _useRafState2[1];\n\n var tabOffsets = useOffsets(tabs, tabSizes, wrapperScrollWidth); // ========================== Util =========================\n\n var operationsHiddenClassName = \"\".concat(prefixCls, \"-nav-operations-hidden\");\n var transformMin = 0;\n var transformMax = 0;\n\n if (!tabPositionTopOrBottom) {\n transformMin = Math.min(0, wrapperHeight - wrapperScrollHeight);\n transformMax = 0;\n } else if (rtl) {\n transformMin = 0;\n transformMax = Math.max(0, wrapperScrollWidth - wrapperWidth);\n } else {\n transformMin = Math.min(0, wrapperWidth - wrapperScrollWidth);\n transformMax = 0;\n }\n\n function alignInRange(value) {\n if (value < transformMin) {\n return transformMin;\n }\n\n if (value > transformMax) {\n return transformMax;\n }\n\n return value;\n } // ========================= Mobile ========================\n\n\n var touchMovingRef = useRef();\n\n var _useState17 = useState(),\n _useState18 = _slicedToArray(_useState17, 2),\n lockAnimation = _useState18[0],\n setLockAnimation = _useState18[1];\n\n function doLockAnimation() {\n setLockAnimation(Date.now());\n }\n\n function clearTouchMoving() {\n window.clearTimeout(touchMovingRef.current);\n }\n\n useTouchMove(tabsWrapperRef, function (offsetX, offsetY) {\n function doMove(setState, offset) {\n setState(function (value) {\n var newValue = alignInRange(value + offset);\n return newValue;\n });\n }\n\n if (tabPositionTopOrBottom) {\n // Skip scroll if place is enough\n if (wrapperWidth >= wrapperScrollWidth) {\n return false;\n }\n\n doMove(setTransformLeft, offsetX);\n } else {\n if (wrapperHeight >= wrapperScrollHeight) {\n return false;\n }\n\n doMove(setTransformTop, offsetY);\n }\n\n clearTouchMoving();\n doLockAnimation();\n return true;\n });\n useEffect(function () {\n clearTouchMoving();\n\n if (lockAnimation) {\n touchMovingRef.current = window.setTimeout(function () {\n setLockAnimation(0);\n }, 100);\n }\n\n return clearTouchMoving;\n }, [lockAnimation]); // ========================= Scroll ========================\n\n function scrollToTab() {\n var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : activeKey;\n var tabOffset = tabOffsets.get(key) || {\n width: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0\n };\n\n if (tabPositionTopOrBottom) {\n // ============ Align with top & bottom ============\n var newTransform = transformLeft; // RTL\n\n if (rtl) {\n if (tabOffset.right < transformLeft) {\n newTransform = tabOffset.right;\n } else if (tabOffset.right + tabOffset.width > transformLeft + wrapperWidth) {\n newTransform = tabOffset.right + tabOffset.width - wrapperWidth;\n }\n } // LTR\n else if (tabOffset.left < -transformLeft) {\n newTransform = -tabOffset.left;\n } else if (tabOffset.left + tabOffset.width > -transformLeft + wrapperWidth) {\n newTransform = -(tabOffset.left + tabOffset.width - wrapperWidth);\n }\n\n setTransformTop(0);\n setTransformLeft(alignInRange(newTransform));\n } else {\n // ============ Align with left & right ============\n var _newTransform = transformTop;\n\n if (tabOffset.top < -transformTop) {\n _newTransform = -tabOffset.top;\n } else if (tabOffset.top + tabOffset.height > -transformTop + wrapperHeight) {\n _newTransform = -(tabOffset.top + tabOffset.height - wrapperHeight);\n }\n\n setTransformLeft(0);\n setTransformTop(alignInRange(_newTransform));\n }\n } // ========================== Tab ==========================\n // Render tab node & collect tab offset\n\n\n var _useVisibleRange = useVisibleRange(tabOffsets, {\n width: wrapperWidth,\n height: wrapperHeight,\n left: transformLeft,\n top: transformTop\n }, {\n width: wrapperContentWidth,\n height: wrapperContentHeight\n }, {\n width: addWidth,\n height: addHeight\n }, _objectSpread(_objectSpread({}, props), {}, {\n tabs: tabs\n })),\n _useVisibleRange2 = _slicedToArray(_useVisibleRange, 2),\n visibleStart = _useVisibleRange2[0],\n visibleEnd = _useVisibleRange2[1];\n\n var tabNodes = tabs.map(function (tab) {\n var key = tab.key;\n return /*#__PURE__*/React.createElement(TabNode, {\n id: id,\n prefixCls: prefixCls,\n key: key,\n rtl: rtl,\n tab: tab,\n closable: tab.closable,\n editable: editable,\n active: key === activeKey,\n tabPosition: tabPosition,\n tabBarGutter: tabBarGutter,\n renderWrapper: children,\n removeAriaLabel: locale === null || locale === void 0 ? void 0 : locale.removeAriaLabel,\n ref: getBtnRef(key),\n onClick: function onClick(e) {\n onTabClick(key, e);\n },\n onRemove: function onRemove() {\n removeBtnRef(key);\n },\n onFocus: function onFocus() {\n scrollToTab(key);\n doLockAnimation(); // Focus element will make scrollLeft change which we should reset back\n\n if (!rtl) {\n tabsWrapperRef.current.scrollLeft = 0;\n }\n\n tabsWrapperRef.current.scrollTop = 0;\n }\n });\n });\n var onListHolderResize = useRaf(function () {\n var _tabsWrapperRef$curre, _tabsWrapperRef$curre2, _innerAddButtonRef$cu, _innerAddButtonRef$cu2, _operationsRef$curren, _operationsRef$curren2, _tabListRef$current, _tabListRef$current2, _operationsRef$curren3;\n\n // Update wrapper records\n var offsetWidth = ((_tabsWrapperRef$curre = tabsWrapperRef.current) === null || _tabsWrapperRef$curre === void 0 ? void 0 : _tabsWrapperRef$curre.offsetWidth) || 0;\n var offsetHeight = ((_tabsWrapperRef$curre2 = tabsWrapperRef.current) === null || _tabsWrapperRef$curre2 === void 0 ? void 0 : _tabsWrapperRef$curre2.offsetHeight) || 0;\n var newAddWidth = ((_innerAddButtonRef$cu = innerAddButtonRef.current) === null || _innerAddButtonRef$cu === void 0 ? void 0 : _innerAddButtonRef$cu.offsetWidth) || 0;\n var newAddHeight = ((_innerAddButtonRef$cu2 = innerAddButtonRef.current) === null || _innerAddButtonRef$cu2 === void 0 ? void 0 : _innerAddButtonRef$cu2.offsetHeight) || 0;\n var newOperationWidth = ((_operationsRef$curren = operationsRef.current) === null || _operationsRef$curren === void 0 ? void 0 : _operationsRef$curren.offsetWidth) || 0;\n var newOperationHeight = ((_operationsRef$curren2 = operationsRef.current) === null || _operationsRef$curren2 === void 0 ? void 0 : _operationsRef$curren2.offsetHeight) || 0;\n setWrapperWidth(offsetWidth);\n setWrapperHeight(offsetHeight);\n setAddWidth(newAddWidth);\n setAddHeight(newAddHeight);\n var newWrapperScrollWidth = (((_tabListRef$current = tabListRef.current) === null || _tabListRef$current === void 0 ? void 0 : _tabListRef$current.offsetWidth) || 0) - newAddWidth;\n var newWrapperScrollHeight = (((_tabListRef$current2 = tabListRef.current) === null || _tabListRef$current2 === void 0 ? void 0 : _tabListRef$current2.offsetHeight) || 0) - newAddHeight;\n setWrapperScrollWidth(newWrapperScrollWidth);\n setWrapperScrollHeight(newWrapperScrollHeight);\n var isOperationHidden = (_operationsRef$curren3 = operationsRef.current) === null || _operationsRef$curren3 === void 0 ? void 0 : _operationsRef$curren3.className.includes(operationsHiddenClassName);\n setWrapperContentWidth(newWrapperScrollWidth - (isOperationHidden ? 0 : newOperationWidth));\n setWrapperContentHeight(newWrapperScrollHeight - (isOperationHidden ? 0 : newOperationHeight)); // Update buttons records\n\n setTabSizes(function () {\n var newSizes = new Map();\n tabs.forEach(function (_ref2) {\n var key = _ref2.key;\n var btnNode = getBtnRef(key).current;\n\n if (btnNode) {\n newSizes.set(key, {\n width: btnNode.offsetWidth,\n height: btnNode.offsetHeight,\n left: btnNode.offsetLeft,\n top: btnNode.offsetTop\n });\n }\n });\n return newSizes;\n });\n }); // ======================== Dropdown =======================\n\n var startHiddenTabs = tabs.slice(0, visibleStart);\n var endHiddenTabs = tabs.slice(visibleEnd + 1);\n var hiddenTabs = [].concat(_toConsumableArray(startHiddenTabs), _toConsumableArray(endHiddenTabs)); // =================== Link & Operations ===================\n\n var _useState19 = useState(),\n _useState20 = _slicedToArray(_useState19, 2),\n inkStyle = _useState20[0],\n setInkStyle = _useState20[1];\n\n var activeTabOffset = tabOffsets.get(activeKey); // Delay set ink style to avoid remove tab blink\n\n var inkBarRafRef = useRef();\n\n function cleanInkBarRaf() {\n raf.cancel(inkBarRafRef.current);\n }\n\n useEffect(function () {\n var newInkStyle = {};\n\n if (activeTabOffset) {\n if (tabPositionTopOrBottom) {\n if (rtl) {\n newInkStyle.right = activeTabOffset.right;\n } else {\n newInkStyle.left = activeTabOffset.left;\n }\n\n newInkStyle.width = activeTabOffset.width;\n } else {\n newInkStyle.top = activeTabOffset.top;\n newInkStyle.height = activeTabOffset.height;\n }\n }\n\n cleanInkBarRaf();\n inkBarRafRef.current = raf(function () {\n setInkStyle(newInkStyle);\n });\n return cleanInkBarRaf;\n }, [activeTabOffset, tabPositionTopOrBottom, rtl]); // ========================= Effect ========================\n\n useEffect(function () {\n scrollToTab();\n }, [activeKey, activeTabOffset, tabOffsets, tabPositionTopOrBottom]); // Should recalculate when rtl changed\n\n useEffect(function () {\n onListHolderResize();\n }, [rtl, tabBarGutter, activeKey, tabs.map(function (tab) {\n return tab.key;\n }).join('_')]); // ========================= Render ========================\n\n var hasDropdown = !!hiddenTabs.length;\n var wrapPrefix = \"\".concat(prefixCls, \"-nav-wrap\");\n var pingLeft;\n var pingRight;\n var pingTop;\n var pingBottom;\n\n if (tabPositionTopOrBottom) {\n if (rtl) {\n pingRight = transformLeft > 0;\n pingLeft = transformLeft + wrapperWidth < wrapperScrollWidth;\n } else {\n pingLeft = transformLeft < 0;\n pingRight = -transformLeft + wrapperWidth < wrapperScrollWidth;\n }\n } else {\n pingTop = transformTop < 0;\n pingBottom = -transformTop + wrapperHeight < wrapperScrollHeight;\n }\n /* eslint-disable jsx-a11y/interactive-supports-focus */\n\n\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: ref,\n role: \"tablist\",\n className: classNames(\"\".concat(prefixCls, \"-nav\"), className),\n style: style,\n onKeyDown: function onKeyDown() {\n // No need animation when use keyboard\n doLockAnimation();\n }\n }, /*#__PURE__*/React.createElement(ExtraContent, {\n position: \"left\",\n extra: extra,\n prefixCls: prefixCls\n }), /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onListHolderResize\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(wrapPrefix, (_classNames = {}, _defineProperty(_classNames, \"\".concat(wrapPrefix, \"-ping-left\"), pingLeft), _defineProperty(_classNames, \"\".concat(wrapPrefix, \"-ping-right\"), pingRight), _defineProperty(_classNames, \"\".concat(wrapPrefix, \"-ping-top\"), pingTop), _defineProperty(_classNames, \"\".concat(wrapPrefix, \"-ping-bottom\"), pingBottom), _classNames)),\n ref: tabsWrapperRef\n }, /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onListHolderResize\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: tabListRef,\n className: \"\".concat(prefixCls, \"-nav-list\"),\n style: {\n transform: \"translate(\".concat(transformLeft, \"px, \").concat(transformTop, \"px)\"),\n transition: lockAnimation ? 'none' : undefined\n }\n }, tabNodes, /*#__PURE__*/React.createElement(AddButton, {\n ref: innerAddButtonRef,\n prefixCls: prefixCls,\n locale: locale,\n editable: editable,\n style: {\n visibility: hasDropdown ? 'hidden' : null\n }\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-ink-bar\"), _defineProperty({}, \"\".concat(prefixCls, \"-ink-bar-animated\"), animated.inkBar)),\n style: inkStyle\n }))))), /*#__PURE__*/React.createElement(OperationNode, Object.assign({}, props, {\n ref: operationsRef,\n prefixCls: prefixCls,\n tabs: hiddenTabs,\n className: !hasDropdown && operationsHiddenClassName\n })), /*#__PURE__*/React.createElement(ExtraContent, {\n position: \"right\",\n extra: extra,\n prefixCls: prefixCls\n }));\n /* eslint-enable */\n}\n\nexport default /*#__PURE__*/React.forwardRef(TabNavList);","import * as React from 'react';\nimport { useRef } from 'react';\nexport default function useRefs() {\n var cacheRefs = useRef(new Map());\n\n function getRef(key) {\n if (!cacheRefs.current.has(key)) {\n cacheRefs.current.set(key, /*#__PURE__*/React.createRef());\n }\n\n return cacheRefs.current.get(key);\n }\n\n function removeRef(key) {\n cacheRefs.current.delete(key);\n }\n\n return [getRef, removeRef];\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport TabContext from '../TabContext';\nexport default function TabPanelList(_ref) {\n var id = _ref.id,\n activeKey = _ref.activeKey,\n animated = _ref.animated,\n tabPosition = _ref.tabPosition,\n rtl = _ref.rtl,\n destroyInactiveTabPane = _ref.destroyInactiveTabPane;\n\n var _React$useContext = React.useContext(TabContext),\n prefixCls = _React$useContext.prefixCls,\n tabs = _React$useContext.tabs;\n\n var tabPaneAnimated = animated.tabPane;\n var activeIndex = tabs.findIndex(function (tab) {\n return tab.key === activeKey;\n });\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-content-holder\"))\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-content\"), \"\".concat(prefixCls, \"-content-\").concat(tabPosition), _defineProperty({}, \"\".concat(prefixCls, \"-content-animated\"), tabPaneAnimated)),\n style: activeIndex && tabPaneAnimated ? _defineProperty({}, rtl ? 'marginRight' : 'marginLeft', \"-\".concat(activeIndex, \"00%\")) : null\n }, tabs.map(function (tab) {\n return /*#__PURE__*/React.cloneElement(tab.node, {\n key: tab.key,\n prefixCls: prefixCls,\n tabKey: tab.key,\n id: id,\n animated: tabPaneAnimated,\n active: tab.key === activeKey,\n destroyInactiveTabPane: destroyInactiveTabPane\n });\n })));\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nexport default function TabPane(_ref) {\n var prefixCls = _ref.prefixCls,\n forceRender = _ref.forceRender,\n className = _ref.className,\n style = _ref.style,\n id = _ref.id,\n active = _ref.active,\n animated = _ref.animated,\n destroyInactiveTabPane = _ref.destroyInactiveTabPane,\n tabKey = _ref.tabKey,\n children = _ref.children;\n\n var _React$useState = React.useState(forceRender),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n visited = _React$useState2[0],\n setVisited = _React$useState2[1];\n\n React.useEffect(function () {\n if (active) {\n setVisited(true);\n } else if (destroyInactiveTabPane) {\n setVisited(false);\n }\n }, [active, destroyInactiveTabPane]);\n var mergedStyle = {};\n\n if (!active) {\n if (animated) {\n mergedStyle.visibility = 'hidden';\n mergedStyle.height = 0;\n mergedStyle.overflowY = 'hidden';\n } else {\n mergedStyle.display = 'none';\n }\n }\n\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id && \"\".concat(id, \"-panel-\").concat(tabKey),\n role: \"tabpanel\",\n tabIndex: active ? 0 : -1,\n \"aria-labelledby\": id && \"\".concat(id, \"-tab-\").concat(tabKey),\n \"aria-hidden\": !active,\n style: _objectSpread(_objectSpread({}, mergedStyle), style),\n className: classNames(\"\".concat(prefixCls, \"-tabpane\"), active && \"\".concat(prefixCls, \"-tabpane-active\"), className)\n }, (active || visited || forceRender) && children);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// Accessibility https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Tab_Role\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport isMobile from \"rc-util/es/isMobile\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport TabNavList from './TabNavList';\nimport TabPanelList from './TabPanelList';\nimport TabPane from './TabPanelList/TabPane';\nimport TabContext from './TabContext';\n/**\n * Should added antd:\n * - type\n *\n * Removed:\n * - onNextClick\n * - onPrevClick\n * - keyboard\n */\n// Used for accessibility\n\nvar uuid = 0;\n\nfunction parseTabList(children) {\n return toArray(children).map(function (node) {\n if ( /*#__PURE__*/React.isValidElement(node)) {\n var key = node.key !== undefined ? String(node.key) : undefined;\n return _objectSpread(_objectSpread({\n key: key\n }, node.props), {}, {\n node: node\n });\n }\n\n return null;\n }).filter(function (tab) {\n return tab;\n });\n}\n\nfunction Tabs(_ref, ref) {\n var _classNames;\n\n var id = _ref.id,\n _ref$prefixCls = _ref.prefixCls,\n prefixCls = _ref$prefixCls === void 0 ? 'rc-tabs' : _ref$prefixCls,\n className = _ref.className,\n children = _ref.children,\n direction = _ref.direction,\n activeKey = _ref.activeKey,\n defaultActiveKey = _ref.defaultActiveKey,\n editable = _ref.editable,\n _ref$animated = _ref.animated,\n animated = _ref$animated === void 0 ? {\n inkBar: true,\n tabPane: false\n } : _ref$animated,\n _ref$tabPosition = _ref.tabPosition,\n tabPosition = _ref$tabPosition === void 0 ? 'top' : _ref$tabPosition,\n tabBarGutter = _ref.tabBarGutter,\n tabBarStyle = _ref.tabBarStyle,\n tabBarExtraContent = _ref.tabBarExtraContent,\n locale = _ref.locale,\n moreIcon = _ref.moreIcon,\n moreTransitionName = _ref.moreTransitionName,\n destroyInactiveTabPane = _ref.destroyInactiveTabPane,\n renderTabBar = _ref.renderTabBar,\n onChange = _ref.onChange,\n onTabClick = _ref.onTabClick,\n onTabScroll = _ref.onTabScroll,\n restProps = _objectWithoutProperties(_ref, [\"id\", \"prefixCls\", \"className\", \"children\", \"direction\", \"activeKey\", \"defaultActiveKey\", \"editable\", \"animated\", \"tabPosition\", \"tabBarGutter\", \"tabBarStyle\", \"tabBarExtraContent\", \"locale\", \"moreIcon\", \"moreTransitionName\", \"destroyInactiveTabPane\", \"renderTabBar\", \"onChange\", \"onTabClick\", \"onTabScroll\"]);\n\n var tabs = parseTabList(children);\n var rtl = direction === 'rtl';\n var mergedAnimated;\n\n if (animated === false) {\n mergedAnimated = {\n inkBar: false,\n tabPane: false\n };\n } else if (animated === true) {\n mergedAnimated = {\n inkBar: true,\n tabPane: true\n };\n } else {\n mergedAnimated = _objectSpread({\n inkBar: true,\n tabPane: false\n }, _typeof(animated) === 'object' ? animated : {});\n } // ======================== Mobile ========================\n\n\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n mobile = _useState2[0],\n setMobile = _useState2[1];\n\n useEffect(function () {\n // Only update on the client side\n setMobile(isMobile());\n }, []); // ====================== Active Key ======================\n\n var _useMergedState = useMergedState(function () {\n var _tabs$;\n\n return (_tabs$ = tabs[0]) === null || _tabs$ === void 0 ? void 0 : _tabs$.key;\n }, {\n value: activeKey,\n defaultValue: defaultActiveKey\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedActiveKey = _useMergedState2[0],\n setMergedActiveKey = _useMergedState2[1];\n\n var _useState3 = useState(function () {\n return tabs.findIndex(function (tab) {\n return tab.key === mergedActiveKey;\n });\n }),\n _useState4 = _slicedToArray(_useState3, 2),\n activeIndex = _useState4[0],\n setActiveIndex = _useState4[1]; // Reset active key if not exist anymore\n\n\n useEffect(function () {\n var newActiveIndex = tabs.findIndex(function (tab) {\n return tab.key === mergedActiveKey;\n });\n\n if (newActiveIndex === -1) {\n var _tabs$newActiveIndex;\n\n newActiveIndex = Math.max(0, Math.min(activeIndex, tabs.length - 1));\n setMergedActiveKey((_tabs$newActiveIndex = tabs[newActiveIndex]) === null || _tabs$newActiveIndex === void 0 ? void 0 : _tabs$newActiveIndex.key);\n }\n\n setActiveIndex(newActiveIndex);\n }, [tabs.map(function (tab) {\n return tab.key;\n }).join('_'), mergedActiveKey, activeIndex]); // ===================== Accessibility ====================\n\n var _useMergedState3 = useMergedState(null, {\n value: id\n }),\n _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n mergedId = _useMergedState4[0],\n setMergedId = _useMergedState4[1];\n\n var mergedTabPosition = tabPosition;\n\n if (mobile && !['left', 'right'].includes(tabPosition)) {\n mergedTabPosition = 'top';\n } // Async generate id to avoid ssr mapping failed\n\n\n useEffect(function () {\n if (!id) {\n setMergedId(\"rc-tabs-\".concat(process.env.NODE_ENV === 'test' ? 'test' : uuid));\n uuid += 1;\n }\n }, []); // ======================== Events ========================\n\n function onInternalTabClick(key, e) {\n onTabClick === null || onTabClick === void 0 ? void 0 : onTabClick(key, e);\n setMergedActiveKey(key);\n onChange === null || onChange === void 0 ? void 0 : onChange(key);\n } // ======================== Render ========================\n\n\n var sharedProps = {\n id: mergedId,\n activeKey: mergedActiveKey,\n animated: mergedAnimated,\n tabPosition: mergedTabPosition,\n rtl: rtl,\n mobile: mobile\n };\n var tabNavBar;\n\n var tabNavBarProps = _objectSpread(_objectSpread({}, sharedProps), {}, {\n editable: editable,\n locale: locale,\n moreIcon: moreIcon,\n moreTransitionName: moreTransitionName,\n tabBarGutter: tabBarGutter,\n onTabClick: onInternalTabClick,\n onTabScroll: onTabScroll,\n extra: tabBarExtraContent,\n style: tabBarStyle,\n panes: children\n });\n\n if (renderTabBar) {\n tabNavBar = renderTabBar(tabNavBarProps, TabNavList);\n } else {\n tabNavBar = /*#__PURE__*/React.createElement(TabNavList, Object.assign({}, tabNavBarProps));\n }\n\n return /*#__PURE__*/React.createElement(TabContext.Provider, {\n value: {\n tabs: tabs,\n prefixCls: prefixCls\n }\n }, /*#__PURE__*/React.createElement(\"div\", Object.assign({\n ref: ref,\n id: id,\n className: classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(mergedTabPosition), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-mobile\"), mobile), _defineProperty(_classNames, \"\".concat(prefixCls, \"-editable\"), editable), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), rtl), _classNames), className)\n }, restProps), tabNavBar, /*#__PURE__*/React.createElement(TabPanelList, Object.assign({\n destroyInactiveTabPane: destroyInactiveTabPane\n }, sharedProps, {\n animated: mergedAnimated\n }))));\n}\n\nvar ForwardTabs = /*#__PURE__*/React.forwardRef(Tabs);\nForwardTabs.TabPane = TabPane;\nexport default ForwardTabs;","import Tabs from './Tabs';\nimport TabPane from './TabPanelList/TabPane';\nexport { TabPane };\nexport default Tabs;","// Thanks to https://github.com/andreypopp/react-textarea-autosize/\n\n/**\n * calculateNodeHeight(uiTextNode, useCache = false)\n */\nvar HIDDEN_TEXTAREA_STYLE = \"\\n min-height:0 !important;\\n max-height:none !important;\\n height:0 !important;\\n visibility:hidden !important;\\n overflow:hidden !important;\\n position:absolute !important;\\n z-index:-1000 !important;\\n top:0 !important;\\n right:0 !important\\n\";\nvar SIZING_STYLE = ['letter-spacing', 'line-height', 'padding-top', 'padding-bottom', 'font-family', 'font-weight', 'font-size', 'font-variant', 'text-rendering', 'text-transform', 'width', 'text-indent', 'padding-left', 'padding-right', 'border-width', 'box-sizing'];\nvar computedStyleCache = {};\nvar hiddenTextarea;\nexport function calculateNodeStyling(node) {\n var useCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var nodeRef = node.getAttribute('id') || node.getAttribute('data-reactid') || node.getAttribute('name');\n\n if (useCache && computedStyleCache[nodeRef]) {\n return computedStyleCache[nodeRef];\n }\n\n var style = window.getComputedStyle(node);\n var boxSizing = style.getPropertyValue('box-sizing') || style.getPropertyValue('-moz-box-sizing') || style.getPropertyValue('-webkit-box-sizing');\n var paddingSize = parseFloat(style.getPropertyValue('padding-bottom')) + parseFloat(style.getPropertyValue('padding-top'));\n var borderSize = parseFloat(style.getPropertyValue('border-bottom-width')) + parseFloat(style.getPropertyValue('border-top-width'));\n var sizingStyle = SIZING_STYLE.map(function (name) {\n return \"\".concat(name, \":\").concat(style.getPropertyValue(name));\n }).join(';');\n var nodeInfo = {\n sizingStyle: sizingStyle,\n paddingSize: paddingSize,\n borderSize: borderSize,\n boxSizing: boxSizing\n };\n\n if (useCache && nodeRef) {\n computedStyleCache[nodeRef] = nodeInfo;\n }\n\n return nodeInfo;\n}\nexport default function calculateNodeHeight(uiTextNode) {\n var useCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var minRows = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var maxRows = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement('textarea');\n hiddenTextarea.setAttribute('tab-index', '-1');\n hiddenTextarea.setAttribute('aria-hidden', 'true');\n document.body.appendChild(hiddenTextarea);\n } // Fix wrap=\"off\" issue\n // https://github.com/ant-design/ant-design/issues/6577\n\n\n if (uiTextNode.getAttribute('wrap')) {\n hiddenTextarea.setAttribute('wrap', uiTextNode.getAttribute('wrap'));\n } else {\n hiddenTextarea.removeAttribute('wrap');\n } // Copy all CSS properties that have an impact on the height of the content in\n // the textbox\n\n\n var _calculateNodeStyling = calculateNodeStyling(uiTextNode, useCache),\n paddingSize = _calculateNodeStyling.paddingSize,\n borderSize = _calculateNodeStyling.borderSize,\n boxSizing = _calculateNodeStyling.boxSizing,\n sizingStyle = _calculateNodeStyling.sizingStyle; // Need to have the overflow attribute to hide the scrollbar otherwise\n // text-lines will not calculated properly as the shadow will technically be\n // narrower for content\n\n\n hiddenTextarea.setAttribute('style', \"\".concat(sizingStyle, \";\").concat(HIDDEN_TEXTAREA_STYLE));\n hiddenTextarea.value = uiTextNode.value || uiTextNode.placeholder || '';\n var minHeight = Number.MIN_SAFE_INTEGER;\n var maxHeight = Number.MAX_SAFE_INTEGER;\n var height = hiddenTextarea.scrollHeight;\n var overflowY;\n\n if (boxSizing === 'border-box') {\n // border-box: add border, since height = content + padding + border\n height += borderSize;\n } else if (boxSizing === 'content-box') {\n // remove padding, since height = content\n height -= paddingSize;\n }\n\n if (minRows !== null || maxRows !== null) {\n // measure height of a textarea with a single row\n hiddenTextarea.value = ' ';\n var singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;\n\n if (minRows !== null) {\n minHeight = singleRowHeight * minRows;\n\n if (boxSizing === 'border-box') {\n minHeight = minHeight + paddingSize + borderSize;\n }\n\n height = Math.max(minHeight, height);\n }\n\n if (maxRows !== null) {\n maxHeight = singleRowHeight * maxRows;\n\n if (boxSizing === 'border-box') {\n maxHeight = maxHeight + paddingSize + borderSize;\n }\n\n overflowY = height > maxHeight ? '' : 'hidden';\n height = Math.min(maxHeight, height);\n }\n }\n\n return {\n height: height,\n minHeight: minHeight,\n maxHeight: maxHeight,\n overflowY: overflowY,\n resize: 'none'\n };\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nimport ResizeObserver from 'rc-resize-observer';\nimport omit from 'omit.js';\nimport classNames from 'classnames';\nimport calculateNodeHeight from './calculateNodeHeight'; // eslint-disable-next-line @typescript-eslint/naming-convention\n\nvar RESIZE_STATUS;\n\n(function (RESIZE_STATUS) {\n RESIZE_STATUS[RESIZE_STATUS[\"NONE\"] = 0] = \"NONE\";\n RESIZE_STATUS[RESIZE_STATUS[\"RESIZING\"] = 1] = \"RESIZING\";\n RESIZE_STATUS[RESIZE_STATUS[\"RESIZED\"] = 2] = \"RESIZED\";\n})(RESIZE_STATUS || (RESIZE_STATUS = {}));\n\nvar ResizableTextArea = /*#__PURE__*/function (_React$Component) {\n _inherits(ResizableTextArea, _React$Component);\n\n var _super = _createSuper(ResizableTextArea);\n\n function ResizableTextArea(props) {\n var _this;\n\n _classCallCheck(this, ResizableTextArea);\n\n _this = _super.call(this, props);\n\n _this.saveTextArea = function (textArea) {\n _this.textArea = textArea;\n };\n\n _this.handleResize = function (size) {\n var resizeStatus = _this.state.resizeStatus;\n var _this$props = _this.props,\n autoSize = _this$props.autoSize,\n onResize = _this$props.onResize;\n\n if (resizeStatus !== RESIZE_STATUS.NONE) {\n return;\n }\n\n if (typeof onResize === 'function') {\n onResize(size);\n }\n\n if (autoSize) {\n _this.resizeOnNextFrame();\n }\n };\n\n _this.resizeOnNextFrame = function () {\n cancelAnimationFrame(_this.nextFrameActionId);\n _this.nextFrameActionId = requestAnimationFrame(_this.resizeTextarea);\n };\n\n _this.resizeTextarea = function () {\n var autoSize = _this.props.autoSize;\n\n if (!autoSize || !_this.textArea) {\n return;\n }\n\n var minRows = autoSize.minRows,\n maxRows = autoSize.maxRows;\n var textareaStyles = calculateNodeHeight(_this.textArea, false, minRows, maxRows);\n\n _this.setState({\n textareaStyles: textareaStyles,\n resizeStatus: RESIZE_STATUS.RESIZING\n }, function () {\n cancelAnimationFrame(_this.resizeFrameId);\n _this.resizeFrameId = requestAnimationFrame(function () {\n _this.setState({\n resizeStatus: RESIZE_STATUS.RESIZED\n }, function () {\n _this.resizeFrameId = requestAnimationFrame(function () {\n _this.setState({\n resizeStatus: RESIZE_STATUS.NONE\n });\n\n _this.fixFirefoxAutoScroll();\n });\n });\n });\n });\n };\n\n _this.renderTextArea = function () {\n var _this$props2 = _this.props,\n _this$props2$prefixCl = _this$props2.prefixCls,\n prefixCls = _this$props2$prefixCl === void 0 ? 'rc-textarea' : _this$props2$prefixCl,\n autoSize = _this$props2.autoSize,\n onResize = _this$props2.onResize,\n className = _this$props2.className,\n disabled = _this$props2.disabled;\n var _this$state = _this.state,\n textareaStyles = _this$state.textareaStyles,\n resizeStatus = _this$state.resizeStatus;\n var otherProps = omit(_this.props, ['prefixCls', 'onPressEnter', 'autoSize', 'defaultValue', 'onResize']);\n var cls = classNames(prefixCls, className, _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled)); // Fix https://github.com/ant-design/ant-design/issues/6776\n // Make sure it could be reset when using form.getFieldDecorator\n\n if ('value' in otherProps) {\n otherProps.value = otherProps.value || '';\n }\n\n var style = _objectSpread(_objectSpread(_objectSpread({}, _this.props.style), textareaStyles), resizeStatus === RESIZE_STATUS.RESIZING ? // React will warning when mix `overflow` & `overflowY`.\n // We need to define this separately.\n {\n overflowX: 'hidden',\n overflowY: 'hidden'\n } : null);\n\n return /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: _this.handleResize,\n disabled: !(autoSize || onResize)\n }, /*#__PURE__*/React.createElement(\"textarea\", Object.assign({}, otherProps, {\n className: cls,\n style: style,\n ref: _this.saveTextArea\n })));\n };\n\n _this.state = {\n textareaStyles: {},\n resizeStatus: RESIZE_STATUS.NONE\n };\n return _this;\n }\n\n _createClass(ResizableTextArea, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.resizeTextarea();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n // Re-render with the new content then recalculate the height as required.\n if (prevProps.value !== this.props.value) {\n this.resizeTextarea();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n cancelAnimationFrame(this.nextFrameActionId);\n cancelAnimationFrame(this.resizeFrameId);\n } // https://github.com/ant-design/ant-design/issues/21870\n\n }, {\n key: \"fixFirefoxAutoScroll\",\n value: function fixFirefoxAutoScroll() {\n try {\n if (document.activeElement === this.textArea) {\n var currentStart = this.textArea.selectionStart;\n var currentEnd = this.textArea.selectionEnd;\n this.textArea.setSelectionRange(currentStart, currentEnd);\n }\n } catch (e) {// Fix error in Chrome:\n // Failed to read the 'selectionStart' property from 'HTMLInputElement'\n // http://stackoverflow.com/q/21177489/3040605\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return this.renderTextArea();\n }\n }]);\n\n return ResizableTextArea;\n}(React.Component);\n\nexport default ResizableTextArea;","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nimport ResizableTextArea from './ResizableTextArea';\n\nvar TextArea = /*#__PURE__*/function (_React$Component) {\n _inherits(TextArea, _React$Component);\n\n var _super = _createSuper(TextArea);\n\n function TextArea(props) {\n var _this;\n\n _classCallCheck(this, TextArea);\n\n _this = _super.call(this, props);\n\n _this.focus = function () {\n _this.resizableTextArea.textArea.focus();\n };\n\n _this.saveTextArea = function (resizableTextArea) {\n _this.resizableTextArea = resizableTextArea;\n };\n\n _this.handleChange = function (e) {\n var onChange = _this.props.onChange;\n\n _this.setValue(e.target.value, function () {\n _this.resizableTextArea.resizeTextarea();\n });\n\n if (onChange) {\n onChange(e);\n }\n };\n\n _this.handleKeyDown = function (e) {\n var _this$props = _this.props,\n onPressEnter = _this$props.onPressEnter,\n onKeyDown = _this$props.onKeyDown;\n\n if (e.keyCode === 13 && onPressEnter) {\n onPressEnter(e);\n }\n\n if (onKeyDown) {\n onKeyDown(e);\n }\n };\n\n var value = typeof props.value === 'undefined' || props.value === null ? props.defaultValue : props.value;\n _this.state = {\n value: value\n };\n return _this;\n }\n\n _createClass(TextArea, [{\n key: \"setValue\",\n value: function setValue(value, callback) {\n if (!('value' in this.props)) {\n this.setState({\n value: value\n }, callback);\n }\n }\n }, {\n key: \"blur\",\n value: function blur() {\n this.resizableTextArea.textArea.blur();\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(ResizableTextArea, Object.assign({}, this.props, {\n value: this.state.value,\n onKeyDown: this.handleKeyDown,\n onChange: this.handleChange,\n ref: this.saveTextArea\n }));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps) {\n if ('value' in nextProps) {\n return {\n value: nextProps.value\n };\n }\n\n return null;\n }\n }]);\n\n return TextArea;\n}(React.Component);\n\nexport { ResizableTextArea };\nexport default TextArea;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n\nfunction isPointsEq(a1, a2, isAlignPoint) {\n if (isAlignPoint) {\n return a1[0] === a2[0];\n }\n\n return a1[0] === a2[0] && a1[1] === a2[1];\n}\n\nexport function getAlignFromPlacement(builtinPlacements, placementStr, align) {\n var baseAlign = builtinPlacements[placementStr] || {};\n return _objectSpread(_objectSpread({}, baseAlign), align);\n}\nexport function getAlignPopupClassName(builtinPlacements, prefixCls, align, isAlignPoint) {\n var points = align.points;\n var placements = Object.keys(builtinPlacements);\n\n for (var i = 0; i < placements.length; i += 1) {\n var placement = placements[i];\n\n if (isPointsEq(builtinPlacements[placement].points, points, isAlignPoint)) {\n return \"\".concat(prefixCls, \"-placement-\").concat(placement);\n }\n }\n\n return '';\n}","export function getMotion(_ref) {\n var prefixCls = _ref.prefixCls,\n motion = _ref.motion,\n animation = _ref.animation,\n transitionName = _ref.transitionName;\n\n if (motion) {\n return motion;\n }\n\n if (animation) {\n return {\n motionName: \"\".concat(prefixCls, \"-\").concat(animation)\n };\n }\n\n if (transitionName) {\n return {\n motionName: transitionName\n };\n }\n\n return null;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport { getMotion } from \"../utils/legacyUtil\";\nexport default function Mask(props) {\n var prefixCls = props.prefixCls,\n visible = props.visible,\n zIndex = props.zIndex,\n mask = props.mask,\n maskMotion = props.maskMotion,\n maskAnimation = props.maskAnimation,\n maskTransitionName = props.maskTransitionName;\n\n if (!mask) {\n return null;\n }\n\n var motion = {};\n\n if (maskMotion || maskTransitionName || maskAnimation) {\n motion = _objectSpread({\n motionAppear: true\n }, getMotion({\n motion: maskMotion,\n prefixCls: prefixCls,\n transitionName: maskTransitionName,\n animation: maskAnimation\n }));\n }\n\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({}, motion, {\n visible: visible,\n removeOnLeave: true\n }), function (_ref) {\n var className = _ref.className;\n return /*#__PURE__*/React.createElement(\"div\", {\n style: {\n zIndex: zIndex\n },\n className: classNames(\"\".concat(prefixCls, \"-mask\"), className)\n });\n });\n}","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (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 _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 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\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\nvar vendorPrefix;\nvar jsCssMap = {\n Webkit: '-webkit-',\n Moz: '-moz-',\n // IE did it wrong again ...\n ms: '-ms-',\n O: '-o-'\n};\n\nfunction getVendorPrefix() {\n if (vendorPrefix !== undefined) {\n return vendorPrefix;\n }\n\n vendorPrefix = '';\n var style = document.createElement('p').style;\n var testProp = 'Transform';\n\n for (var key in jsCssMap) {\n if (key + testProp in style) {\n vendorPrefix = key;\n }\n }\n\n return vendorPrefix;\n}\n\nfunction getTransitionName() {\n return getVendorPrefix() ? \"\".concat(getVendorPrefix(), \"TransitionProperty\") : 'transitionProperty';\n}\n\nfunction getTransformName() {\n return getVendorPrefix() ? \"\".concat(getVendorPrefix(), \"Transform\") : 'transform';\n}\nfunction setTransitionProperty(node, value) {\n var name = getTransitionName();\n\n if (name) {\n node.style[name] = value;\n\n if (name !== 'transitionProperty') {\n node.style.transitionProperty = value;\n }\n }\n}\n\nfunction setTransform(node, value) {\n var name = getTransformName();\n\n if (name) {\n node.style[name] = value;\n\n if (name !== 'transform') {\n node.style.transform = value;\n }\n }\n}\n\nfunction getTransitionProperty(node) {\n return node.style.transitionProperty || node.style[getTransitionName()];\n}\nfunction getTransformXY(node) {\n var style = window.getComputedStyle(node, null);\n var transform = style.getPropertyValue('transform') || style.getPropertyValue(getTransformName());\n\n if (transform && transform !== 'none') {\n var matrix = transform.replace(/[^0-9\\-.,]/g, '').split(',');\n return {\n x: parseFloat(matrix[12] || matrix[4], 0),\n y: parseFloat(matrix[13] || matrix[5], 0)\n };\n }\n\n return {\n x: 0,\n y: 0\n };\n}\nvar matrix2d = /matrix\\((.*)\\)/;\nvar matrix3d = /matrix3d\\((.*)\\)/;\nfunction setTransformXY(node, xy) {\n var style = window.getComputedStyle(node, null);\n var transform = style.getPropertyValue('transform') || style.getPropertyValue(getTransformName());\n\n if (transform && transform !== 'none') {\n var arr;\n var match2d = transform.match(matrix2d);\n\n if (match2d) {\n match2d = match2d[1];\n arr = match2d.split(',').map(function (item) {\n return parseFloat(item, 10);\n });\n arr[4] = xy.x;\n arr[5] = xy.y;\n setTransform(node, \"matrix(\".concat(arr.join(','), \")\"));\n } else {\n var match3d = transform.match(matrix3d)[1];\n arr = match3d.split(',').map(function (item) {\n return parseFloat(item, 10);\n });\n arr[12] = xy.x;\n arr[13] = xy.y;\n setTransform(node, \"matrix3d(\".concat(arr.join(','), \")\"));\n }\n } else {\n setTransform(node, \"translateX(\".concat(xy.x, \"px) translateY(\").concat(xy.y, \"px) translateZ(0)\"));\n }\n}\n\nvar RE_NUM = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source;\nvar getComputedStyleX; // https://stackoverflow.com/a/3485654/3040605\n\nfunction forceRelayout(elem) {\n var originalStyle = elem.style.display;\n elem.style.display = 'none';\n elem.offsetHeight; // eslint-disable-line\n\n elem.style.display = originalStyle;\n}\n\nfunction css(el, name, v) {\n var value = v;\n\n if (_typeof(name) === 'object') {\n for (var i in name) {\n if (name.hasOwnProperty(i)) {\n css(el, i, name[i]);\n }\n }\n\n return undefined;\n }\n\n if (typeof value !== 'undefined') {\n if (typeof value === 'number') {\n value = \"\".concat(value, \"px\");\n }\n\n el.style[name] = value;\n return undefined;\n }\n\n return getComputedStyleX(el, name);\n}\n\nfunction getClientPosition(elem) {\n var box;\n var x;\n var y;\n var doc = elem.ownerDocument;\n var body = doc.body;\n var docElem = doc && doc.documentElement; // 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式\n\n box = elem.getBoundingClientRect(); // 注:jQuery 还考虑减去 docElem.clientLeft/clientTop\n // 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确\n // 此外,ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin\n\n x = box.left;\n y = box.top; // In IE, most of the time, 2 extra pixels are added to the top and left\n // due to the implicit 2-pixel inset border. In IE6/7 quirks mode and\n // IE6 standards mode, this border can be overridden by setting the\n // document element's border to zero -- thus, we cannot rely on the\n // offset always being 2 pixels.\n // In quirks mode, the offset can be determined by querying the body's\n // clientLeft/clientTop, but in standards mode, it is found by querying\n // the document element's clientLeft/clientTop. Since we already called\n // getClientBoundingRect we have already forced a reflow, so it is not\n // too expensive just to query them all.\n // ie 下应该减去窗口的边框吧,毕竟默认 absolute 都是相对窗口定位的\n // 窗口边框标准是设 documentElement ,quirks 时设置 body\n // 最好禁止在 body 和 html 上边框 ,但 ie < 9 html 默认有 2px ,减去\n // 但是非 ie 不可能设置窗口边框,body html 也不是窗口 ,ie 可以通过 html,body 设置\n // 标准 ie 下 docElem.clientTop 就是 border-top\n // ie7 html 即窗口边框改变不了。永远为 2\n // 但标准 firefox/chrome/ie9 下 docElem.clientTop 是窗口边框,即使设了 border-top 也为 0\n\n x -= docElem.clientLeft || body.clientLeft || 0;\n y -= docElem.clientTop || body.clientTop || 0;\n return {\n left: x,\n top: y\n };\n}\n\nfunction getScroll(w, top) {\n var ret = w[\"page\".concat(top ? 'Y' : 'X', \"Offset\")];\n var method = \"scroll\".concat(top ? 'Top' : 'Left');\n\n if (typeof ret !== 'number') {\n var d = w.document; // ie6,7,8 standard mode\n\n ret = d.documentElement[method];\n\n if (typeof ret !== 'number') {\n // quirks mode\n ret = d.body[method];\n }\n }\n\n return ret;\n}\n\nfunction getScrollLeft(w) {\n return getScroll(w);\n}\n\nfunction getScrollTop(w) {\n return getScroll(w, true);\n}\n\nfunction getOffset(el) {\n var pos = getClientPosition(el);\n var doc = el.ownerDocument;\n var w = doc.defaultView || doc.parentWindow;\n pos.left += getScrollLeft(w);\n pos.top += getScrollTop(w);\n return pos;\n}\n/**\n * A crude way of determining if an object is a window\n * @member util\n */\n\n\nfunction isWindow(obj) {\n // must use == for ie8\n\n /* eslint eqeqeq:0 */\n return obj !== null && obj !== undefined && obj == obj.window;\n}\n\nfunction getDocument(node) {\n if (isWindow(node)) {\n return node.document;\n }\n\n if (node.nodeType === 9) {\n return node;\n }\n\n return node.ownerDocument;\n}\n\nfunction _getComputedStyle(elem, name, cs) {\n var computedStyle = cs;\n var val = '';\n var d = getDocument(elem);\n computedStyle = computedStyle || d.defaultView.getComputedStyle(elem, null); // https://github.com/kissyteam/kissy/issues/61\n\n if (computedStyle) {\n val = computedStyle.getPropertyValue(name) || computedStyle[name];\n }\n\n return val;\n}\n\nvar _RE_NUM_NO_PX = new RegExp(\"^(\".concat(RE_NUM, \")(?!px)[a-z%]+$\"), 'i');\n\nvar RE_POS = /^(top|right|bottom|left)$/;\nvar CURRENT_STYLE = 'currentStyle';\nvar RUNTIME_STYLE = 'runtimeStyle';\nvar LEFT = 'left';\nvar PX = 'px';\n\nfunction _getComputedStyleIE(elem, name) {\n // currentStyle maybe null\n // http://msdn.microsoft.com/en-us/library/ms535231.aspx\n var ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name]; // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值\n // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19\n // 在 ie 下不对,需要直接用 offset 方式\n // borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了\n // From the awesome hack by Dean Edwards\n // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n // If we're not dealing with a regular pixel number\n // but a number that has a weird ending, we need to convert it to pixels\n // exclude left right for relativity\n\n if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {\n // Remember the original values\n var style = elem.style;\n var left = style[LEFT];\n var rsLeft = elem[RUNTIME_STYLE][LEFT]; // prevent flashing of content\n\n elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT]; // Put in the new values to get a computed value out\n\n style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;\n ret = style.pixelLeft + PX; // Revert the changed values\n\n style[LEFT] = left;\n elem[RUNTIME_STYLE][LEFT] = rsLeft;\n }\n\n return ret === '' ? 'auto' : ret;\n}\n\nif (typeof window !== 'undefined') {\n getComputedStyleX = window.getComputedStyle ? _getComputedStyle : _getComputedStyleIE;\n}\n\nfunction getOffsetDirection(dir, option) {\n if (dir === 'left') {\n return option.useCssRight ? 'right' : dir;\n }\n\n return option.useCssBottom ? 'bottom' : dir;\n}\n\nfunction oppositeOffsetDirection(dir) {\n if (dir === 'left') {\n return 'right';\n } else if (dir === 'right') {\n return 'left';\n } else if (dir === 'top') {\n return 'bottom';\n } else if (dir === 'bottom') {\n return 'top';\n }\n} // 设置 elem 相对 elem.ownerDocument 的坐标\n\n\nfunction setLeftTop(elem, offset, option) {\n // set position first, in-case top/left are set even on static elem\n if (css(elem, 'position') === 'static') {\n elem.style.position = 'relative';\n }\n\n var presetH = -999;\n var presetV = -999;\n var horizontalProperty = getOffsetDirection('left', option);\n var verticalProperty = getOffsetDirection('top', option);\n var oppositeHorizontalProperty = oppositeOffsetDirection(horizontalProperty);\n var oppositeVerticalProperty = oppositeOffsetDirection(verticalProperty);\n\n if (horizontalProperty !== 'left') {\n presetH = 999;\n }\n\n if (verticalProperty !== 'top') {\n presetV = 999;\n }\n\n var originalTransition = '';\n var originalOffset = getOffset(elem);\n\n if ('left' in offset || 'top' in offset) {\n originalTransition = getTransitionProperty(elem) || '';\n setTransitionProperty(elem, 'none');\n }\n\n if ('left' in offset) {\n elem.style[oppositeHorizontalProperty] = '';\n elem.style[horizontalProperty] = \"\".concat(presetH, \"px\");\n }\n\n if ('top' in offset) {\n elem.style[oppositeVerticalProperty] = '';\n elem.style[verticalProperty] = \"\".concat(presetV, \"px\");\n } // force relayout\n\n\n forceRelayout(elem);\n var old = getOffset(elem);\n var originalStyle = {};\n\n for (var key in offset) {\n if (offset.hasOwnProperty(key)) {\n var dir = getOffsetDirection(key, option);\n var preset = key === 'left' ? presetH : presetV;\n var off = originalOffset[key] - old[key];\n\n if (dir === key) {\n originalStyle[dir] = preset + off;\n } else {\n originalStyle[dir] = preset - off;\n }\n }\n }\n\n css(elem, originalStyle); // force relayout\n\n forceRelayout(elem);\n\n if ('left' in offset || 'top' in offset) {\n setTransitionProperty(elem, originalTransition);\n }\n\n var ret = {};\n\n for (var _key in offset) {\n if (offset.hasOwnProperty(_key)) {\n var _dir = getOffsetDirection(_key, option);\n\n var _off = offset[_key] - originalOffset[_key];\n\n if (_key === _dir) {\n ret[_dir] = originalStyle[_dir] + _off;\n } else {\n ret[_dir] = originalStyle[_dir] - _off;\n }\n }\n }\n\n css(elem, ret);\n}\n\nfunction setTransform$1(elem, offset) {\n var originalOffset = getOffset(elem);\n var originalXY = getTransformXY(elem);\n var resultXY = {\n x: originalXY.x,\n y: originalXY.y\n };\n\n if ('left' in offset) {\n resultXY.x = originalXY.x + offset.left - originalOffset.left;\n }\n\n if ('top' in offset) {\n resultXY.y = originalXY.y + offset.top - originalOffset.top;\n }\n\n setTransformXY(elem, resultXY);\n}\n\nfunction setOffset(elem, offset, option) {\n if (option.ignoreShake) {\n var oriOffset = getOffset(elem);\n var oLeft = oriOffset.left.toFixed(0);\n var oTop = oriOffset.top.toFixed(0);\n var tLeft = offset.left.toFixed(0);\n var tTop = offset.top.toFixed(0);\n\n if (oLeft === tLeft && oTop === tTop) {\n return;\n }\n }\n\n if (option.useCssRight || option.useCssBottom) {\n setLeftTop(elem, offset, option);\n } else if (option.useCssTransform && getTransformName() in document.body.style) {\n setTransform$1(elem, offset);\n } else {\n setLeftTop(elem, offset, option);\n }\n}\n\nfunction each(arr, fn) {\n for (var i = 0; i < arr.length; i++) {\n fn(arr[i]);\n }\n}\n\nfunction isBorderBoxFn(elem) {\n return getComputedStyleX(elem, 'boxSizing') === 'border-box';\n}\n\nvar BOX_MODELS = ['margin', 'border', 'padding'];\nvar CONTENT_INDEX = -1;\nvar PADDING_INDEX = 2;\nvar BORDER_INDEX = 1;\nvar MARGIN_INDEX = 0;\n\nfunction swap(elem, options, callback) {\n var old = {};\n var style = elem.style;\n var name; // Remember the old values, and insert the new ones\n\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n old[name] = style[name];\n style[name] = options[name];\n }\n }\n\n callback.call(elem); // Revert the old values\n\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n style[name] = old[name];\n }\n }\n}\n\nfunction getPBMWidth(elem, props, which) {\n var value = 0;\n var prop;\n var j;\n var i;\n\n for (j = 0; j < props.length; j++) {\n prop = props[j];\n\n if (prop) {\n for (i = 0; i < which.length; i++) {\n var cssProp = void 0;\n\n if (prop === 'border') {\n cssProp = \"\".concat(prop).concat(which[i], \"Width\");\n } else {\n cssProp = prop + which[i];\n }\n\n value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;\n }\n }\n }\n\n return value;\n}\n\nvar domUtils = {\n getParent: function getParent(element) {\n var parent = element;\n\n do {\n if (parent.nodeType === 11 && parent.host) {\n parent = parent.host;\n } else {\n parent = parent.parentNode;\n }\n } while (parent && parent.nodeType !== 1 && parent.nodeType !== 9);\n\n return parent;\n }\n};\neach(['Width', 'Height'], function (name) {\n domUtils[\"doc\".concat(name)] = function (refWin) {\n var d = refWin.document;\n return Math.max( // firefox chrome documentElement.scrollHeight< body.scrollHeight\n // ie standard mode : documentElement.scrollHeight> body.scrollHeight\n d.documentElement[\"scroll\".concat(name)], // quirks : documentElement.scrollHeight 最大等于可视窗口多一点?\n d.body[\"scroll\".concat(name)], domUtils[\"viewport\".concat(name)](d));\n };\n\n domUtils[\"viewport\".concat(name)] = function (win) {\n // pc browser includes scrollbar in window.innerWidth\n var prop = \"client\".concat(name);\n var doc = win.document;\n var body = doc.body;\n var documentElement = doc.documentElement;\n var documentElementProp = documentElement[prop]; // 标准模式取 documentElement\n // backcompat 取 body\n\n return doc.compatMode === 'CSS1Compat' && documentElementProp || body && body[prop] || documentElementProp;\n };\n});\n/*\n 得到元素的大小信息\n @param elem\n @param name\n @param {String} [extra] 'padding' : (css width) + padding\n 'border' : (css width) + padding + border\n 'margin' : (css width) + padding + border + margin\n */\n\nfunction getWH(elem, name, ex) {\n var extra = ex;\n\n if (isWindow(elem)) {\n return name === 'width' ? domUtils.viewportWidth(elem) : domUtils.viewportHeight(elem);\n } else if (elem.nodeType === 9) {\n return name === 'width' ? domUtils.docWidth(elem) : domUtils.docHeight(elem);\n }\n\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n var borderBoxValue = name === 'width' ? elem.getBoundingClientRect().width : elem.getBoundingClientRect().height;\n var computedStyle = getComputedStyleX(elem);\n var isBorderBox = isBorderBoxFn(elem);\n var cssBoxValue = 0;\n\n if (borderBoxValue === null || borderBoxValue === undefined || borderBoxValue <= 0) {\n borderBoxValue = undefined; // Fall back to computed then un computed css if necessary\n\n cssBoxValue = getComputedStyleX(elem, name);\n\n if (cssBoxValue === null || cssBoxValue === undefined || Number(cssBoxValue) < 0) {\n cssBoxValue = elem.style[name] || 0;\n } // Normalize '', auto, and prepare for extra\n\n\n cssBoxValue = parseFloat(cssBoxValue) || 0;\n }\n\n if (extra === undefined) {\n extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;\n }\n\n var borderBoxValueOrIsBorderBox = borderBoxValue !== undefined || isBorderBox;\n var val = borderBoxValue || cssBoxValue;\n\n if (extra === CONTENT_INDEX) {\n if (borderBoxValueOrIsBorderBox) {\n return val - getPBMWidth(elem, ['border', 'padding'], which);\n }\n\n return cssBoxValue;\n } else if (borderBoxValueOrIsBorderBox) {\n if (extra === BORDER_INDEX) {\n return val;\n }\n\n return val + (extra === PADDING_INDEX ? -getPBMWidth(elem, ['border'], which) : getPBMWidth(elem, ['margin'], which));\n }\n\n return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which);\n}\n\nvar cssShow = {\n position: 'absolute',\n visibility: 'hidden',\n display: 'block'\n}; // fix #119 : https://github.com/kissyteam/kissy/issues/119\n\nfunction getWHIgnoreDisplay() {\n for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var val;\n var elem = args[0]; // in case elem is window\n // elem.offsetWidth === undefined\n\n if (elem.offsetWidth !== 0) {\n val = getWH.apply(undefined, args);\n } else {\n swap(elem, cssShow, function () {\n val = getWH.apply(undefined, args);\n });\n }\n\n return val;\n}\n\neach(['width', 'height'], function (name) {\n var first = name.charAt(0).toUpperCase() + name.slice(1);\n\n domUtils[\"outer\".concat(first)] = function (el, includeMargin) {\n return el && getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX);\n };\n\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n\n domUtils[name] = function (elem, v) {\n var val = v;\n\n if (val !== undefined) {\n if (elem) {\n var computedStyle = getComputedStyleX(elem);\n var isBorderBox = isBorderBoxFn(elem);\n\n if (isBorderBox) {\n val += getPBMWidth(elem, ['padding', 'border'], which);\n }\n\n return css(elem, name, val);\n }\n\n return undefined;\n }\n\n return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);\n };\n});\n\nfunction mix(to, from) {\n for (var i in from) {\n if (from.hasOwnProperty(i)) {\n to[i] = from[i];\n }\n }\n\n return to;\n}\n\nvar utils = {\n getWindow: function getWindow(node) {\n if (node && node.document && node.setTimeout) {\n return node;\n }\n\n var doc = node.ownerDocument || node;\n return doc.defaultView || doc.parentWindow;\n },\n getDocument: getDocument,\n offset: function offset(el, value, option) {\n if (typeof value !== 'undefined') {\n setOffset(el, value, option || {});\n } else {\n return getOffset(el);\n }\n },\n isWindow: isWindow,\n each: each,\n css: css,\n clone: function clone(obj) {\n var i;\n var ret = {};\n\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret[i] = obj[i];\n }\n }\n\n var overflow = obj.overflow;\n\n if (overflow) {\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret.overflow[i] = obj.overflow[i];\n }\n }\n }\n\n return ret;\n },\n mix: mix,\n getWindowScrollLeft: function getWindowScrollLeft(w) {\n return getScrollLeft(w);\n },\n getWindowScrollTop: function getWindowScrollTop(w) {\n return getScrollTop(w);\n },\n merge: function merge() {\n var ret = {};\n\n for (var i = 0; i < arguments.length; i++) {\n utils.mix(ret, i < 0 || arguments.length <= i ? undefined : arguments[i]);\n }\n\n return ret;\n },\n viewportWidth: 0,\n viewportHeight: 0\n};\nmix(utils, domUtils);\n\n/**\n * 得到会导致元素显示不全的祖先元素\n */\n\nvar getParent = utils.getParent;\n\nfunction getOffsetParent(element) {\n if (utils.isWindow(element) || element.nodeType === 9) {\n return null;\n } // ie 这个也不是完全可行\n\n /*\n
    \n
    \n 元素 6 高 100px 宽 50px
    \n
    \n
    \n */\n // element.offsetParent does the right thing in ie7 and below. Return parent with layout!\n // In other browsers it only includes elements with position absolute, relative or\n // fixed, not elements with overflow set to auto or scroll.\n // if (UA.ie && ieMode < 8) {\n // return element.offsetParent;\n // }\n // 统一的 offsetParent 方法\n\n\n var doc = utils.getDocument(element);\n var body = doc.body;\n var parent;\n var positionStyle = utils.css(element, 'position');\n var skipStatic = positionStyle === 'fixed' || positionStyle === 'absolute';\n\n if (!skipStatic) {\n return element.nodeName.toLowerCase() === 'html' ? null : getParent(element);\n }\n\n for (parent = getParent(element); parent && parent !== body && parent.nodeType !== 9; parent = getParent(parent)) {\n positionStyle = utils.css(parent, 'position');\n\n if (positionStyle !== 'static') {\n return parent;\n }\n }\n\n return null;\n}\n\nvar getParent$1 = utils.getParent;\nfunction isAncestorFixed(element) {\n if (utils.isWindow(element) || element.nodeType === 9) {\n return false;\n }\n\n var doc = utils.getDocument(element);\n var body = doc.body;\n var parent = null;\n\n for (parent = getParent$1(element); parent && parent !== body; parent = getParent$1(parent)) {\n var positionStyle = utils.css(parent, 'position');\n\n if (positionStyle === 'fixed') {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * 获得元素的显示部分的区域\n */\n\nfunction getVisibleRectForElement(element, alwaysByViewport) {\n var visibleRect = {\n left: 0,\n right: Infinity,\n top: 0,\n bottom: Infinity\n };\n var el = getOffsetParent(element);\n var doc = utils.getDocument(element);\n var win = doc.defaultView || doc.parentWindow;\n var body = doc.body;\n var documentElement = doc.documentElement; // Determine the size of the visible rect by climbing the dom accounting for\n // all scrollable containers.\n\n while (el) {\n // clientWidth is zero for inline block elements in ie.\n if ((navigator.userAgent.indexOf('MSIE') === -1 || el.clientWidth !== 0) && // body may have overflow set on it, yet we still get the entire\n // viewport. In some browsers, el.offsetParent may be\n // document.documentElement, so check for that too.\n el !== body && el !== documentElement && utils.css(el, 'overflow') !== 'visible') {\n var pos = utils.offset(el); // add border\n\n pos.left += el.clientLeft;\n pos.top += el.clientTop;\n visibleRect.top = Math.max(visibleRect.top, pos.top);\n visibleRect.right = Math.min(visibleRect.right, // consider area without scrollBar\n pos.left + el.clientWidth);\n visibleRect.bottom = Math.min(visibleRect.bottom, pos.top + el.clientHeight);\n visibleRect.left = Math.max(visibleRect.left, pos.left);\n } else if (el === body || el === documentElement) {\n break;\n }\n\n el = getOffsetParent(el);\n } // Set element position to fixed\n // make sure absolute element itself don't affect it's visible area\n // https://github.com/ant-design/ant-design/issues/7601\n\n\n var originalPosition = null;\n\n if (!utils.isWindow(element) && element.nodeType !== 9) {\n originalPosition = element.style.position;\n var position = utils.css(element, 'position');\n\n if (position === 'absolute') {\n element.style.position = 'fixed';\n }\n }\n\n var scrollX = utils.getWindowScrollLeft(win);\n var scrollY = utils.getWindowScrollTop(win);\n var viewportWidth = utils.viewportWidth(win);\n var viewportHeight = utils.viewportHeight(win);\n var documentWidth = documentElement.scrollWidth;\n var documentHeight = documentElement.scrollHeight; // scrollXXX on html is sync with body which means overflow: hidden on body gets wrong scrollXXX.\n // We should cut this ourself.\n\n var bodyStyle = window.getComputedStyle(body);\n\n if (bodyStyle.overflowX === 'hidden') {\n documentWidth = win.innerWidth;\n }\n\n if (bodyStyle.overflowY === 'hidden') {\n documentHeight = win.innerHeight;\n } // Reset element position after calculate the visible area\n\n\n if (element.style) {\n element.style.position = originalPosition;\n }\n\n if (alwaysByViewport || isAncestorFixed(element)) {\n // Clip by viewport's size.\n visibleRect.left = Math.max(visibleRect.left, scrollX);\n visibleRect.top = Math.max(visibleRect.top, scrollY);\n visibleRect.right = Math.min(visibleRect.right, scrollX + viewportWidth);\n visibleRect.bottom = Math.min(visibleRect.bottom, scrollY + viewportHeight);\n } else {\n // Clip by document's size.\n var maxVisibleWidth = Math.max(documentWidth, scrollX + viewportWidth);\n visibleRect.right = Math.min(visibleRect.right, maxVisibleWidth);\n var maxVisibleHeight = Math.max(documentHeight, scrollY + viewportHeight);\n visibleRect.bottom = Math.min(visibleRect.bottom, maxVisibleHeight);\n }\n\n return visibleRect.top >= 0 && visibleRect.left >= 0 && visibleRect.bottom > visibleRect.top && visibleRect.right > visibleRect.left ? visibleRect : null;\n}\n\nfunction adjustForViewport(elFuturePos, elRegion, visibleRect, overflow) {\n var pos = utils.clone(elFuturePos);\n var size = {\n width: elRegion.width,\n height: elRegion.height\n };\n\n if (overflow.adjustX && pos.left < visibleRect.left) {\n pos.left = visibleRect.left;\n } // Left edge inside and right edge outside viewport, try to resize it.\n\n\n if (overflow.resizeWidth && pos.left >= visibleRect.left && pos.left + size.width > visibleRect.right) {\n size.width -= pos.left + size.width - visibleRect.right;\n } // Right edge outside viewport, try to move it.\n\n\n if (overflow.adjustX && pos.left + size.width > visibleRect.right) {\n // 保证左边界和可视区域左边界对齐\n pos.left = Math.max(visibleRect.right - size.width, visibleRect.left);\n } // Top edge outside viewport, try to move it.\n\n\n if (overflow.adjustY && pos.top < visibleRect.top) {\n pos.top = visibleRect.top;\n } // Top edge inside and bottom edge outside viewport, try to resize it.\n\n\n if (overflow.resizeHeight && pos.top >= visibleRect.top && pos.top + size.height > visibleRect.bottom) {\n size.height -= pos.top + size.height - visibleRect.bottom;\n } // Bottom edge outside viewport, try to move it.\n\n\n if (overflow.adjustY && pos.top + size.height > visibleRect.bottom) {\n // 保证上边界和可视区域上边界对齐\n pos.top = Math.max(visibleRect.bottom - size.height, visibleRect.top);\n }\n\n return utils.mix(pos, size);\n}\n\nfunction getRegion(node) {\n var offset;\n var w;\n var h;\n\n if (!utils.isWindow(node) && node.nodeType !== 9) {\n offset = utils.offset(node);\n w = utils.outerWidth(node);\n h = utils.outerHeight(node);\n } else {\n var win = utils.getWindow(node);\n offset = {\n left: utils.getWindowScrollLeft(win),\n top: utils.getWindowScrollTop(win)\n };\n w = utils.viewportWidth(win);\n h = utils.viewportHeight(win);\n }\n\n offset.width = w;\n offset.height = h;\n return offset;\n}\n\n/**\n * 获取 node 上的 align 对齐点 相对于页面的坐标\n */\nfunction getAlignOffset(region, align) {\n var V = align.charAt(0);\n var H = align.charAt(1);\n var w = region.width;\n var h = region.height;\n var x = region.left;\n var y = region.top;\n\n if (V === 'c') {\n y += h / 2;\n } else if (V === 'b') {\n y += h;\n }\n\n if (H === 'c') {\n x += w / 2;\n } else if (H === 'r') {\n x += w;\n }\n\n return {\n left: x,\n top: y\n };\n}\n\nfunction getElFuturePos(elRegion, refNodeRegion, points, offset, targetOffset) {\n var p1 = getAlignOffset(refNodeRegion, points[1]);\n var p2 = getAlignOffset(elRegion, points[0]);\n var diff = [p2.left - p1.left, p2.top - p1.top];\n return {\n left: Math.round(elRegion.left - diff[0] + offset[0] - targetOffset[0]),\n top: Math.round(elRegion.top - diff[1] + offset[1] - targetOffset[1])\n };\n}\n\n/**\n * align dom node flexibly\n * @author yiminghe@gmail.com\n */\n\nfunction isFailX(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.left < visibleRect.left || elFuturePos.left + elRegion.width > visibleRect.right;\n}\n\nfunction isFailY(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.top < visibleRect.top || elFuturePos.top + elRegion.height > visibleRect.bottom;\n}\n\nfunction isCompleteFailX(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.left > visibleRect.right || elFuturePos.left + elRegion.width < visibleRect.left;\n}\n\nfunction isCompleteFailY(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.top > visibleRect.bottom || elFuturePos.top + elRegion.height < visibleRect.top;\n}\n\nfunction flip(points, reg, map) {\n var ret = [];\n utils.each(points, function (p) {\n ret.push(p.replace(reg, function (m) {\n return map[m];\n }));\n });\n return ret;\n}\n\nfunction flipOffset(offset, index) {\n offset[index] = -offset[index];\n return offset;\n}\n\nfunction convertOffset(str, offsetLen) {\n var n;\n\n if (/%$/.test(str)) {\n n = parseInt(str.substring(0, str.length - 1), 10) / 100 * offsetLen;\n } else {\n n = parseInt(str, 10);\n }\n\n return n || 0;\n}\n\nfunction normalizeOffset(offset, el) {\n offset[0] = convertOffset(offset[0], el.width);\n offset[1] = convertOffset(offset[1], el.height);\n}\n/**\n * @param el\n * @param tgtRegion 参照节点所占的区域: { left, top, width, height }\n * @param align\n */\n\n\nfunction doAlign(el, tgtRegion, align, isTgtRegionVisible) {\n var points = align.points;\n var offset = align.offset || [0, 0];\n var targetOffset = align.targetOffset || [0, 0];\n var overflow = align.overflow;\n var source = align.source || el;\n offset = [].concat(offset);\n targetOffset = [].concat(targetOffset);\n overflow = overflow || {};\n var newOverflowCfg = {};\n var fail = 0;\n var alwaysByViewport = !!(overflow && overflow.alwaysByViewport); // 当前节点可以被放置的显示区域\n\n var visibleRect = getVisibleRectForElement(source, alwaysByViewport); // 当前节点所占的区域, left/top/width/height\n\n var elRegion = getRegion(source); // 将 offset 转换成数值,支持百分比\n\n normalizeOffset(offset, elRegion);\n normalizeOffset(targetOffset, tgtRegion); // 当前节点将要被放置的位置\n\n var elFuturePos = getElFuturePos(elRegion, tgtRegion, points, offset, targetOffset); // 当前节点将要所处的区域\n\n var newElRegion = utils.merge(elRegion, elFuturePos); // 如果可视区域不能完全放置当前节点时允许调整\n\n if (visibleRect && (overflow.adjustX || overflow.adjustY) && isTgtRegionVisible) {\n if (overflow.adjustX) {\n // 如果横向不能放下\n if (isFailX(elFuturePos, elRegion, visibleRect)) {\n // 对齐位置反下\n var newPoints = flip(points, /[lr]/gi, {\n l: 'r',\n r: 'l'\n }); // 偏移量也反下\n\n var newOffset = flipOffset(offset, 0);\n var newTargetOffset = flipOffset(targetOffset, 0);\n var newElFuturePos = getElFuturePos(elRegion, tgtRegion, newPoints, newOffset, newTargetOffset);\n\n if (!isCompleteFailX(newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = newPoints;\n offset = newOffset;\n targetOffset = newTargetOffset;\n }\n }\n }\n\n if (overflow.adjustY) {\n // 如果纵向不能放下\n if (isFailY(elFuturePos, elRegion, visibleRect)) {\n // 对齐位置反下\n var _newPoints = flip(points, /[tb]/gi, {\n t: 'b',\n b: 't'\n }); // 偏移量也反下\n\n\n var _newOffset = flipOffset(offset, 1);\n\n var _newTargetOffset = flipOffset(targetOffset, 1);\n\n var _newElFuturePos = getElFuturePos(elRegion, tgtRegion, _newPoints, _newOffset, _newTargetOffset);\n\n if (!isCompleteFailY(_newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = _newPoints;\n offset = _newOffset;\n targetOffset = _newTargetOffset;\n }\n }\n } // 如果失败,重新计算当前节点将要被放置的位置\n\n\n if (fail) {\n elFuturePos = getElFuturePos(elRegion, tgtRegion, points, offset, targetOffset);\n utils.mix(newElRegion, elFuturePos);\n }\n\n var isStillFailX = isFailX(elFuturePos, elRegion, visibleRect);\n var isStillFailY = isFailY(elFuturePos, elRegion, visibleRect); // 检查反下后的位置是否可以放下了,如果仍然放不下:\n // 1. 复原修改过的定位参数\n\n if (isStillFailX || isStillFailY) {\n var _newPoints2 = points; // 重置对应部分的翻转逻辑\n\n if (isStillFailX) {\n _newPoints2 = flip(points, /[lr]/gi, {\n l: 'r',\n r: 'l'\n });\n }\n\n if (isStillFailY) {\n _newPoints2 = flip(points, /[tb]/gi, {\n t: 'b',\n b: 't'\n });\n }\n\n points = _newPoints2;\n offset = align.offset || [0, 0];\n targetOffset = align.targetOffset || [0, 0];\n } // 2. 只有指定了可以调整当前方向才调整\n\n\n newOverflowCfg.adjustX = overflow.adjustX && isStillFailX;\n newOverflowCfg.adjustY = overflow.adjustY && isStillFailY; // 确实要调整,甚至可能会调整高度宽度\n\n if (newOverflowCfg.adjustX || newOverflowCfg.adjustY) {\n newElRegion = adjustForViewport(elFuturePos, elRegion, visibleRect, newOverflowCfg);\n }\n } // need judge to in case set fixed with in css on height auto element\n\n\n if (newElRegion.width !== elRegion.width) {\n utils.css(source, 'width', utils.width(source) + newElRegion.width - elRegion.width);\n }\n\n if (newElRegion.height !== elRegion.height) {\n utils.css(source, 'height', utils.height(source) + newElRegion.height - elRegion.height);\n } // https://github.com/kissyteam/kissy/issues/190\n // 相对于屏幕位置没变,而 left/top 变了\n // 例如
    \n\n\n utils.offset(source, {\n left: newElRegion.left,\n top: newElRegion.top\n }, {\n useCssRight: align.useCssRight,\n useCssBottom: align.useCssBottom,\n useCssTransform: align.useCssTransform,\n ignoreShake: align.ignoreShake\n });\n return {\n points: points,\n offset: offset,\n targetOffset: targetOffset,\n overflow: newOverflowCfg\n };\n}\n/**\n * 2012-04-26 yiminghe@gmail.com\n * - 优化智能对齐算法\n * - 慎用 resizeXX\n *\n * 2011-07-13 yiminghe@gmail.com note:\n * - 增加智能对齐,以及大小调整选项\n **/\n\nfunction isOutOfVisibleRect(target, alwaysByViewport) {\n var visibleRect = getVisibleRectForElement(target, alwaysByViewport);\n var targetRegion = getRegion(target);\n return !visibleRect || targetRegion.left + targetRegion.width <= visibleRect.left || targetRegion.top + targetRegion.height <= visibleRect.top || targetRegion.left >= visibleRect.right || targetRegion.top >= visibleRect.bottom;\n}\n\nfunction alignElement(el, refNode, align) {\n var target = align.target || refNode;\n var refNodeRegion = getRegion(target);\n var isTargetNotOutOfVisible = !isOutOfVisibleRect(target, align.overflow && align.overflow.alwaysByViewport);\n return doAlign(el, refNodeRegion, align, isTargetNotOutOfVisible);\n}\n\nalignElement.__getOffsetParent = getOffsetParent;\nalignElement.__getVisibleRectForElement = getVisibleRectForElement;\n\n/**\n * `tgtPoint`: { pageX, pageY } or { clientX, clientY }.\n * If client position provided, will internal convert to page position.\n */\n\nfunction alignPoint(el, tgtPoint, align) {\n var pageX;\n var pageY;\n var doc = utils.getDocument(el);\n var win = doc.defaultView || doc.parentWindow;\n var scrollX = utils.getWindowScrollLeft(win);\n var scrollY = utils.getWindowScrollTop(win);\n var viewportWidth = utils.viewportWidth(win);\n var viewportHeight = utils.viewportHeight(win);\n\n if ('pageX' in tgtPoint) {\n pageX = tgtPoint.pageX;\n } else {\n pageX = scrollX + tgtPoint.clientX;\n }\n\n if ('pageY' in tgtPoint) {\n pageY = tgtPoint.pageY;\n } else {\n pageY = scrollY + tgtPoint.clientY;\n }\n\n var tgtRegion = {\n left: pageX,\n top: pageY,\n width: 0,\n height: 0\n };\n var pointInView = pageX >= 0 && pageX <= scrollX + viewportWidth && pageY >= 0 && pageY <= scrollY + viewportHeight; // Provide default target point\n\n var points = [align.points[0], 'cc'];\n return doAlign(el, tgtRegion, _objectSpread2({}, align, {\n points: points\n }), pointInView);\n}\n\nexport default alignElement;\nexport { alignElement, alignPoint };\n//# sourceMappingURL=index.js.map\n","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport ResizeObserver from 'resize-observer-polyfill';\nimport contains from \"rc-util/es/Dom/contains\";\nexport function isSamePoint(prev, next) {\n if (prev === next) return true;\n if (!prev || !next) return false;\n\n if ('pageX' in next && 'pageY' in next) {\n return prev.pageX === next.pageX && prev.pageY === next.pageY;\n }\n\n if ('clientX' in next && 'clientY' in next) {\n return prev.clientX === next.clientX && prev.clientY === next.clientY;\n }\n\n return false;\n}\nexport function restoreFocus(activeElement, container) {\n // Focus back if is in the container\n if (activeElement !== document.activeElement && contains(container, activeElement) && typeof activeElement.focus === 'function') {\n activeElement.focus();\n }\n}\nexport function monitorResize(element, callback) {\n var prevWidth = null;\n var prevHeight = null;\n\n function onResize(_ref) {\n var _ref2 = _slicedToArray(_ref, 1),\n target = _ref2[0].target;\n\n if (!document.documentElement.contains(target)) return;\n\n var _target$getBoundingCl = target.getBoundingClientRect(),\n width = _target$getBoundingCl.width,\n height = _target$getBoundingCl.height;\n\n var fixedWidth = Math.floor(width);\n var fixedHeight = Math.floor(height);\n\n if (prevWidth !== fixedWidth || prevHeight !== fixedHeight) {\n // https://webkit.org/blog/9997/resizeobserver-in-webkit/\n Promise.resolve().then(function () {\n callback({\n width: fixedWidth,\n height: fixedHeight\n });\n });\n }\n\n prevWidth = fixedWidth;\n prevHeight = fixedHeight;\n }\n\n var resizeObserver = new ResizeObserver(onResize);\n\n if (element) {\n resizeObserver.observe(element);\n }\n\n return function () {\n resizeObserver.disconnect();\n };\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\n\n/**\n * Removed props:\n * - childrenProps\n */\nimport React from 'react';\nimport { composeRef } from \"rc-util/es/ref\";\nimport isVisible from \"rc-util/es/Dom/isVisible\";\nimport { alignElement, alignPoint } from 'dom-align';\nimport addEventListener from \"rc-util/es/Dom/addEventListener\";\nimport { isSamePoint, restoreFocus, monitorResize } from './util';\nimport useBuffer from './hooks/useBuffer';\n\nfunction getElement(func) {\n if (typeof func !== 'function') return null;\n return func();\n}\n\nfunction getPoint(point) {\n if (_typeof(point) !== 'object' || !point) return null;\n return point;\n}\n\nvar Align = function Align(_ref, ref) {\n var children = _ref.children,\n disabled = _ref.disabled,\n target = _ref.target,\n align = _ref.align,\n onAlign = _ref.onAlign,\n monitorWindowResize = _ref.monitorWindowResize,\n _ref$monitorBufferTim = _ref.monitorBufferTime,\n monitorBufferTime = _ref$monitorBufferTim === void 0 ? 0 : _ref$monitorBufferTim;\n var cacheRef = React.useRef({});\n var nodeRef = React.useRef();\n var childNode = React.Children.only(children); // ===================== Align ======================\n // We save the props here to avoid closure makes props ood\n\n var forceAlignPropsRef = React.useRef({});\n forceAlignPropsRef.current.disabled = disabled;\n forceAlignPropsRef.current.target = target;\n forceAlignPropsRef.current.onAlign = onAlign;\n\n var _useBuffer = useBuffer(function () {\n var _forceAlignPropsRef$c = forceAlignPropsRef.current,\n latestDisabled = _forceAlignPropsRef$c.disabled,\n latestTarget = _forceAlignPropsRef$c.target,\n latestOnAlign = _forceAlignPropsRef$c.onAlign;\n\n if (!latestDisabled && latestTarget) {\n var source = nodeRef.current;\n var result;\n var element = getElement(latestTarget);\n var point = getPoint(latestTarget);\n cacheRef.current.element = element;\n cacheRef.current.point = point; // IE lose focus after element realign\n // We should record activeElement and restore later\n\n var _document = document,\n activeElement = _document.activeElement; // We only align when element is visible\n\n if (element && isVisible(element)) {\n result = alignElement(source, element, align);\n } else if (point) {\n result = alignPoint(source, point, align);\n }\n\n restoreFocus(activeElement, source);\n\n if (latestOnAlign && result) {\n latestOnAlign(source, result);\n }\n\n return true;\n }\n\n return false;\n }, monitorBufferTime),\n _useBuffer2 = _slicedToArray(_useBuffer, 2),\n _forceAlign = _useBuffer2[0],\n cancelForceAlign = _useBuffer2[1]; // ===================== Effect =====================\n // Listen for target updated\n\n\n var resizeMonitor = React.useRef({\n cancel: function cancel() {}\n }); // Listen for source updated\n\n var sourceResizeMonitor = React.useRef({\n cancel: function cancel() {}\n });\n React.useEffect(function () {\n var element = getElement(target);\n var point = getPoint(target);\n\n if (nodeRef.current !== sourceResizeMonitor.current.element) {\n sourceResizeMonitor.current.cancel();\n sourceResizeMonitor.current.element = nodeRef.current;\n sourceResizeMonitor.current.cancel = monitorResize(nodeRef.current, _forceAlign);\n }\n\n if (cacheRef.current.element !== element || !isSamePoint(cacheRef.current.point, point)) {\n _forceAlign(); // Add resize observer\n\n\n if (resizeMonitor.current.element !== element) {\n resizeMonitor.current.cancel();\n resizeMonitor.current.element = element;\n resizeMonitor.current.cancel = monitorResize(element, _forceAlign);\n }\n }\n }); // Listen for disabled change\n\n React.useEffect(function () {\n if (!disabled) {\n _forceAlign();\n } else {\n cancelForceAlign();\n }\n }, [disabled]); // Listen for window resize\n\n var winResizeRef = React.useRef(null);\n React.useEffect(function () {\n if (monitorWindowResize) {\n if (!winResizeRef.current) {\n winResizeRef.current = addEventListener(window, 'resize', _forceAlign);\n }\n } else if (winResizeRef.current) {\n winResizeRef.current.remove();\n winResizeRef.current = null;\n }\n }, [monitorWindowResize]); // Clear all if unmount\n\n React.useEffect(function () {\n return function () {\n resizeMonitor.current.cancel();\n sourceResizeMonitor.current.cancel();\n if (winResizeRef.current) winResizeRef.current.remove();\n cancelForceAlign();\n };\n }, []); // ====================== Ref =======================\n\n React.useImperativeHandle(ref, function () {\n return {\n forceAlign: function forceAlign() {\n return _forceAlign(true);\n }\n };\n }); // ===================== Render =====================\n\n if (React.isValidElement(childNode)) {\n childNode = React.cloneElement(childNode, {\n ref: composeRef(childNode.ref, nodeRef)\n });\n }\n\n return childNode;\n};\n\nvar RefAlign = React.forwardRef(Align);\nRefAlign.displayName = 'Align';\nexport default RefAlign;","import React from 'react';\nexport default (function (callback, buffer) {\n var calledRef = React.useRef(false);\n var timeoutRef = React.useRef(null);\n\n function cancelTrigger() {\n window.clearTimeout(timeoutRef.current);\n }\n\n function trigger(force) {\n if (!calledRef.current || force === true) {\n if (callback() === false) {\n // Not delay since callback cancelled self\n return;\n }\n\n calledRef.current = true;\n cancelTrigger();\n timeoutRef.current = window.setTimeout(function () {\n calledRef.current = false;\n }, buffer);\n } else {\n cancelTrigger();\n timeoutRef.current = window.setTimeout(function () {\n calledRef.current = false;\n trigger();\n }, buffer);\n }\n }\n\n return [trigger, function () {\n calledRef.current = false;\n cancelTrigger();\n }];\n});","// export this package's api\nimport Align from './Align';\nexport default Align;","import _regeneratorRuntime from \"@babel/runtime/helpers/esm/regeneratorRuntime\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useEffect, useRef } from 'react';\nimport raf from \"rc-util/es/raf\";\nimport useState from \"rc-util/es/hooks/useState\";\n/**\n * Popup should follow the steps for each component work correctly:\n * measure - check for the current stretch size\n * align - let component align the position\n * aligned - re-align again in case additional className changed the size\n * afterAlign - choice next step is trigger motion or finished\n * beforeMotion - should reset motion to invisible so that CSSMotion can do normal motion\n * motion - play the motion\n * stable - everything is done\n */\n\nvar StatusQueue = ['measure', 'alignPre', 'align', null, 'motion'];\nexport default (function (visible, doMeasure) {\n var _useState = useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n status = _useState2[0],\n setInternalStatus = _useState2[1];\n\n var rafRef = useRef();\n\n function setStatus(nextStatus) {\n setInternalStatus(nextStatus, true);\n }\n\n function cancelRaf() {\n raf.cancel(rafRef.current);\n }\n\n function goNextStatus(callback) {\n cancelRaf();\n rafRef.current = raf(function () {\n // Only align should be manually trigger\n setStatus(function (prev) {\n switch (status) {\n case 'align':\n return 'motion';\n\n case 'motion':\n return 'stable';\n\n default:\n }\n\n return prev;\n });\n callback === null || callback === void 0 ? void 0 : callback();\n });\n } // Init status\n\n\n useEffect(function () {\n setStatus('measure');\n }, [visible]); // Go next status\n\n useEffect(function () {\n switch (status) {\n case 'measure':\n doMeasure();\n break;\n\n default:\n }\n\n if (status) {\n rafRef.current = raf( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n var index, nextStatus;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n index = StatusQueue.indexOf(status);\n nextStatus = StatusQueue[index + 1];\n\n if (nextStatus && index !== -1) {\n setStatus(nextStatus);\n }\n\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n })));\n }\n }, [status]);\n useEffect(function () {\n return function () {\n cancelRaf();\n };\n }, []);\n return [status, goNextStatus];\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef, useState } from 'react';\nimport Align from 'rc-align';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport CSSMotion from 'rc-motion';\nimport classNames from 'classnames';\nimport useVisibleStatus from \"./useVisibleStatus\";\nimport { getMotion } from \"../utils/legacyUtil\";\nimport useStretchStyle from \"./useStretchStyle\";\nvar PopupInner = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var visible = props.visible,\n prefixCls = props.prefixCls,\n className = props.className,\n style = props.style,\n children = props.children,\n zIndex = props.zIndex,\n stretch = props.stretch,\n destroyPopupOnHide = props.destroyPopupOnHide,\n forceRender = props.forceRender,\n align = props.align,\n point = props.point,\n getRootDomNode = props.getRootDomNode,\n getClassNameFromAlign = props.getClassNameFromAlign,\n onAlign = props.onAlign,\n onMouseEnter = props.onMouseEnter,\n onMouseLeave = props.onMouseLeave,\n onMouseDown = props.onMouseDown,\n onTouchStart = props.onTouchStart,\n onClick = props.onClick;\n var alignRef = useRef();\n var elementRef = useRef();\n\n var _useState = useState(),\n _useState2 = _slicedToArray(_useState, 2),\n alignedClassName = _useState2[0],\n setAlignedClassName = _useState2[1]; // ======================= Measure ========================\n\n\n var _useStretchStyle = useStretchStyle(stretch),\n _useStretchStyle2 = _slicedToArray(_useStretchStyle, 2),\n stretchStyle = _useStretchStyle2[0],\n measureStretchStyle = _useStretchStyle2[1];\n\n function doMeasure() {\n if (stretch) {\n measureStretchStyle(getRootDomNode());\n }\n } // ======================== Status ========================\n\n\n var _useVisibleStatus = useVisibleStatus(visible, doMeasure),\n _useVisibleStatus2 = _slicedToArray(_useVisibleStatus, 2),\n status = _useVisibleStatus2[0],\n goNextStatus = _useVisibleStatus2[1]; // ======================== Aligns ========================\n\n /**\n * `alignedClassName` may modify `source` size,\n * which means one time align may not move to the correct position at once.\n *\n * We will reset `alignTimes` for each status switch to `alignPre`\n * and let `rc-align` to align for multiple times to ensure get final stable place.\n * Currently we mark `alignTimes < 2` repeat align, it will increase if user report for align issue.\n * \n * Update:\n * In React 18. `rc-align` effect of align may faster than ref called trigger `forceAlign`.\n * We adjust this to `alignTimes < 2`.\n * We need refactor `rc-align` to support mark of `forceAlign` call if this still happen.\n */\n\n\n var _useState3 = useState(0),\n _useState4 = _slicedToArray(_useState3, 2),\n alignTimes = _useState4[0],\n setAlignTimes = _useState4[1];\n\n var prepareResolveRef = useRef();\n useLayoutEffect(function () {\n if (status === 'alignPre') {\n setAlignTimes(0);\n }\n }, [status]); // `target` on `rc-align` can accept as a function to get the bind element or a point.\n // ref: https://www.npmjs.com/package/rc-align\n\n function getAlignTarget() {\n if (point) {\n return point;\n }\n\n return getRootDomNode;\n }\n\n function forceAlign() {\n var _alignRef$current;\n\n (_alignRef$current = alignRef.current) === null || _alignRef$current === void 0 ? void 0 : _alignRef$current.forceAlign();\n }\n\n function onInternalAlign(popupDomNode, matchAlign) {\n var nextAlignedClassName = getClassNameFromAlign(matchAlign);\n\n if (alignedClassName !== nextAlignedClassName) {\n setAlignedClassName(nextAlignedClassName);\n } // We will retry multi times to make sure that the element has been align in the right position.\n\n\n setAlignTimes(function (val) {\n return val + 1;\n });\n\n if (status === 'align') {\n onAlign === null || onAlign === void 0 ? void 0 : onAlign(popupDomNode, matchAlign);\n }\n } // Delay to go to next status\n\n\n useLayoutEffect(function () {\n if (status === 'align') {\n // Repeat until not more align needed\n if (alignTimes < 3) {\n forceAlign();\n } else {\n goNextStatus(function () {\n var _prepareResolveRef$cu;\n\n (_prepareResolveRef$cu = prepareResolveRef.current) === null || _prepareResolveRef$cu === void 0 ? void 0 : _prepareResolveRef$cu.call(prepareResolveRef);\n });\n }\n }\n }, [alignTimes]); // ======================== Motion ========================\n\n var motion = _objectSpread({}, getMotion(props));\n\n ['onAppearEnd', 'onEnterEnd', 'onLeaveEnd'].forEach(function (eventName) {\n var originHandler = motion[eventName];\n\n motion[eventName] = function (element, event) {\n goNextStatus();\n return originHandler === null || originHandler === void 0 ? void 0 : originHandler(element, event);\n };\n });\n\n function onShowPrepare() {\n return new Promise(function (resolve) {\n prepareResolveRef.current = resolve;\n });\n } // Go to stable directly when motion not provided\n\n\n React.useEffect(function () {\n if (!motion.motionName && status === 'motion') {\n goNextStatus();\n }\n }, [motion.motionName, status]); // ========================= Refs =========================\n\n React.useImperativeHandle(ref, function () {\n return {\n forceAlign: forceAlign,\n getElement: function getElement() {\n return elementRef.current;\n }\n };\n }); // ======================== Render ========================\n\n var mergedStyle = _objectSpread(_objectSpread({}, stretchStyle), {}, {\n zIndex: zIndex,\n opacity: status === 'motion' || status === 'stable' || !visible ? undefined : 0,\n // Cannot interact with disappearing elements\n // https://github.com/ant-design/ant-design/issues/35051#issuecomment-1101340714\n pointerEvents: !visible && status !== 'stable' ? 'none' : undefined\n }, style); // Align status\n\n\n var alignDisabled = true;\n\n if (align !== null && align !== void 0 && align.points && (status === 'align' || status === 'stable')) {\n alignDisabled = false;\n }\n\n var childNode = children; // Wrapper when multiple children\n\n if (React.Children.count(children) > 1) {\n childNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-content\")\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n visible: visible,\n ref: elementRef,\n leavedClassName: \"\".concat(prefixCls, \"-hidden\")\n }, motion, {\n onAppearPrepare: onShowPrepare,\n onEnterPrepare: onShowPrepare,\n removeOnLeave: destroyPopupOnHide,\n forceRender: forceRender\n }), function (_ref, motionRef) {\n var motionClassName = _ref.className,\n motionStyle = _ref.style;\n var mergedClassName = classNames(prefixCls, className, alignedClassName, motionClassName);\n return /*#__PURE__*/React.createElement(Align, {\n target: getAlignTarget(),\n key: \"popup\",\n ref: alignRef,\n monitorWindowResize: true,\n disabled: alignDisabled,\n align: align,\n onAlign: onInternalAlign\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: motionRef,\n className: mergedClassName,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onMouseDownCapture: onMouseDown,\n onTouchStartCapture: onTouchStart,\n onClick: onClick,\n style: _objectSpread(_objectSpread({}, motionStyle), mergedStyle)\n }, childNode));\n });\n});\nPopupInner.displayName = 'PopupInner';\nexport default PopupInner;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nexport default (function (stretch) {\n var _React$useState = React.useState({\n width: 0,\n height: 0\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n targetSize = _React$useState2[0],\n setTargetSize = _React$useState2[1];\n\n function measureStretch(element) {\n var tgtWidth = element.offsetWidth,\n tgtHeight = element.offsetHeight;\n\n var _element$getBoundingC = element.getBoundingClientRect(),\n width = _element$getBoundingC.width,\n height = _element$getBoundingC.height; // Rect is more accurate than offset, use if near\n\n\n if (Math.abs(tgtWidth - width) < 1 && Math.abs(tgtHeight - height) < 1) {\n tgtWidth = width;\n tgtHeight = height;\n }\n\n setTargetSize({\n width: tgtWidth,\n height: tgtHeight\n });\n } // Merge stretch style\n\n\n var style = React.useMemo(function () {\n var sizeStyle = {};\n\n if (stretch) {\n var width = targetSize.width,\n height = targetSize.height; // Stretch with target\n\n if (stretch.indexOf('height') !== -1 && height) {\n sizeStyle.height = height;\n } else if (stretch.indexOf('minHeight') !== -1 && height) {\n sizeStyle.minHeight = height;\n }\n\n if (stretch.indexOf('width') !== -1 && width) {\n sizeStyle.width = width;\n } else if (stretch.indexOf('minWidth') !== -1 && width) {\n sizeStyle.minWidth = width;\n }\n }\n\n return sizeStyle;\n }, [stretch, targetSize]);\n return [style, measureStretch];\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport CSSMotion from 'rc-motion';\nimport classNames from 'classnames';\nvar MobilePopupInner = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n visible = props.visible,\n zIndex = props.zIndex,\n children = props.children,\n _props$mobile = props.mobile;\n _props$mobile = _props$mobile === void 0 ? {} : _props$mobile;\n var popupClassName = _props$mobile.popupClassName,\n popupStyle = _props$mobile.popupStyle,\n _props$mobile$popupMo = _props$mobile.popupMotion,\n popupMotion = _props$mobile$popupMo === void 0 ? {} : _props$mobile$popupMo,\n popupRender = _props$mobile.popupRender,\n onClick = props.onClick;\n var elementRef = React.useRef(); // ========================= Refs =========================\n\n React.useImperativeHandle(ref, function () {\n return {\n forceAlign: function forceAlign() {},\n getElement: function getElement() {\n return elementRef.current;\n }\n };\n }); // ======================== Render ========================\n\n var mergedStyle = _objectSpread({\n zIndex: zIndex\n }, popupStyle);\n\n var childNode = children; // Wrapper when multiple children\n\n if (React.Children.count(children) > 1) {\n childNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-content\")\n }, children);\n } // Mobile support additional render\n\n\n if (popupRender) {\n childNode = popupRender(childNode);\n }\n\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n visible: visible,\n ref: elementRef,\n removeOnLeave: true\n }, popupMotion), function (_ref, motionRef) {\n var motionClassName = _ref.className,\n motionStyle = _ref.style;\n var mergedClassName = classNames(prefixCls, popupClassName, motionClassName);\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: motionRef,\n className: mergedClassName,\n onClick: onClick,\n style: _objectSpread(_objectSpread({}, motionStyle), mergedStyle)\n }, childNode);\n });\n});\nMobilePopupInner.displayName = 'MobilePopupInner';\nexport default MobilePopupInner;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"visible\", \"mobile\"];\nimport * as React from 'react';\nimport { useState, useEffect } from 'react';\nimport isMobile from \"rc-util/es/isMobile\";\nimport Mask from \"./Mask\";\nimport PopupInner from \"./PopupInner\";\nimport MobilePopupInner from \"./MobilePopupInner\";\nvar Popup = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var visible = _ref.visible,\n mobile = _ref.mobile,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var _useState = useState(visible),\n _useState2 = _slicedToArray(_useState, 2),\n innerVisible = _useState2[0],\n serInnerVisible = _useState2[1];\n\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n inMobile = _useState4[0],\n setInMobile = _useState4[1];\n\n var cloneProps = _objectSpread(_objectSpread({}, props), {}, {\n visible: innerVisible\n }); // We check mobile in visible changed here.\n // And this also delay set `innerVisible` to avoid popup component render flash\n\n\n useEffect(function () {\n serInnerVisible(visible);\n\n if (visible && mobile) {\n setInMobile(isMobile());\n }\n }, [visible, mobile]);\n var popupNode = inMobile ? /*#__PURE__*/React.createElement(MobilePopupInner, _extends({}, cloneProps, {\n mobile: mobile,\n ref: ref\n })) : /*#__PURE__*/React.createElement(PopupInner, _extends({}, cloneProps, {\n ref: ref\n })); // We can use fragment directly but this may failed some selector usage. Keep as origin logic\n\n return /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(Mask, cloneProps), popupNode);\n});\nPopup.displayName = 'Popup';\nexport default Popup;","import * as React from 'react';\nvar TriggerContext = /*#__PURE__*/React.createContext(null);\nexport default TriggerContext;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport raf from \"rc-util/es/raf\";\nimport contains from \"rc-util/es/Dom/contains\";\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport { composeRef, supportRef } from \"rc-util/es/ref\";\nimport addEventListener from \"rc-util/es/Dom/addEventListener\";\nimport Portal from \"rc-util/es/Portal\";\nimport classNames from 'classnames';\nimport { getAlignFromPlacement, getAlignPopupClassName } from \"./utils/alignUtil\";\nimport Popup from \"./Popup\";\nimport TriggerContext from \"./context\";\n\nfunction noop() {}\n\nfunction returnEmptyString() {\n return '';\n}\n\nfunction returnDocument(element) {\n if (element) {\n return element.ownerDocument;\n }\n\n return window.document;\n}\n\nvar ALL_HANDLERS = ['onClick', 'onMouseDown', 'onTouchStart', 'onMouseEnter', 'onMouseLeave', 'onFocus', 'onBlur', 'onContextMenu'];\n\n/**\n * Internal usage. Do not use in your code since this will be removed.\n */\nexport function generateTrigger(PortalComponent) {\n var Trigger = /*#__PURE__*/function (_React$Component) {\n _inherits(Trigger, _React$Component);\n\n var _super = _createSuper(Trigger);\n\n // ensure `getContainer` will be called only once\n function Trigger(props) {\n var _this;\n\n _classCallCheck(this, Trigger);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"popupRef\", /*#__PURE__*/React.createRef());\n\n _defineProperty(_assertThisInitialized(_this), \"triggerRef\", /*#__PURE__*/React.createRef());\n\n _defineProperty(_assertThisInitialized(_this), \"portalContainer\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"attachId\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"clickOutsideHandler\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"touchOutsideHandler\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"contextMenuOutsideHandler1\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"contextMenuOutsideHandler2\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"mouseDownTimeout\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"focusTime\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"preClickTime\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"preTouchTime\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"delayTimer\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"hasPopupMouseDown\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseEnter\", function (e) {\n var mouseEnterDelay = _this.props.mouseEnterDelay;\n\n _this.fireEvents('onMouseEnter', e);\n\n _this.delaySetPopupVisible(true, mouseEnterDelay, mouseEnterDelay ? null : e);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseMove\", function (e) {\n _this.fireEvents('onMouseMove', e);\n\n _this.setPoint(e);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseLeave\", function (e) {\n _this.fireEvents('onMouseLeave', e);\n\n _this.delaySetPopupVisible(false, _this.props.mouseLeaveDelay);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onPopupMouseEnter\", function () {\n _this.clearDelayTimer();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onPopupMouseLeave\", function (e) {\n var _this$popupRef$curren;\n\n // https://github.com/react-component/trigger/pull/13\n // react bug?\n if (e.relatedTarget && !e.relatedTarget.setTimeout && contains((_this$popupRef$curren = _this.popupRef.current) === null || _this$popupRef$curren === void 0 ? void 0 : _this$popupRef$curren.getElement(), e.relatedTarget)) {\n return;\n }\n\n _this.delaySetPopupVisible(false, _this.props.mouseLeaveDelay);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onFocus\", function (e) {\n _this.fireEvents('onFocus', e); // incase focusin and focusout\n\n\n _this.clearDelayTimer();\n\n if (_this.isFocusToShow()) {\n _this.focusTime = Date.now();\n\n _this.delaySetPopupVisible(true, _this.props.focusDelay);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseDown\", function (e) {\n _this.fireEvents('onMouseDown', e);\n\n _this.preClickTime = Date.now();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTouchStart\", function (e) {\n _this.fireEvents('onTouchStart', e);\n\n _this.preTouchTime = Date.now();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onBlur\", function (e) {\n _this.fireEvents('onBlur', e);\n\n _this.clearDelayTimer();\n\n if (_this.isBlurToHide()) {\n _this.delaySetPopupVisible(false, _this.props.blurDelay);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onContextMenu\", function (e) {\n e.preventDefault();\n\n _this.fireEvents('onContextMenu', e);\n\n _this.setPopupVisible(true, e);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onContextMenuClose\", function () {\n if (_this.isContextMenuToShow()) {\n _this.close();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n _this.fireEvents('onClick', event); // focus will trigger click\n\n\n if (_this.focusTime) {\n var preTime;\n\n if (_this.preClickTime && _this.preTouchTime) {\n preTime = Math.min(_this.preClickTime, _this.preTouchTime);\n } else if (_this.preClickTime) {\n preTime = _this.preClickTime;\n } else if (_this.preTouchTime) {\n preTime = _this.preTouchTime;\n }\n\n if (Math.abs(preTime - _this.focusTime) < 20) {\n return;\n }\n\n _this.focusTime = 0;\n }\n\n _this.preClickTime = 0;\n _this.preTouchTime = 0; // Only prevent default when all the action is click.\n // https://github.com/ant-design/ant-design/issues/17043\n // https://github.com/ant-design/ant-design/issues/17291\n\n if (_this.isClickToShow() && (_this.isClickToHide() || _this.isBlurToHide()) && event && event.preventDefault) {\n event.preventDefault();\n }\n\n var nextVisible = !_this.state.popupVisible;\n\n if (_this.isClickToHide() && !nextVisible || nextVisible && _this.isClickToShow()) {\n _this.setPopupVisible(!_this.state.popupVisible, event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onPopupMouseDown\", function () {\n _this.hasPopupMouseDown = true;\n clearTimeout(_this.mouseDownTimeout);\n _this.mouseDownTimeout = window.setTimeout(function () {\n _this.hasPopupMouseDown = false;\n }, 0);\n\n if (_this.context) {\n var _this$context;\n\n (_this$context = _this.context).onPopupMouseDown.apply(_this$context, arguments);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDocumentClick\", function (event) {\n if (_this.props.mask && !_this.props.maskClosable) {\n return;\n }\n\n var target = event.target;\n\n var root = _this.getRootDomNode();\n\n var popupNode = _this.getPopupDomNode();\n\n if ( // mousedown on the target should also close popup when action is contextMenu.\n // https://github.com/ant-design/ant-design/issues/29853\n (!contains(root, target) || _this.isContextMenuOnly()) && !contains(popupNode, target) && !_this.hasPopupMouseDown) {\n _this.close();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getRootDomNode\", function () {\n var getTriggerDOMNode = _this.props.getTriggerDOMNode;\n\n if (getTriggerDOMNode) {\n return getTriggerDOMNode(_this.triggerRef.current);\n }\n\n try {\n var domNode = findDOMNode(_this.triggerRef.current);\n\n if (domNode) {\n return domNode;\n }\n } catch (err) {// Do nothing\n }\n\n return ReactDOM.findDOMNode(_assertThisInitialized(_this));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getPopupClassNameFromAlign\", function (align) {\n var className = [];\n var _this$props = _this.props,\n popupPlacement = _this$props.popupPlacement,\n builtinPlacements = _this$props.builtinPlacements,\n prefixCls = _this$props.prefixCls,\n alignPoint = _this$props.alignPoint,\n getPopupClassNameFromAlign = _this$props.getPopupClassNameFromAlign;\n\n if (popupPlacement && builtinPlacements) {\n className.push(getAlignPopupClassName(builtinPlacements, prefixCls, align, alignPoint));\n }\n\n if (getPopupClassNameFromAlign) {\n className.push(getPopupClassNameFromAlign(align));\n }\n\n return className.join(' ');\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getComponent\", function () {\n var _this$props2 = _this.props,\n prefixCls = _this$props2.prefixCls,\n destroyPopupOnHide = _this$props2.destroyPopupOnHide,\n popupClassName = _this$props2.popupClassName,\n onPopupAlign = _this$props2.onPopupAlign,\n popupMotion = _this$props2.popupMotion,\n popupAnimation = _this$props2.popupAnimation,\n popupTransitionName = _this$props2.popupTransitionName,\n popupStyle = _this$props2.popupStyle,\n mask = _this$props2.mask,\n maskAnimation = _this$props2.maskAnimation,\n maskTransitionName = _this$props2.maskTransitionName,\n maskMotion = _this$props2.maskMotion,\n zIndex = _this$props2.zIndex,\n popup = _this$props2.popup,\n stretch = _this$props2.stretch,\n alignPoint = _this$props2.alignPoint,\n mobile = _this$props2.mobile,\n forceRender = _this$props2.forceRender,\n onPopupClick = _this$props2.onPopupClick;\n var _this$state = _this.state,\n popupVisible = _this$state.popupVisible,\n point = _this$state.point;\n\n var align = _this.getPopupAlign();\n\n var mouseProps = {};\n\n if (_this.isMouseEnterToShow()) {\n mouseProps.onMouseEnter = _this.onPopupMouseEnter;\n }\n\n if (_this.isMouseLeaveToHide()) {\n mouseProps.onMouseLeave = _this.onPopupMouseLeave;\n }\n\n mouseProps.onMouseDown = _this.onPopupMouseDown;\n mouseProps.onTouchStart = _this.onPopupMouseDown;\n return /*#__PURE__*/React.createElement(Popup, _extends({\n prefixCls: prefixCls,\n destroyPopupOnHide: destroyPopupOnHide,\n visible: popupVisible,\n point: alignPoint && point,\n className: popupClassName,\n align: align,\n onAlign: onPopupAlign,\n animation: popupAnimation,\n getClassNameFromAlign: _this.getPopupClassNameFromAlign\n }, mouseProps, {\n stretch: stretch,\n getRootDomNode: _this.getRootDomNode,\n style: popupStyle,\n mask: mask,\n zIndex: zIndex,\n transitionName: popupTransitionName,\n maskAnimation: maskAnimation,\n maskTransitionName: maskTransitionName,\n maskMotion: maskMotion,\n ref: _this.popupRef,\n motion: popupMotion,\n mobile: mobile,\n forceRender: forceRender,\n onClick: onPopupClick\n }), typeof popup === 'function' ? popup() : popup);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"attachParent\", function (popupContainer) {\n raf.cancel(_this.attachId);\n var _this$props3 = _this.props,\n getPopupContainer = _this$props3.getPopupContainer,\n getDocument = _this$props3.getDocument;\n\n var domNode = _this.getRootDomNode();\n\n var mountNode;\n\n if (!getPopupContainer) {\n mountNode = getDocument(_this.getRootDomNode()).body;\n } else if (domNode || getPopupContainer.length === 0) {\n // Compatible for legacy getPopupContainer with domNode argument.\n // If no need `domNode` argument, will call directly.\n // https://codesandbox.io/s/eloquent-mclean-ss93m?file=/src/App.js\n mountNode = getPopupContainer(domNode);\n }\n\n if (mountNode) {\n mountNode.appendChild(popupContainer);\n } else {\n // Retry after frame render in case parent not ready\n _this.attachId = raf(function () {\n _this.attachParent(popupContainer);\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getContainer\", function () {\n if (!_this.portalContainer) {\n // In React.StrictMode component will call render multiple time in first mount.\n // When you want to refactor with FC, useRef will also init multiple time and\n // point to different useRef instance which will create multiple element\n // (This multiple render will not trigger effect so you can not clean up this\n // in effect). But this is safe with class component since it always point to same class instance.\n var getDocument = _this.props.getDocument;\n var popupContainer = getDocument(_this.getRootDomNode()).createElement('div'); // Make sure default popup container will never cause scrollbar appearing\n // https://github.com/react-component/trigger/issues/41\n\n popupContainer.style.position = 'absolute';\n popupContainer.style.top = '0';\n popupContainer.style.left = '0';\n popupContainer.style.width = '100%';\n _this.portalContainer = popupContainer;\n }\n\n _this.attachParent(_this.portalContainer);\n\n return _this.portalContainer;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setPoint\", function (point) {\n var alignPoint = _this.props.alignPoint;\n if (!alignPoint || !point) return;\n\n _this.setState({\n point: {\n pageX: point.pageX,\n pageY: point.pageY\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handlePortalUpdate\", function () {\n if (_this.state.prevPopupVisible !== _this.state.popupVisible) {\n _this.props.afterPopupVisibleChange(_this.state.popupVisible);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"triggerContextValue\", {\n onPopupMouseDown: _this.onPopupMouseDown\n });\n\n var _popupVisible;\n\n if ('popupVisible' in props) {\n _popupVisible = !!props.popupVisible;\n } else {\n _popupVisible = !!props.defaultPopupVisible;\n }\n\n _this.state = {\n prevPopupVisible: _popupVisible,\n popupVisible: _popupVisible\n };\n ALL_HANDLERS.forEach(function (h) {\n _this[\"fire\".concat(h)] = function (e) {\n _this.fireEvents(h, e);\n };\n });\n return _this;\n }\n\n _createClass(Trigger, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.componentDidUpdate();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n var props = this.props;\n var state = this.state; // We must listen to `mousedown` or `touchstart`, edge case:\n // https://github.com/ant-design/ant-design/issues/5804\n // https://github.com/react-component/calendar/issues/250\n // https://github.com/react-component/trigger/issues/50\n\n if (state.popupVisible) {\n var currentDocument;\n\n if (!this.clickOutsideHandler && (this.isClickToHide() || this.isContextMenuToShow())) {\n currentDocument = props.getDocument(this.getRootDomNode());\n this.clickOutsideHandler = addEventListener(currentDocument, 'mousedown', this.onDocumentClick);\n } // always hide on mobile\n\n\n if (!this.touchOutsideHandler) {\n currentDocument = currentDocument || props.getDocument(this.getRootDomNode());\n this.touchOutsideHandler = addEventListener(currentDocument, 'touchstart', this.onDocumentClick);\n } // close popup when trigger type contains 'onContextMenu' and document is scrolling.\n\n\n if (!this.contextMenuOutsideHandler1 && this.isContextMenuToShow()) {\n currentDocument = currentDocument || props.getDocument(this.getRootDomNode());\n this.contextMenuOutsideHandler1 = addEventListener(currentDocument, 'scroll', this.onContextMenuClose);\n } // close popup when trigger type contains 'onContextMenu' and window is blur.\n\n\n if (!this.contextMenuOutsideHandler2 && this.isContextMenuToShow()) {\n this.contextMenuOutsideHandler2 = addEventListener(window, 'blur', this.onContextMenuClose);\n }\n\n return;\n }\n\n this.clearOutsideHandler();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.clearDelayTimer();\n this.clearOutsideHandler();\n clearTimeout(this.mouseDownTimeout);\n raf.cancel(this.attachId);\n }\n }, {\n key: \"getPopupDomNode\",\n value: function getPopupDomNode() {\n var _this$popupRef$curren2;\n\n // for test\n return ((_this$popupRef$curren2 = this.popupRef.current) === null || _this$popupRef$curren2 === void 0 ? void 0 : _this$popupRef$curren2.getElement()) || null;\n }\n }, {\n key: \"getPopupAlign\",\n value: function getPopupAlign() {\n var props = this.props;\n var popupPlacement = props.popupPlacement,\n popupAlign = props.popupAlign,\n builtinPlacements = props.builtinPlacements;\n\n if (popupPlacement && builtinPlacements) {\n return getAlignFromPlacement(builtinPlacements, popupPlacement, popupAlign);\n }\n\n return popupAlign;\n }\n }, {\n key: \"setPopupVisible\",\n value:\n /**\n * @param popupVisible Show or not the popup element\n * @param event SyntheticEvent, used for `pointAlign`\n */\n function setPopupVisible(popupVisible, event) {\n var alignPoint = this.props.alignPoint;\n var prevPopupVisible = this.state.popupVisible;\n this.clearDelayTimer();\n\n if (prevPopupVisible !== popupVisible) {\n if (!('popupVisible' in this.props)) {\n this.setState({\n popupVisible: popupVisible,\n prevPopupVisible: prevPopupVisible\n });\n }\n\n this.props.onPopupVisibleChange(popupVisible);\n } // Always record the point position since mouseEnterDelay will delay the show\n\n\n if (alignPoint && event && popupVisible) {\n this.setPoint(event);\n }\n }\n }, {\n key: \"delaySetPopupVisible\",\n value: function delaySetPopupVisible(visible, delayS, event) {\n var _this2 = this;\n\n var delay = delayS * 1000;\n this.clearDelayTimer();\n\n if (delay) {\n var point = event ? {\n pageX: event.pageX,\n pageY: event.pageY\n } : null;\n this.delayTimer = window.setTimeout(function () {\n _this2.setPopupVisible(visible, point);\n\n _this2.clearDelayTimer();\n }, delay);\n } else {\n this.setPopupVisible(visible, event);\n }\n }\n }, {\n key: \"clearDelayTimer\",\n value: function clearDelayTimer() {\n if (this.delayTimer) {\n clearTimeout(this.delayTimer);\n this.delayTimer = null;\n }\n }\n }, {\n key: \"clearOutsideHandler\",\n value: function clearOutsideHandler() {\n if (this.clickOutsideHandler) {\n this.clickOutsideHandler.remove();\n this.clickOutsideHandler = null;\n }\n\n if (this.contextMenuOutsideHandler1) {\n this.contextMenuOutsideHandler1.remove();\n this.contextMenuOutsideHandler1 = null;\n }\n\n if (this.contextMenuOutsideHandler2) {\n this.contextMenuOutsideHandler2.remove();\n this.contextMenuOutsideHandler2 = null;\n }\n\n if (this.touchOutsideHandler) {\n this.touchOutsideHandler.remove();\n this.touchOutsideHandler = null;\n }\n }\n }, {\n key: \"createTwoChains\",\n value: function createTwoChains(event) {\n var childPros = this.props.children.props;\n var props = this.props;\n\n if (childPros[event] && props[event]) {\n return this[\"fire\".concat(event)];\n }\n\n return childPros[event] || props[event];\n }\n }, {\n key: \"isClickToShow\",\n value: function isClickToShow() {\n var _this$props4 = this.props,\n action = _this$props4.action,\n showAction = _this$props4.showAction;\n return action.indexOf('click') !== -1 || showAction.indexOf('click') !== -1;\n }\n }, {\n key: \"isContextMenuOnly\",\n value: function isContextMenuOnly() {\n var action = this.props.action;\n return action === 'contextMenu' || action.length === 1 && action[0] === 'contextMenu';\n }\n }, {\n key: \"isContextMenuToShow\",\n value: function isContextMenuToShow() {\n var _this$props5 = this.props,\n action = _this$props5.action,\n showAction = _this$props5.showAction;\n return action.indexOf('contextMenu') !== -1 || showAction.indexOf('contextMenu') !== -1;\n }\n }, {\n key: \"isClickToHide\",\n value: function isClickToHide() {\n var _this$props6 = this.props,\n action = _this$props6.action,\n hideAction = _this$props6.hideAction;\n return action.indexOf('click') !== -1 || hideAction.indexOf('click') !== -1;\n }\n }, {\n key: \"isMouseEnterToShow\",\n value: function isMouseEnterToShow() {\n var _this$props7 = this.props,\n action = _this$props7.action,\n showAction = _this$props7.showAction;\n return action.indexOf('hover') !== -1 || showAction.indexOf('mouseEnter') !== -1;\n }\n }, {\n key: \"isMouseLeaveToHide\",\n value: function isMouseLeaveToHide() {\n var _this$props8 = this.props,\n action = _this$props8.action,\n hideAction = _this$props8.hideAction;\n return action.indexOf('hover') !== -1 || hideAction.indexOf('mouseLeave') !== -1;\n }\n }, {\n key: \"isFocusToShow\",\n value: function isFocusToShow() {\n var _this$props9 = this.props,\n action = _this$props9.action,\n showAction = _this$props9.showAction;\n return action.indexOf('focus') !== -1 || showAction.indexOf('focus') !== -1;\n }\n }, {\n key: \"isBlurToHide\",\n value: function isBlurToHide() {\n var _this$props10 = this.props,\n action = _this$props10.action,\n hideAction = _this$props10.hideAction;\n return action.indexOf('focus') !== -1 || hideAction.indexOf('blur') !== -1;\n }\n }, {\n key: \"forcePopupAlign\",\n value: function forcePopupAlign() {\n if (this.state.popupVisible) {\n var _this$popupRef$curren3;\n\n (_this$popupRef$curren3 = this.popupRef.current) === null || _this$popupRef$curren3 === void 0 ? void 0 : _this$popupRef$curren3.forceAlign();\n }\n }\n }, {\n key: \"fireEvents\",\n value: function fireEvents(type, e) {\n var childCallback = this.props.children.props[type];\n\n if (childCallback) {\n childCallback(e);\n }\n\n var callback = this.props[type];\n\n if (callback) {\n callback(e);\n }\n }\n }, {\n key: \"close\",\n value: function close() {\n this.setPopupVisible(false);\n }\n }, {\n key: \"render\",\n value: function render() {\n var popupVisible = this.state.popupVisible;\n var _this$props11 = this.props,\n children = _this$props11.children,\n forceRender = _this$props11.forceRender,\n alignPoint = _this$props11.alignPoint,\n className = _this$props11.className,\n autoDestroy = _this$props11.autoDestroy;\n var child = React.Children.only(children);\n var newChildProps = {\n key: 'trigger'\n }; // ============================== Visible Handlers ==============================\n // >>> ContextMenu\n\n if (this.isContextMenuToShow()) {\n newChildProps.onContextMenu = this.onContextMenu;\n } else {\n newChildProps.onContextMenu = this.createTwoChains('onContextMenu');\n } // >>> Click\n\n\n if (this.isClickToHide() || this.isClickToShow()) {\n newChildProps.onClick = this.onClick;\n newChildProps.onMouseDown = this.onMouseDown;\n newChildProps.onTouchStart = this.onTouchStart;\n } else {\n newChildProps.onClick = this.createTwoChains('onClick');\n newChildProps.onMouseDown = this.createTwoChains('onMouseDown');\n newChildProps.onTouchStart = this.createTwoChains('onTouchStart');\n } // >>> Hover(enter)\n\n\n if (this.isMouseEnterToShow()) {\n newChildProps.onMouseEnter = this.onMouseEnter; // Point align\n\n if (alignPoint) {\n newChildProps.onMouseMove = this.onMouseMove;\n }\n } else {\n newChildProps.onMouseEnter = this.createTwoChains('onMouseEnter');\n } // >>> Hover(leave)\n\n\n if (this.isMouseLeaveToHide()) {\n newChildProps.onMouseLeave = this.onMouseLeave;\n } else {\n newChildProps.onMouseLeave = this.createTwoChains('onMouseLeave');\n } // >>> Focus\n\n\n if (this.isFocusToShow() || this.isBlurToHide()) {\n newChildProps.onFocus = this.onFocus;\n newChildProps.onBlur = this.onBlur;\n } else {\n newChildProps.onFocus = this.createTwoChains('onFocus');\n newChildProps.onBlur = this.createTwoChains('onBlur');\n } // =================================== Render ===================================\n\n\n var childrenClassName = classNames(child && child.props && child.props.className, className);\n\n if (childrenClassName) {\n newChildProps.className = childrenClassName;\n }\n\n var cloneProps = _objectSpread({}, newChildProps);\n\n if (supportRef(child)) {\n cloneProps.ref = composeRef(this.triggerRef, child.ref);\n }\n\n var trigger = /*#__PURE__*/React.cloneElement(child, cloneProps);\n var portal; // prevent unmounting after it's rendered\n\n if (popupVisible || this.popupRef.current || forceRender) {\n portal = /*#__PURE__*/React.createElement(PortalComponent, {\n key: \"portal\",\n getContainer: this.getContainer,\n didUpdate: this.handlePortalUpdate\n }, this.getComponent());\n }\n\n if (!popupVisible && autoDestroy) {\n portal = null;\n }\n\n return /*#__PURE__*/React.createElement(TriggerContext.Provider, {\n value: this.triggerContextValue\n }, trigger, portal);\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref, prevState) {\n var popupVisible = _ref.popupVisible;\n var newState = {};\n\n if (popupVisible !== undefined && prevState.popupVisible !== popupVisible) {\n newState.popupVisible = popupVisible;\n newState.prevPopupVisible = prevState.popupVisible;\n }\n\n return newState;\n }\n }]);\n\n return Trigger;\n }(React.Component);\n\n _defineProperty(Trigger, \"contextType\", TriggerContext);\n\n _defineProperty(Trigger, \"defaultProps\", {\n prefixCls: 'rc-trigger-popup',\n getPopupClassNameFromAlign: returnEmptyString,\n getDocument: returnDocument,\n onPopupVisibleChange: noop,\n afterPopupVisibleChange: noop,\n onPopupAlign: noop,\n popupClassName: '',\n mouseEnterDelay: 0,\n mouseLeaveDelay: 0.1,\n focusDelay: 0,\n blurDelay: 0.15,\n popupStyle: {},\n destroyPopupOnHide: false,\n popupAlign: {},\n defaultPopupVisible: false,\n mask: false,\n maskClosable: true,\n action: [],\n showAction: [],\n hideAction: [],\n autoDestroy: false\n });\n\n return Trigger;\n}\nexport default generateTrigger(Portal);","function getError(option, xhr) {\n var msg = \"cannot \".concat(option.method, \" \").concat(option.action, \" \").concat(xhr.status, \"'\");\n var err = new Error(msg);\n err.status = xhr.status;\n err.method = option.method;\n err.url = option.action;\n return err;\n}\n\nfunction getBody(xhr) {\n var text = xhr.responseText || xhr.response;\n\n if (!text) {\n return text;\n }\n\n try {\n return JSON.parse(text);\n } catch (e) {\n return text;\n }\n}\n\nexport default function upload(option) {\n // eslint-disable-next-line no-undef\n var xhr = new XMLHttpRequest();\n\n if (option.onProgress && xhr.upload) {\n xhr.upload.onprogress = function progress(e) {\n if (e.total > 0) {\n e.percent = e.loaded / e.total * 100;\n }\n\n option.onProgress(e);\n };\n } // eslint-disable-next-line no-undef\n\n\n var formData = new FormData();\n\n if (option.data) {\n Object.keys(option.data).forEach(function (key) {\n var value = option.data[key]; // support key-value array data\n\n if (Array.isArray(value)) {\n value.forEach(function (item) {\n // { list: [ 11, 22 ] }\n // formData.append('list[]', 11);\n formData.append(\"\".concat(key, \"[]\"), item);\n });\n return;\n }\n\n formData.append(key, option.data[key]);\n });\n } // eslint-disable-next-line no-undef\n\n\n if (option.file instanceof Blob) {\n formData.append(option.filename, option.file, option.file.name);\n } else {\n formData.append(option.filename, option.file);\n }\n\n xhr.onerror = function error(e) {\n option.onError(e);\n };\n\n xhr.onload = function onload() {\n // allow success when 2xx status\n // see https://github.com/react-component/upload/issues/34\n if (xhr.status < 200 || xhr.status >= 300) {\n return option.onError(getError(option, xhr), getBody(xhr));\n }\n\n return option.onSuccess(getBody(xhr), xhr);\n };\n\n xhr.open(option.method, option.action, true); // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179\n\n if (option.withCredentials && 'withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n var headers = option.headers || {}; // when set headers['X-Requested-With'] = null , can close default XHR header\n // see https://github.com/react-component/upload/issues/33\n\n if (headers['X-Requested-With'] !== null) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n\n Object.keys(headers).forEach(function (h) {\n if (headers[h] !== null) {\n xhr.setRequestHeader(h, headers[h]);\n }\n });\n xhr.send(formData);\n return {\n abort: function abort() {\n xhr.abort();\n }\n };\n}","var now = +new Date();\nvar index = 0;\nexport default function uid() {\n // eslint-disable-next-line no-plusplus\n return \"rc-upload-\".concat(now, \"-\").concat(++index);\n}","function endsWith(str, suffix) {\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\n}\n\nexport default (function (file, acceptedFiles) {\n if (file && acceptedFiles) {\n var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n var fileName = file.name || '';\n var mimeType = file.type || '';\n var baseMimeType = mimeType.replace(/\\/.*$/, '');\n return acceptedFilesArray.some(function (type) {\n var validType = type.trim();\n\n if (validType.charAt(0) === '.') {\n return endsWith(fileName.toLowerCase(), validType.toLowerCase());\n }\n\n if (/\\/\\*$/.test(validType)) {\n // This is something like a image/* mime type\n return baseMimeType === validType.replace(/\\/.*$/, '');\n }\n\n return mimeType === validType;\n });\n }\n\n return true;\n});","function loopFiles(item, callback) {\n var dirReader = item.createReader();\n var fileList = [];\n\n function sequence() {\n dirReader.readEntries(function (entries) {\n var entryList = Array.prototype.slice.apply(entries);\n fileList = fileList.concat(entryList); // Check if all the file has been viewed\n\n var isFinished = !entryList.length;\n\n if (isFinished) {\n callback(fileList);\n } else {\n sequence();\n }\n });\n }\n\n sequence();\n}\n\nvar traverseFileTree = function traverseFileTree(files, callback, isAccepted) {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n var _traverseFileTree = function _traverseFileTree(item, path) {\n // eslint-disable-next-line no-param-reassign\n item.path = path || '';\n\n if (item.isFile) {\n item.file(function (file) {\n if (isAccepted(file)) {\n // https://github.com/ant-design/ant-design/issues/16426\n if (item.fullPath && !file.webkitRelativePath) {\n Object.defineProperties(file, {\n webkitRelativePath: {\n writable: true\n }\n }); // eslint-disable-next-line no-param-reassign\n\n file.webkitRelativePath = item.fullPath.replace(/^\\//, '');\n Object.defineProperties(file, {\n webkitRelativePath: {\n writable: false\n }\n });\n }\n\n callback([file]);\n }\n });\n } else if (item.isDirectory) {\n loopFiles(item, function (entries) {\n entries.forEach(function (entryItem) {\n _traverseFileTree(entryItem, \"\".concat(path).concat(item.name, \"/\"));\n });\n });\n }\n };\n\n files.forEach(function (file) {\n _traverseFileTree(file.webkitGetAsEntry());\n });\n};\n\nexport default traverseFileTree;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n\n/* eslint react/no-is-mounted:0,react/sort-comp:0,react/prop-types:0 */\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport defaultRequest from './request';\nimport getUid from './uid';\nimport attrAccept from './attr-accept';\nimport traverseFileTree from './traverseFileTree';\n\nvar AjaxUploader = /*#__PURE__*/function (_Component) {\n _inherits(AjaxUploader, _Component);\n\n var _super = _createSuper(AjaxUploader);\n\n function AjaxUploader() {\n var _this;\n\n _classCallCheck(this, AjaxUploader);\n\n _this = _super.apply(this, arguments);\n _this.state = {\n uid: getUid()\n };\n _this.reqs = {};\n\n _this.onChange = function (e) {\n var files = e.target.files;\n\n _this.uploadFiles(files);\n\n _this.reset();\n };\n\n _this.onClick = function (e) {\n var el = _this.fileInput;\n\n if (!el) {\n return;\n }\n\n var _this$props = _this.props,\n children = _this$props.children,\n onClick = _this$props.onClick;\n\n if (children && children.type === 'button') {\n var parent = el.parentNode;\n parent.focus();\n parent.querySelector('button').blur();\n }\n\n el.click();\n\n if (onClick) {\n onClick(e);\n }\n };\n\n _this.onKeyDown = function (e) {\n if (e.key === 'Enter') {\n _this.onClick(e);\n }\n };\n\n _this.onFileDrop = function (e) {\n var multiple = _this.props.multiple;\n e.preventDefault();\n\n if (e.type === 'dragover') {\n return;\n }\n\n if (_this.props.directory) {\n traverseFileTree(Array.prototype.slice.call(e.dataTransfer.items), _this.uploadFiles, function (_file) {\n return attrAccept(_file, _this.props.accept);\n });\n } else {\n var files = Array.prototype.slice.call(e.dataTransfer.files).filter(function (file) {\n return attrAccept(file, _this.props.accept);\n });\n\n if (multiple === false) {\n files = files.slice(0, 1);\n }\n\n _this.uploadFiles(files);\n }\n };\n\n _this.uploadFiles = function (files) {\n var postFiles = Array.prototype.slice.call(files);\n postFiles.map(function (file) {\n // eslint-disable-next-line no-param-reassign\n file.uid = getUid();\n return file;\n }).forEach(function (file) {\n _this.upload(file, postFiles);\n });\n };\n\n _this.saveFileInput = function (node) {\n _this.fileInput = node;\n };\n\n return _this;\n }\n\n _createClass(AjaxUploader, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._isMounted = true;\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this._isMounted = false;\n this.abort();\n }\n }, {\n key: \"upload\",\n value: function upload(file, fileList) {\n var _this2 = this;\n\n var props = this.props;\n\n if (!props.beforeUpload) {\n // always async in case use react state to keep fileList\n Promise.resolve().then(function () {\n _this2.post(file);\n });\n return;\n }\n\n var before = props.beforeUpload(file, fileList);\n\n if (before && typeof before !== 'boolean' && before.then) {\n before.then(function (processedFile) {\n var processedFileType = Object.prototype.toString.call(processedFile);\n\n if (processedFileType === '[object File]' || processedFileType === '[object Blob]') {\n _this2.post(processedFile);\n\n return;\n }\n\n _this2.post(file);\n }).catch(function (e) {\n // eslint-disable-next-line no-console\n console.log(e);\n });\n } else if (before !== false) {\n Promise.resolve().then(function () {\n _this2.post(file);\n });\n }\n }\n }, {\n key: \"post\",\n value: function post(file) {\n var _this3 = this;\n\n if (!this._isMounted) {\n return;\n }\n\n var props = this.props;\n var onStart = props.onStart,\n onProgress = props.onProgress,\n _props$transformFile = props.transformFile,\n transformFile = _props$transformFile === void 0 ? function (originFile) {\n return originFile;\n } : _props$transformFile;\n new Promise(function (resolve) {\n var actionRet = props.action;\n\n if (typeof actionRet === 'function') {\n actionRet = actionRet(file);\n }\n\n return resolve(actionRet);\n }).then(function (action) {\n var uid = file.uid;\n var request = props.customRequest || defaultRequest;\n var transform = Promise.resolve(transformFile(file)).then(function (transformedFile) {\n var data = props.data;\n\n if (typeof data === 'function') {\n data = data(transformedFile);\n }\n\n return Promise.all([transformedFile, data]);\n }).catch(function (e) {\n console.error(e); // eslint-disable-line no-console\n });\n transform.then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n transformedFile = _ref2[0],\n data = _ref2[1];\n\n var requestOption = {\n action: action,\n filename: props.name,\n data: data,\n file: transformedFile,\n headers: props.headers,\n withCredentials: props.withCredentials,\n method: props.method || 'post',\n onProgress: onProgress ? function (e) {\n onProgress(e, file);\n } : null,\n onSuccess: function onSuccess(ret, xhr) {\n delete _this3.reqs[uid];\n props.onSuccess(ret, file, xhr);\n },\n onError: function onError(err, ret) {\n delete _this3.reqs[uid];\n props.onError(err, ret, file);\n }\n };\n onStart(file);\n _this3.reqs[uid] = request(requestOption);\n });\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.setState({\n uid: getUid()\n });\n }\n }, {\n key: \"abort\",\n value: function abort(file) {\n var reqs = this.reqs;\n\n if (file) {\n var uid = file.uid ? file.uid : file;\n\n if (reqs[uid] && reqs[uid].abort) {\n reqs[uid].abort();\n }\n\n delete reqs[uid];\n } else {\n Object.keys(reqs).forEach(function (uid) {\n if (reqs[uid] && reqs[uid].abort) {\n reqs[uid].abort();\n }\n\n delete reqs[uid];\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classNames;\n\n var _this$props2 = this.props,\n Tag = _this$props2.component,\n prefixCls = _this$props2.prefixCls,\n className = _this$props2.className,\n disabled = _this$props2.disabled,\n id = _this$props2.id,\n style = _this$props2.style,\n multiple = _this$props2.multiple,\n accept = _this$props2.accept,\n children = _this$props2.children,\n directory = _this$props2.directory,\n openFileDialogOnClick = _this$props2.openFileDialogOnClick,\n onMouseEnter = _this$props2.onMouseEnter,\n onMouseLeave = _this$props2.onMouseLeave,\n otherProps = _objectWithoutProperties(_this$props2, [\"component\", \"prefixCls\", \"className\", \"disabled\", \"id\", \"style\", \"multiple\", \"accept\", \"children\", \"directory\", \"openFileDialogOnClick\", \"onMouseEnter\", \"onMouseLeave\"]);\n\n var cls = classNames((_classNames = {}, _defineProperty(_classNames, prefixCls, true), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), disabled), _defineProperty(_classNames, className, className), _classNames)); // because input don't have directory/webkitdirectory type declaration\n\n var dirProps = directory ? {\n directory: 'directory',\n webkitdirectory: 'webkitdirectory'\n } : {};\n var events = disabled ? {} : {\n onClick: openFileDialogOnClick ? this.onClick : function () {},\n onKeyDown: openFileDialogOnClick ? this.onKeyDown : function () {},\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onDrop: this.onFileDrop,\n onDragOver: this.onFileDrop,\n tabIndex: '0'\n };\n return /*#__PURE__*/React.createElement(Tag, _extends({}, events, {\n className: cls,\n role: \"button\",\n style: style\n }), /*#__PURE__*/React.createElement(\"input\", _extends({}, pickAttrs(otherProps, {\n aria: true,\n data: true\n }), {\n id: id,\n type: \"file\",\n ref: this.saveFileInput,\n onClick: function onClick(e) {\n return e.stopPropagation();\n } // https://github.com/ant-design/ant-design/issues/19948\n ,\n key: this.state.uid,\n style: {\n display: 'none'\n },\n accept: accept\n }, dirProps, {\n multiple: multiple,\n onChange: this.onChange\n })), children);\n }\n }]);\n\n return AjaxUploader;\n}(Component);\n\nexport default AjaxUploader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n\n/* eslint react/prop-types:0 */\nimport React, { Component } from 'react';\nimport AjaxUpload from './AjaxUploader';\n\nfunction empty() {}\n\nvar Upload = /*#__PURE__*/function (_Component) {\n _inherits(Upload, _Component);\n\n var _super = _createSuper(Upload);\n\n function Upload() {\n var _this;\n\n _classCallCheck(this, Upload);\n\n _this = _super.apply(this, arguments);\n\n _this.saveUploader = function (node) {\n _this.uploader = node;\n };\n\n return _this;\n }\n\n _createClass(Upload, [{\n key: \"abort\",\n value: function abort(file) {\n this.uploader.abort(file);\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(AjaxUpload, _extends({}, this.props, {\n ref: this.saveUploader\n }));\n }\n }]);\n\n return Upload;\n}(Component);\n\nUpload.defaultProps = {\n component: 'span',\n prefixCls: 'rc-upload',\n data: {},\n headers: {},\n name: 'file',\n multipart: false,\n onStart: empty,\n onError: empty,\n onSuccess: empty,\n multiple: false,\n beforeUpload: null,\n customRequest: null,\n withCredentials: false,\n openFileDialogOnClick: true\n};\nexport default Upload;","import Upload from './Upload';\nexport default Upload;","import React from 'react';\nimport { isFragment } from 'react-is';\nexport default function toArray(children) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var ret = [];\n React.Children.forEach(children, function (child) {\n if ((child === undefined || child === null) && !option.keepEmpty) {\n return;\n }\n if (Array.isArray(child)) {\n ret = ret.concat(toArray(child));\n } else if (isFragment(child) && child.props) {\n ret = ret.concat(toArray(child.props.children, option));\n } else {\n ret.push(child);\n }\n });\n return ret;\n}","import ReactDOM from 'react-dom';\nexport default function addEventListenerWrap(target, eventType, cb, option) {\n /* eslint camelcase: 2 */\n var callback = ReactDOM.unstable_batchedUpdates ? function run(e) {\n ReactDOM.unstable_batchedUpdates(cb, e);\n } : cb;\n if (target !== null && target !== void 0 && target.addEventListener) {\n target.addEventListener(eventType, callback, option);\n }\n return {\n remove: function remove() {\n if (target !== null && target !== void 0 && target.removeEventListener) {\n target.removeEventListener(eventType, callback, option);\n }\n }\n };\n}","export default function canUseDom() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}","export default function contains(root, n) {\n if (!root) {\n return false;\n }\n\n // Use native if support\n if (root.contains) {\n return root.contains(n);\n }\n\n // `document.contains` not support with IE11\n var node = n;\n while (node) {\n if (node === root) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport canUseDom from \"./canUseDom\";\nimport contains from \"./contains\";\nvar APPEND_ORDER = 'data-rc-order';\nvar APPEND_PRIORITY = 'data-rc-priority';\nvar MARK_KEY = \"rc-util-key\";\nvar containerCache = new Map();\nfunction getMark() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n mark = _ref.mark;\n if (mark) {\n return mark.startsWith('data-') ? mark : \"data-\".concat(mark);\n }\n return MARK_KEY;\n}\nfunction getContainer(option) {\n if (option.attachTo) {\n return option.attachTo;\n }\n var head = document.querySelector('head');\n return head || document.body;\n}\nfunction getOrder(prepend) {\n if (prepend === 'queue') {\n return 'prependQueue';\n }\n return prepend ? 'prepend' : 'append';\n}\n\n/**\n * Find style which inject by rc-util\n */\nfunction findStyles(container) {\n return Array.from((containerCache.get(container) || container).children).filter(function (node) {\n return node.tagName === 'STYLE';\n });\n}\nexport function injectCSS(css) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!canUseDom()) {\n return null;\n }\n var csp = option.csp,\n prepend = option.prepend,\n _option$priority = option.priority,\n priority = _option$priority === void 0 ? 0 : _option$priority;\n var mergedOrder = getOrder(prepend);\n var isPrependQueue = mergedOrder === 'prependQueue';\n var styleNode = document.createElement('style');\n styleNode.setAttribute(APPEND_ORDER, mergedOrder);\n if (isPrependQueue && priority) {\n styleNode.setAttribute(APPEND_PRIORITY, \"\".concat(priority));\n }\n if (csp !== null && csp !== void 0 && csp.nonce) {\n styleNode.nonce = csp === null || csp === void 0 ? void 0 : csp.nonce;\n }\n styleNode.innerHTML = css;\n var container = getContainer(option);\n var firstChild = container.firstChild;\n if (prepend) {\n // If is queue `prepend`, it will prepend first style and then append rest style\n if (isPrependQueue) {\n var existStyle = (option.styles || findStyles(container)).filter(function (node) {\n // Ignore style which not injected by rc-util with prepend\n if (!['prepend', 'prependQueue'].includes(node.getAttribute(APPEND_ORDER))) {\n return false;\n }\n\n // Ignore style which priority less then new style\n var nodePriority = Number(node.getAttribute(APPEND_PRIORITY) || 0);\n return priority >= nodePriority;\n });\n if (existStyle.length) {\n container.insertBefore(styleNode, existStyle[existStyle.length - 1].nextSibling);\n return styleNode;\n }\n }\n\n // Use `insertBefore` as `prepend`\n container.insertBefore(styleNode, firstChild);\n } else {\n container.appendChild(styleNode);\n }\n return styleNode;\n}\nfunction findExistNode(key) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var container = getContainer(option);\n return (option.styles || findStyles(container)).find(function (node) {\n return node.getAttribute(getMark(option)) === key;\n });\n}\nexport function removeCSS(key) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var existNode = findExistNode(key, option);\n if (existNode) {\n var container = getContainer(option);\n container.removeChild(existNode);\n }\n}\n\n/**\n * qiankun will inject `appendChild` to insert into other\n */\nfunction syncRealContainer(container, option) {\n var cachedRealContainer = containerCache.get(container);\n\n // Find real container when not cached or cached container removed\n if (!cachedRealContainer || !contains(document, cachedRealContainer)) {\n var placeholderStyle = injectCSS('', option);\n var parentNode = placeholderStyle.parentNode;\n containerCache.set(container, parentNode);\n container.removeChild(placeholderStyle);\n }\n}\n\n/**\n * manually clear container cache to avoid global cache in unit testes\n */\nexport function clearContainerCache() {\n containerCache.clear();\n}\nexport function updateCSS(css, key) {\n var originOption = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var container = getContainer(originOption);\n var styles = findStyles(container);\n var option = _objectSpread(_objectSpread({}, originOption), {}, {\n styles: styles\n });\n\n // Sync real parent\n syncRealContainer(container, option);\n var existNode = findExistNode(key, option);\n if (existNode) {\n var _option$csp, _option$csp2;\n if ((_option$csp = option.csp) !== null && _option$csp !== void 0 && _option$csp.nonce && existNode.nonce !== ((_option$csp2 = option.csp) === null || _option$csp2 === void 0 ? void 0 : _option$csp2.nonce)) {\n var _option$csp3;\n existNode.nonce = (_option$csp3 = option.csp) === null || _option$csp3 === void 0 ? void 0 : _option$csp3.nonce;\n }\n if (existNode.innerHTML !== css) {\n existNode.innerHTML = css;\n }\n return existNode;\n }\n var newNode = injectCSS(css, option);\n newNode.setAttribute(getMark(option), key);\n return newNode;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nexport function isDOM(node) {\n // https://developer.mozilla.org/en-US/docs/Web/API/Element\n // Since XULElement is also subclass of Element, we only need HTMLElement and SVGElement\n return node instanceof HTMLElement || node instanceof SVGElement;\n}\n\n/**\n * Retrieves a DOM node via a ref, and does not invoke `findDOMNode`.\n */\nexport function getDOM(node) {\n if (node && _typeof(node) === 'object' && isDOM(node.nativeElement)) {\n return node.nativeElement;\n }\n if (isDOM(node)) {\n return node;\n }\n return null;\n}\n\n/**\n * Return if a node is a DOM node. Else will return by `findDOMNode`\n */\nexport default function findDOMNode(node) {\n var domNode = getDOM(node);\n if (domNode) {\n return domNode;\n }\n if (node instanceof React.Component) {\n var _ReactDOM$findDOMNode;\n return (_ReactDOM$findDOMNode = ReactDOM.findDOMNode) === null || _ReactDOM$findDOMNode === void 0 ? void 0 : _ReactDOM$findDOMNode.call(ReactDOM, node);\n }\n return null;\n}","export default (function (element) {\n if (!element) {\n return false;\n }\n if (element instanceof Element) {\n if (element.offsetParent) {\n return true;\n }\n if (element.getBBox) {\n var _getBBox = element.getBBox(),\n width = _getBBox.width,\n height = _getBBox.height;\n if (width || height) {\n return true;\n }\n }\n if (element.getBoundingClientRect) {\n var _element$getBoundingC = element.getBoundingClientRect(),\n _width = _element$getBoundingC.width,\n _height = _element$getBoundingC.height;\n if (_width || _height) {\n return true;\n }\n }\n }\n return false;\n});","function getRoot(ele) {\n var _ele$getRootNode;\n return ele === null || ele === void 0 || (_ele$getRootNode = ele.getRootNode) === null || _ele$getRootNode === void 0 ? void 0 : _ele$getRootNode.call(ele);\n}\n\n/**\n * Check if is in shadowRoot\n */\nexport function inShadow(ele) {\n return getRoot(ele) instanceof ShadowRoot;\n}\n\n/**\n * Return shadowRoot if possible\n */\nexport function getShadowRoot(ele) {\n return inShadow(ele) ? getRoot(ele) : null;\n}","/**\n * @ignore\n * some key-codes definition and utils from closure-library\n * @author yiminghe@gmail.com\n */\n\nvar KeyCode = {\n /**\n * MAC_ENTER\n */\n MAC_ENTER: 3,\n /**\n * BACKSPACE\n */\n BACKSPACE: 8,\n /**\n * TAB\n */\n TAB: 9,\n /**\n * NUMLOCK on FF/Safari Mac\n */\n NUM_CENTER: 12,\n // NUMLOCK on FF/Safari Mac\n /**\n * ENTER\n */\n ENTER: 13,\n /**\n * SHIFT\n */\n SHIFT: 16,\n /**\n * CTRL\n */\n CTRL: 17,\n /**\n * ALT\n */\n ALT: 18,\n /**\n * PAUSE\n */\n PAUSE: 19,\n /**\n * CAPS_LOCK\n */\n CAPS_LOCK: 20,\n /**\n * ESC\n */\n ESC: 27,\n /**\n * SPACE\n */\n SPACE: 32,\n /**\n * PAGE_UP\n */\n PAGE_UP: 33,\n // also NUM_NORTH_EAST\n /**\n * PAGE_DOWN\n */\n PAGE_DOWN: 34,\n // also NUM_SOUTH_EAST\n /**\n * END\n */\n END: 35,\n // also NUM_SOUTH_WEST\n /**\n * HOME\n */\n HOME: 36,\n // also NUM_NORTH_WEST\n /**\n * LEFT\n */\n LEFT: 37,\n // also NUM_WEST\n /**\n * UP\n */\n UP: 38,\n // also NUM_NORTH\n /**\n * RIGHT\n */\n RIGHT: 39,\n // also NUM_EAST\n /**\n * DOWN\n */\n DOWN: 40,\n // also NUM_SOUTH\n /**\n * PRINT_SCREEN\n */\n PRINT_SCREEN: 44,\n /**\n * INSERT\n */\n INSERT: 45,\n // also NUM_INSERT\n /**\n * DELETE\n */\n DELETE: 46,\n // also NUM_DELETE\n /**\n * ZERO\n */\n ZERO: 48,\n /**\n * ONE\n */\n ONE: 49,\n /**\n * TWO\n */\n TWO: 50,\n /**\n * THREE\n */\n THREE: 51,\n /**\n * FOUR\n */\n FOUR: 52,\n /**\n * FIVE\n */\n FIVE: 53,\n /**\n * SIX\n */\n SIX: 54,\n /**\n * SEVEN\n */\n SEVEN: 55,\n /**\n * EIGHT\n */\n EIGHT: 56,\n /**\n * NINE\n */\n NINE: 57,\n /**\n * QUESTION_MARK\n */\n QUESTION_MARK: 63,\n // needs localization\n /**\n * A\n */\n A: 65,\n /**\n * B\n */\n B: 66,\n /**\n * C\n */\n C: 67,\n /**\n * D\n */\n D: 68,\n /**\n * E\n */\n E: 69,\n /**\n * F\n */\n F: 70,\n /**\n * G\n */\n G: 71,\n /**\n * H\n */\n H: 72,\n /**\n * I\n */\n I: 73,\n /**\n * J\n */\n J: 74,\n /**\n * K\n */\n K: 75,\n /**\n * L\n */\n L: 76,\n /**\n * M\n */\n M: 77,\n /**\n * N\n */\n N: 78,\n /**\n * O\n */\n O: 79,\n /**\n * P\n */\n P: 80,\n /**\n * Q\n */\n Q: 81,\n /**\n * R\n */\n R: 82,\n /**\n * S\n */\n S: 83,\n /**\n * T\n */\n T: 84,\n /**\n * U\n */\n U: 85,\n /**\n * V\n */\n V: 86,\n /**\n * W\n */\n W: 87,\n /**\n * X\n */\n X: 88,\n /**\n * Y\n */\n Y: 89,\n /**\n * Z\n */\n Z: 90,\n /**\n * META\n */\n META: 91,\n // WIN_KEY_LEFT\n /**\n * WIN_KEY_RIGHT\n */\n WIN_KEY_RIGHT: 92,\n /**\n * CONTEXT_MENU\n */\n CONTEXT_MENU: 93,\n /**\n * NUM_ZERO\n */\n NUM_ZERO: 96,\n /**\n * NUM_ONE\n */\n NUM_ONE: 97,\n /**\n * NUM_TWO\n */\n NUM_TWO: 98,\n /**\n * NUM_THREE\n */\n NUM_THREE: 99,\n /**\n * NUM_FOUR\n */\n NUM_FOUR: 100,\n /**\n * NUM_FIVE\n */\n NUM_FIVE: 101,\n /**\n * NUM_SIX\n */\n NUM_SIX: 102,\n /**\n * NUM_SEVEN\n */\n NUM_SEVEN: 103,\n /**\n * NUM_EIGHT\n */\n NUM_EIGHT: 104,\n /**\n * NUM_NINE\n */\n NUM_NINE: 105,\n /**\n * NUM_MULTIPLY\n */\n NUM_MULTIPLY: 106,\n /**\n * NUM_PLUS\n */\n NUM_PLUS: 107,\n /**\n * NUM_MINUS\n */\n NUM_MINUS: 109,\n /**\n * NUM_PERIOD\n */\n NUM_PERIOD: 110,\n /**\n * NUM_DIVISION\n */\n NUM_DIVISION: 111,\n /**\n * F1\n */\n F1: 112,\n /**\n * F2\n */\n F2: 113,\n /**\n * F3\n */\n F3: 114,\n /**\n * F4\n */\n F4: 115,\n /**\n * F5\n */\n F5: 116,\n /**\n * F6\n */\n F6: 117,\n /**\n * F7\n */\n F7: 118,\n /**\n * F8\n */\n F8: 119,\n /**\n * F9\n */\n F9: 120,\n /**\n * F10\n */\n F10: 121,\n /**\n * F11\n */\n F11: 122,\n /**\n * F12\n */\n F12: 123,\n /**\n * NUMLOCK\n */\n NUMLOCK: 144,\n /**\n * SEMICOLON\n */\n SEMICOLON: 186,\n // needs localization\n /**\n * DASH\n */\n DASH: 189,\n // needs localization\n /**\n * EQUALS\n */\n EQUALS: 187,\n // needs localization\n /**\n * COMMA\n */\n COMMA: 188,\n // needs localization\n /**\n * PERIOD\n */\n PERIOD: 190,\n // needs localization\n /**\n * SLASH\n */\n SLASH: 191,\n // needs localization\n /**\n * APOSTROPHE\n */\n APOSTROPHE: 192,\n // needs localization\n /**\n * SINGLE_QUOTE\n */\n SINGLE_QUOTE: 222,\n // needs localization\n /**\n * OPEN_SQUARE_BRACKET\n */\n OPEN_SQUARE_BRACKET: 219,\n // needs localization\n /**\n * BACKSLASH\n */\n BACKSLASH: 220,\n // needs localization\n /**\n * CLOSE_SQUARE_BRACKET\n */\n CLOSE_SQUARE_BRACKET: 221,\n // needs localization\n /**\n * WIN_KEY\n */\n WIN_KEY: 224,\n /**\n * MAC_FF_META\n */\n MAC_FF_META: 224,\n // Firefox (Gecko) fires this for the meta key instead of 91\n /**\n * WIN_IME\n */\n WIN_IME: 229,\n // ======================== Function ========================\n /**\n * whether text and modified key is entered at the same time.\n */\n isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e) {\n var keyCode = e.keyCode;\n if (e.altKey && !e.ctrlKey || e.metaKey ||\n // Function keys don't generate text\n keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) {\n return false;\n }\n\n // The following keys are quite harmless, even in combination with\n // CTRL, ALT or SHIFT.\n switch (keyCode) {\n case KeyCode.ALT:\n case KeyCode.CAPS_LOCK:\n case KeyCode.CONTEXT_MENU:\n case KeyCode.CTRL:\n case KeyCode.DOWN:\n case KeyCode.END:\n case KeyCode.ESC:\n case KeyCode.HOME:\n case KeyCode.INSERT:\n case KeyCode.LEFT:\n case KeyCode.MAC_FF_META:\n case KeyCode.META:\n case KeyCode.NUMLOCK:\n case KeyCode.NUM_CENTER:\n case KeyCode.PAGE_DOWN:\n case KeyCode.PAGE_UP:\n case KeyCode.PAUSE:\n case KeyCode.PRINT_SCREEN:\n case KeyCode.RIGHT:\n case KeyCode.SHIFT:\n case KeyCode.UP:\n case KeyCode.WIN_KEY:\n case KeyCode.WIN_KEY_RIGHT:\n return false;\n default:\n return true;\n }\n },\n /**\n * whether character is entered.\n */\n isCharacterKey: function isCharacterKey(keyCode) {\n if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) {\n return true;\n }\n if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {\n return true;\n }\n if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {\n return true;\n }\n\n // Safari sends zero key code for non-latin characters.\n if (window.navigator.userAgent.indexOf('WebKit') !== -1 && keyCode === 0) {\n return true;\n }\n switch (keyCode) {\n case KeyCode.SPACE:\n case KeyCode.QUESTION_MARK:\n case KeyCode.NUM_PLUS:\n case KeyCode.NUM_MINUS:\n case KeyCode.NUM_PERIOD:\n case KeyCode.NUM_DIVISION:\n case KeyCode.SEMICOLON:\n case KeyCode.DASH:\n case KeyCode.EQUALS:\n case KeyCode.COMMA:\n case KeyCode.PERIOD:\n case KeyCode.SLASH:\n case KeyCode.APOSTROPHE:\n case KeyCode.SINGLE_QUOTE:\n case KeyCode.OPEN_SQUARE_BRACKET:\n case KeyCode.BACKSLASH:\n case KeyCode.CLOSE_SQUARE_BRACKET:\n return true;\n default:\n return false;\n }\n }\n};\nexport default KeyCode;","import { useRef, useEffect, forwardRef, useImperativeHandle } from 'react';\nimport ReactDOM from 'react-dom';\nimport canUseDom from \"./Dom/canUseDom\";\nvar Portal = /*#__PURE__*/forwardRef(function (props, ref) {\n var didUpdate = props.didUpdate,\n getContainer = props.getContainer,\n children = props.children;\n var parentRef = useRef();\n var containerRef = useRef();\n\n // Ref return nothing, only for wrapper check exist\n useImperativeHandle(ref, function () {\n return {};\n });\n\n // Create container in client side with sync to avoid useEffect not get ref\n var initRef = useRef(false);\n if (!initRef.current && canUseDom()) {\n containerRef.current = getContainer();\n parentRef.current = containerRef.current.parentNode;\n initRef.current = true;\n }\n\n // [Legacy] Used by `rc-trigger`\n useEffect(function () {\n didUpdate === null || didUpdate === void 0 || didUpdate(props);\n });\n useEffect(function () {\n // Restore container to original place\n // React 18 StrictMode will unmount first and mount back for effect test:\n // https://reactjs.org/blog/2022/03/29/react-v18.html#new-strict-mode-behaviors\n if (containerRef.current.parentNode === null && parentRef.current !== null) {\n parentRef.current.appendChild(containerRef.current);\n }\n return function () {\n var _containerRef$current;\n // [Legacy] This should not be handle by Portal but parent PortalWrapper instead.\n // Since some component use `Portal` directly, we have to keep the logic here.\n (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 || (_containerRef$current = _containerRef$current.parentNode) === null || _containerRef$current === void 0 || _containerRef$current.removeChild(containerRef.current);\n };\n }, []);\n return containerRef.current ? /*#__PURE__*/ReactDOM.createPortal(children, containerRef.current) : null;\n});\nexport default Portal;","/**\n * Easy to set element style, return previous style\n * IE browser compatible(IE browser doesn't merge overflow style, need to set it separately)\n * https://github.com/ant-design/ant-design/issues/19393\n *\n */\nfunction setStyle(style) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!style) {\n return {};\n }\n var _options$element = options.element,\n element = _options$element === void 0 ? document.body : _options$element;\n var oldStyle = {};\n var styleKeys = Object.keys(style);\n\n // IE browser compatible\n styleKeys.forEach(function (key) {\n oldStyle[key] = element.style[key];\n });\n styleKeys.forEach(function (key) {\n element.style[key] = style[key];\n });\n return oldStyle;\n}\nexport default setStyle;","import getScrollBarSize from \"./getScrollBarSize\";\nimport setStyle from \"./setStyle\";\nfunction isBodyOverflowing() {\n return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth;\n}\nvar cacheStyle = {};\nexport default (function (close) {\n if (!isBodyOverflowing() && !close) {\n return;\n }\n\n // https://github.com/ant-design/ant-design/issues/19729\n var scrollingEffectClassName = 'ant-scrolling-effect';\n var scrollingEffectClassNameReg = new RegExp(\"\".concat(scrollingEffectClassName), 'g');\n var bodyClassName = document.body.className;\n if (close) {\n if (!scrollingEffectClassNameReg.test(bodyClassName)) return;\n setStyle(cacheStyle);\n cacheStyle = {};\n document.body.className = bodyClassName.replace(scrollingEffectClassNameReg, '').trim();\n return;\n }\n var scrollBarSize = getScrollBarSize();\n if (scrollBarSize) {\n cacheStyle = setStyle({\n position: 'relative',\n width: \"calc(100% - \".concat(scrollBarSize, \"px)\")\n });\n if (!scrollingEffectClassNameReg.test(bodyClassName)) {\n var addClassName = \"\".concat(bodyClassName, \" \").concat(scrollingEffectClassName);\n document.body.className = addClassName.trim();\n }\n }\n});","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport getScrollBarSize from \"../getScrollBarSize\";\nimport setStyle from \"../setStyle\";\nvar uuid = 0;\nvar locks = [];\nvar scrollingEffectClassName = 'ant-scrolling-effect';\nvar scrollingEffectClassNameReg = new RegExp(\"\".concat(scrollingEffectClassName), 'g');\n\n// https://github.com/ant-design/ant-design/issues/19340\n// https://github.com/ant-design/ant-design/issues/19332\nvar cacheStyle = new Map();\nvar ScrollLocker = /*#__PURE__*/_createClass(function ScrollLocker(_options) {\n var _this = this;\n _classCallCheck(this, ScrollLocker);\n _defineProperty(this, \"lockTarget\", void 0);\n _defineProperty(this, \"options\", void 0);\n _defineProperty(this, \"getContainer\", function () {\n var _this$options;\n return (_this$options = _this.options) === null || _this$options === void 0 ? void 0 : _this$options.container;\n });\n // if options change...\n _defineProperty(this, \"reLock\", function (options) {\n var findLock = locks.find(function (_ref) {\n var target = _ref.target;\n return target === _this.lockTarget;\n });\n if (findLock) {\n _this.unLock();\n }\n _this.options = options;\n if (findLock) {\n findLock.options = options;\n _this.lock();\n }\n });\n _defineProperty(this, \"lock\", function () {\n var _this$options3;\n // If lockTarget exist return\n if (locks.some(function (_ref2) {\n var target = _ref2.target;\n return target === _this.lockTarget;\n })) {\n return;\n }\n\n // If same container effect, return\n if (locks.some(function (_ref3) {\n var _this$options2;\n var options = _ref3.options;\n return (options === null || options === void 0 ? void 0 : options.container) === ((_this$options2 = _this.options) === null || _this$options2 === void 0 ? void 0 : _this$options2.container);\n })) {\n locks = [].concat(_toConsumableArray(locks), [{\n target: _this.lockTarget,\n options: _this.options\n }]);\n return;\n }\n var scrollBarSize = 0;\n var container = ((_this$options3 = _this.options) === null || _this$options3 === void 0 ? void 0 : _this$options3.container) || document.body;\n if (container === document.body && window.innerWidth - document.documentElement.clientWidth > 0 || container.scrollHeight > container.clientHeight) {\n if (getComputedStyle(container).overflow !== 'hidden') {\n scrollBarSize = getScrollBarSize();\n }\n }\n var containerClassName = container.className;\n if (locks.filter(function (_ref4) {\n var _this$options4;\n var options = _ref4.options;\n return (options === null || options === void 0 ? void 0 : options.container) === ((_this$options4 = _this.options) === null || _this$options4 === void 0 ? void 0 : _this$options4.container);\n }).length === 0) {\n cacheStyle.set(container, setStyle({\n width: scrollBarSize !== 0 ? \"calc(100% - \".concat(scrollBarSize, \"px)\") : undefined,\n overflow: 'hidden',\n overflowX: 'hidden',\n overflowY: 'hidden'\n }, {\n element: container\n }));\n }\n\n // https://github.com/ant-design/ant-design/issues/19729\n if (!scrollingEffectClassNameReg.test(containerClassName)) {\n var addClassName = \"\".concat(containerClassName, \" \").concat(scrollingEffectClassName);\n container.className = addClassName.trim();\n }\n locks = [].concat(_toConsumableArray(locks), [{\n target: _this.lockTarget,\n options: _this.options\n }]);\n });\n _defineProperty(this, \"unLock\", function () {\n var _this$options5;\n var findLock = locks.find(function (_ref5) {\n var target = _ref5.target;\n return target === _this.lockTarget;\n });\n locks = locks.filter(function (_ref6) {\n var target = _ref6.target;\n return target !== _this.lockTarget;\n });\n if (!findLock || locks.some(function (_ref7) {\n var _findLock$options;\n var options = _ref7.options;\n return (options === null || options === void 0 ? void 0 : options.container) === ((_findLock$options = findLock.options) === null || _findLock$options === void 0 ? void 0 : _findLock$options.container);\n })) {\n return;\n }\n\n // Remove Effect\n var container = ((_this$options5 = _this.options) === null || _this$options5 === void 0 ? void 0 : _this$options5.container) || document.body;\n var containerClassName = container.className;\n if (!scrollingEffectClassNameReg.test(containerClassName)) return;\n setStyle(cacheStyle.get(container), {\n element: container\n });\n cacheStyle.delete(container);\n container.className = container.className.replace(scrollingEffectClassNameReg, '').trim();\n });\n // eslint-disable-next-line no-plusplus\n this.lockTarget = uuid++;\n this.options = _options;\n});\nexport { ScrollLocker as default };","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\n/* eslint-disable no-underscore-dangle,react/require-default-props */\nimport * as React from 'react';\nimport raf from \"./raf\";\nimport Portal from \"./Portal\";\nimport canUseDom from \"./Dom/canUseDom\";\nimport switchScrollingEffect from \"./switchScrollingEffect\";\nimport setStyle from \"./setStyle\";\nimport ScrollLocker from \"./Dom/scrollLocker\";\nvar openCount = 0;\nvar supportDom = canUseDom();\n\n/** @private Test usage only */\nexport function getOpenCount() {\n return process.env.NODE_ENV === 'test' ? openCount : 0;\n}\n\n// https://github.com/ant-design/ant-design/issues/19340\n// https://github.com/ant-design/ant-design/issues/19332\nvar cacheOverflow = {};\nvar getParent = function getParent(getContainer) {\n if (!supportDom) {\n return null;\n }\n if (getContainer) {\n if (typeof getContainer === 'string') {\n return document.querySelectorAll(getContainer)[0];\n }\n if (typeof getContainer === 'function') {\n return getContainer();\n }\n if (_typeof(getContainer) === 'object' && getContainer instanceof window.HTMLElement) {\n return getContainer;\n }\n }\n return document.body;\n};\nvar PortalWrapper = /*#__PURE__*/function (_React$Component) {\n _inherits(PortalWrapper, _React$Component);\n var _super = _createSuper(PortalWrapper);\n function PortalWrapper(props) {\n var _this;\n _classCallCheck(this, PortalWrapper);\n _this = _super.call(this, props);\n _defineProperty(_assertThisInitialized(_this), \"container\", void 0);\n _defineProperty(_assertThisInitialized(_this), \"componentRef\", /*#__PURE__*/React.createRef());\n _defineProperty(_assertThisInitialized(_this), \"rafId\", void 0);\n _defineProperty(_assertThisInitialized(_this), \"scrollLocker\", void 0);\n _defineProperty(_assertThisInitialized(_this), \"renderComponent\", void 0);\n _defineProperty(_assertThisInitialized(_this), \"updateScrollLocker\", function (prevProps) {\n var _ref = prevProps || {},\n prevVisible = _ref.visible;\n var _this$props = _this.props,\n getContainer = _this$props.getContainer,\n visible = _this$props.visible;\n if (visible && visible !== prevVisible && supportDom && getParent(getContainer) !== _this.scrollLocker.getContainer()) {\n _this.scrollLocker.reLock({\n container: getParent(getContainer)\n });\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"updateOpenCount\", function (prevProps) {\n var _ref2 = prevProps || {},\n prevVisible = _ref2.visible,\n prevGetContainer = _ref2.getContainer;\n var _this$props2 = _this.props,\n visible = _this$props2.visible,\n getContainer = _this$props2.getContainer;\n\n // Update count\n if (visible !== prevVisible && supportDom && getParent(getContainer) === document.body) {\n if (visible && !prevVisible) {\n openCount += 1;\n } else if (prevProps) {\n openCount -= 1;\n }\n }\n\n // Clean up container if needed\n var getContainerIsFunc = typeof getContainer === 'function' && typeof prevGetContainer === 'function';\n if (getContainerIsFunc ? getContainer.toString() !== prevGetContainer.toString() : getContainer !== prevGetContainer) {\n _this.removeCurrentContainer();\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"attachToParent\", function () {\n var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n if (force || _this.container && !_this.container.parentNode) {\n var parent = getParent(_this.props.getContainer);\n if (parent) {\n parent.appendChild(_this.container);\n return true;\n }\n return false;\n }\n return true;\n });\n _defineProperty(_assertThisInitialized(_this), \"getContainer\", function () {\n if (!supportDom) {\n return null;\n }\n if (!_this.container) {\n _this.container = document.createElement('div');\n _this.attachToParent(true);\n }\n _this.setWrapperClassName();\n return _this.container;\n });\n _defineProperty(_assertThisInitialized(_this), \"setWrapperClassName\", function () {\n var wrapperClassName = _this.props.wrapperClassName;\n if (_this.container && wrapperClassName && wrapperClassName !== _this.container.className) {\n _this.container.className = wrapperClassName;\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"removeCurrentContainer\", function () {\n var _this$container;\n // Portal will remove from `parentNode`.\n // Let's handle this again to avoid refactor issue.\n (_this$container = _this.container) === null || _this$container === void 0 || (_this$container = _this$container.parentNode) === null || _this$container === void 0 || _this$container.removeChild(_this.container);\n });\n /**\n * Enhance ./switchScrollingEffect\n * 1. Simulate document body scroll bar with\n * 2. Record body has overflow style and recover when all of PortalWrapper invisible\n * 3. Disable body scroll when PortalWrapper has open\n *\n * @memberof PortalWrapper\n */\n _defineProperty(_assertThisInitialized(_this), \"switchScrollingEffect\", function () {\n if (openCount === 1 && !Object.keys(cacheOverflow).length) {\n switchScrollingEffect();\n // Must be set after switchScrollingEffect\n cacheOverflow = setStyle({\n overflow: 'hidden',\n overflowX: 'hidden',\n overflowY: 'hidden'\n });\n } else if (!openCount) {\n setStyle(cacheOverflow);\n cacheOverflow = {};\n switchScrollingEffect(true);\n }\n });\n _this.scrollLocker = new ScrollLocker({\n container: getParent(props.getContainer)\n });\n return _this;\n }\n _createClass(PortalWrapper, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n this.updateOpenCount();\n if (!this.attachToParent()) {\n this.rafId = raf(function () {\n _this2.forceUpdate();\n });\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n this.updateOpenCount(prevProps);\n this.updateScrollLocker(prevProps);\n this.setWrapperClassName();\n this.attachToParent();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var _this$props3 = this.props,\n visible = _this$props3.visible,\n getContainer = _this$props3.getContainer;\n if (supportDom && getParent(getContainer) === document.body) {\n // 离开时不会 render, 导到离开时数值不变,改用 func 。。\n openCount = visible && openCount ? openCount - 1 : openCount;\n }\n this.removeCurrentContainer();\n raf.cancel(this.rafId);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props4 = this.props,\n children = _this$props4.children,\n forceRender = _this$props4.forceRender,\n visible = _this$props4.visible;\n var portal = null;\n var childProps = {\n getOpenCount: function getOpenCount() {\n return openCount;\n },\n getContainer: this.getContainer,\n switchScrollingEffect: this.switchScrollingEffect,\n scrollLocker: this.scrollLocker\n };\n if (forceRender || visible || this.componentRef.current) {\n portal = /*#__PURE__*/React.createElement(Portal, {\n getContainer: this.getContainer,\n ref: this.componentRef\n }, children(childProps));\n }\n return portal;\n }\n }]);\n return PortalWrapper;\n}(React.Component);\nexport default PortalWrapper;","/* eslint-disable no-param-reassign */\nimport { removeCSS, updateCSS } from \"./Dom/dynamicCSS\";\nvar cached;\nfunction measureScrollbarSize(ele) {\n var randomId = \"rc-scrollbar-measure-\".concat(Math.random().toString(36).substring(7));\n var measureEle = document.createElement('div');\n measureEle.id = randomId;\n\n // Create Style\n var measureStyle = measureEle.style;\n measureStyle.position = 'absolute';\n measureStyle.left = '0';\n measureStyle.top = '0';\n measureStyle.width = '100px';\n measureStyle.height = '100px';\n measureStyle.overflow = 'scroll';\n\n // Clone Style if needed\n var fallbackWidth;\n var fallbackHeight;\n if (ele) {\n var targetStyle = getComputedStyle(ele);\n measureStyle.scrollbarColor = targetStyle.scrollbarColor;\n measureStyle.scrollbarWidth = targetStyle.scrollbarWidth;\n\n // Set Webkit style\n var webkitScrollbarStyle = getComputedStyle(ele, '::-webkit-scrollbar');\n var width = parseInt(webkitScrollbarStyle.width, 10);\n var height = parseInt(webkitScrollbarStyle.height, 10);\n\n // Try wrap to handle CSP case\n try {\n var widthStyle = width ? \"width: \".concat(webkitScrollbarStyle.width, \";\") : '';\n var heightStyle = height ? \"height: \".concat(webkitScrollbarStyle.height, \";\") : '';\n updateCSS(\"\\n#\".concat(randomId, \"::-webkit-scrollbar {\\n\").concat(widthStyle, \"\\n\").concat(heightStyle, \"\\n}\"), randomId);\n } catch (e) {\n // Can't wrap, just log error\n console.error(e);\n\n // Get from style directly\n fallbackWidth = width;\n fallbackHeight = height;\n }\n }\n document.body.appendChild(measureEle);\n\n // Measure. Get fallback style if provided\n var scrollWidth = ele && fallbackWidth && !isNaN(fallbackWidth) ? fallbackWidth : measureEle.offsetWidth - measureEle.clientWidth;\n var scrollHeight = ele && fallbackHeight && !isNaN(fallbackHeight) ? fallbackHeight : measureEle.offsetHeight - measureEle.clientHeight;\n\n // Clean up\n document.body.removeChild(measureEle);\n removeCSS(randomId);\n return {\n width: scrollWidth,\n height: scrollHeight\n };\n}\nexport default function getScrollBarSize(fresh) {\n if (typeof document === 'undefined') {\n return 0;\n }\n if (fresh || cached === undefined) {\n cached = measureScrollbarSize();\n }\n return cached.width;\n}\nexport function getTargetScrollBarSize(target) {\n if (typeof document === 'undefined' || !target || !(target instanceof Element)) {\n return {\n width: 0,\n height: 0\n };\n }\n return measureScrollbarSize(target);\n}","import * as React from 'react';\nexport default function useEvent(callback) {\n var fnRef = React.useRef();\n fnRef.current = callback;\n var memoFn = React.useCallback(function () {\n var _fnRef$current;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return (_fnRef$current = fnRef.current) === null || _fnRef$current === void 0 ? void 0 : _fnRef$current.call.apply(_fnRef$current, [fnRef].concat(args));\n }, []);\n return memoFn;\n}","import * as React from 'react';\nimport canUseDom from \"../Dom/canUseDom\";\n\n/**\n * Wrap `React.useLayoutEffect` which will not throw warning message in test env\n */\nvar useInternalLayoutEffect = process.env.NODE_ENV !== 'test' && canUseDom() ? React.useLayoutEffect : React.useEffect;\nvar useLayoutEffect = function useLayoutEffect(callback, deps) {\n var firstMountRef = React.useRef(true);\n useInternalLayoutEffect(function () {\n return callback(firstMountRef.current);\n }, deps);\n\n // We tell react that first mount has passed\n useInternalLayoutEffect(function () {\n firstMountRef.current = false;\n return function () {\n firstMountRef.current = true;\n };\n }, []);\n};\nexport var useLayoutUpdateEffect = function useLayoutUpdateEffect(callback, deps) {\n useLayoutEffect(function (firstMount) {\n if (!firstMount) {\n return callback();\n }\n }, deps);\n};\nexport default useLayoutEffect;","import * as React from 'react';\nexport default function useMemo(getValue, condition, shouldUpdate) {\n var cacheRef = React.useRef({});\n if (!('value' in cacheRef.current) || shouldUpdate(cacheRef.current.condition, condition)) {\n cacheRef.current.value = getValue();\n cacheRef.current.condition = condition;\n }\n return cacheRef.current.value;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useEvent from \"./useEvent\";\nimport { useLayoutUpdateEffect } from \"./useLayoutEffect\";\nimport useState from \"./useState\";\n/** We only think `undefined` is empty */\nfunction hasValue(value) {\n return value !== undefined;\n}\n\n/**\n * Similar to `useState` but will use props value if provided.\n * Note that internal use rc-util `useState` hook.\n */\nexport default function useMergedState(defaultStateValue, option) {\n var _ref = option || {},\n defaultValue = _ref.defaultValue,\n value = _ref.value,\n onChange = _ref.onChange,\n postState = _ref.postState;\n\n // ======================= Init =======================\n var _useState = useState(function () {\n if (hasValue(value)) {\n return value;\n } else if (hasValue(defaultValue)) {\n return typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n } else {\n return typeof defaultStateValue === 'function' ? defaultStateValue() : defaultStateValue;\n }\n }),\n _useState2 = _slicedToArray(_useState, 2),\n innerValue = _useState2[0],\n setInnerValue = _useState2[1];\n var mergedValue = value !== undefined ? value : innerValue;\n var postMergedValue = postState ? postState(mergedValue) : mergedValue;\n\n // ====================== Change ======================\n var onChangeFn = useEvent(onChange);\n var _useState3 = useState([mergedValue]),\n _useState4 = _slicedToArray(_useState3, 2),\n prevValue = _useState4[0],\n setPrevValue = _useState4[1];\n useLayoutUpdateEffect(function () {\n var prev = prevValue[0];\n if (innerValue !== prev) {\n onChangeFn(innerValue, prev);\n }\n }, [prevValue]);\n\n // Sync value back to `undefined` when it from control to un-control\n useLayoutUpdateEffect(function () {\n if (!hasValue(value)) {\n setInnerValue(value);\n }\n }, [value]);\n\n // ====================== Update ======================\n var triggerChange = useEvent(function (updater, ignoreDestroy) {\n setInnerValue(updater, ignoreDestroy);\n setPrevValue([mergedValue], ignoreDestroy);\n });\n return [postMergedValue, triggerChange];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\n/**\n * Same as React.useState but `setState` accept `ignoreDestroy` param to not to setState after destroyed.\n * We do not make this auto is to avoid real memory leak.\n * Developer should confirm it's safe to ignore themselves.\n */\nexport default function useSafeState(defaultValue) {\n var destroyRef = React.useRef(false);\n var _React$useState = React.useState(defaultValue),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n value = _React$useState2[0],\n setValue = _React$useState2[1];\n React.useEffect(function () {\n destroyRef.current = false;\n return function () {\n destroyRef.current = true;\n };\n }, []);\n function safeSetState(updater, ignoreDestroy) {\n if (ignoreDestroy && destroyRef.current) {\n return;\n }\n setValue(updater);\n }\n return [value, safeSetState];\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport warning from \"./warning\";\n\n/**\n * Deeply compares two object literals.\n * @param obj1 object 1\n * @param obj2 object 2\n * @param shallow shallow compare\n * @returns\n */\nfunction isEqual(obj1, obj2) {\n var shallow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n // https://github.com/mapbox/mapbox-gl-js/pull/5979/files#diff-fde7145050c47cc3a306856efd5f9c3016e86e859de9afbd02c879be5067e58f\n var refSet = new Set();\n function deepEqual(a, b) {\n var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var circular = refSet.has(a);\n warning(!circular, 'Warning: There may be circular references');\n if (circular) {\n return false;\n }\n if (a === b) {\n return true;\n }\n if (shallow && level > 1) {\n return false;\n }\n refSet.add(a);\n var newLevel = level + 1;\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n for (var i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i], newLevel)) {\n return false;\n }\n }\n return true;\n }\n if (a && b && _typeof(a) === 'object' && _typeof(b) === 'object') {\n var keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) {\n return false;\n }\n return keys.every(function (key) {\n return deepEqual(a[key], b[key], newLevel);\n });\n }\n // other\n return false;\n }\n return deepEqual(obj1, obj2);\n}\nexport default isEqual;","export default (function () {\n if (typeof navigator === 'undefined' || typeof window === 'undefined') {\n return false;\n }\n var agent = navigator.userAgent || navigator.vendor || window.opera;\n return /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(agent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(agent === null || agent === void 0 ? void 0 : agent.substr(0, 4));\n});","export default function omit(obj, fields) {\n var clone = Object.assign({}, obj);\n if (Array.isArray(fields)) {\n fields.forEach(function (key) {\n delete clone[key];\n });\n }\n return clone;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nvar attributes = \"accept acceptCharset accessKey action allowFullScreen allowTransparency\\n alt async autoComplete autoFocus autoPlay capture cellPadding cellSpacing challenge\\n charSet checked classID className colSpan cols content contentEditable contextMenu\\n controls coords crossOrigin data dateTime default defer dir disabled download draggable\\n encType form formAction formEncType formMethod formNoValidate formTarget frameBorder\\n headers height hidden high href hrefLang htmlFor httpEquiv icon id inputMode integrity\\n is keyParams keyType kind label lang list loop low manifest marginHeight marginWidth max maxLength media\\n mediaGroup method min minLength multiple muted name noValidate nonce open\\n optimum pattern placeholder poster preload radioGroup readOnly rel required\\n reversed role rowSpan rows sandbox scope scoped scrolling seamless selected\\n shape size sizes span spellCheck src srcDoc srcLang srcSet start step style\\n summary tabIndex target title type useMap value width wmode wrap\";\nvar eventsName = \"onCopy onCut onPaste onCompositionEnd onCompositionStart onCompositionUpdate onKeyDown\\n onKeyPress onKeyUp onFocus onBlur onChange onInput onSubmit onClick onContextMenu onDoubleClick\\n onDrag onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop onMouseDown\\n onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp onSelect onTouchCancel\\n onTouchEnd onTouchMove onTouchStart onScroll onWheel onAbort onCanPlay onCanPlayThrough\\n onDurationChange onEmptied onEncrypted onEnded onError onLoadedData onLoadedMetadata\\n onLoadStart onPause onPlay onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting onLoad onError\";\nvar propList = \"\".concat(attributes, \" \").concat(eventsName).split(/[\\s\\n]+/);\n\n/* eslint-enable max-len */\nvar ariaPrefix = 'aria-';\nvar dataPrefix = 'data-';\nfunction match(key, prefix) {\n return key.indexOf(prefix) === 0;\n}\n/**\n * Picker props from exist props with filter\n * @param props Passed props\n * @param ariaOnly boolean | { aria?: boolean; data?: boolean; attr?: boolean; } filter config\n */\nexport default function pickAttrs(props) {\n var ariaOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var mergedConfig;\n if (ariaOnly === false) {\n mergedConfig = {\n aria: true,\n data: true,\n attr: true\n };\n } else if (ariaOnly === true) {\n mergedConfig = {\n aria: true\n };\n } else {\n mergedConfig = _objectSpread({}, ariaOnly);\n }\n var attrs = {};\n Object.keys(props).forEach(function (key) {\n if (\n // Aria\n mergedConfig.aria && (key === 'role' || match(key, ariaPrefix)) ||\n // Data\n mergedConfig.data && match(key, dataPrefix) ||\n // Attr\n mergedConfig.attr && propList.includes(key)) {\n attrs[key] = props[key];\n }\n });\n return attrs;\n}","var raf = function raf(callback) {\n return +setTimeout(callback, 16);\n};\nvar caf = function caf(num) {\n return clearTimeout(num);\n};\nif (typeof window !== 'undefined' && 'requestAnimationFrame' in window) {\n raf = function raf(callback) {\n return window.requestAnimationFrame(callback);\n };\n caf = function caf(handle) {\n return window.cancelAnimationFrame(handle);\n };\n}\nvar rafUUID = 0;\nvar rafIds = new Map();\nfunction cleanup(id) {\n rafIds.delete(id);\n}\nvar wrapperRaf = function wrapperRaf(callback) {\n var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n rafUUID += 1;\n var id = rafUUID;\n function callRef(leftTimes) {\n if (leftTimes === 0) {\n // Clean up\n cleanup(id);\n\n // Trigger\n callback();\n } else {\n // Next raf\n var realId = raf(function () {\n callRef(leftTimes - 1);\n });\n\n // Bind real raf id\n rafIds.set(id, realId);\n }\n }\n callRef(times);\n return id;\n};\nwrapperRaf.cancel = function (id) {\n var realId = rafIds.get(id);\n cleanup(id);\n return caf(realId);\n};\nif (process.env.NODE_ENV !== 'production') {\n wrapperRaf.ids = function () {\n return rafIds;\n };\n}\nexport default wrapperRaf;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { isValidElement, version } from 'react';\nimport { ForwardRef, isFragment, isMemo } from 'react-is';\nimport useMemo from \"./hooks/useMemo\";\nexport var fillRef = function fillRef(ref, node) {\n if (typeof ref === 'function') {\n ref(node);\n } else if (_typeof(ref) === 'object' && ref && 'current' in ref) {\n ref.current = node;\n }\n};\n\n/**\n * Merge refs into one ref function to support ref passing.\n */\nexport var composeRef = function composeRef() {\n for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n refs[_key] = arguments[_key];\n }\n var refList = refs.filter(Boolean);\n if (refList.length <= 1) {\n return refList[0];\n }\n return function (node) {\n refs.forEach(function (ref) {\n fillRef(ref, node);\n });\n };\n};\nexport var useComposeRef = function useComposeRef() {\n for (var _len2 = arguments.length, refs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n refs[_key2] = arguments[_key2];\n }\n return useMemo(function () {\n return composeRef.apply(void 0, refs);\n }, refs, function (prev, next) {\n return prev.length !== next.length || prev.every(function (ref, i) {\n return ref !== next[i];\n });\n });\n};\nexport var supportRef = function supportRef(nodeOrComponent) {\n var _type$prototype, _nodeOrComponent$prot;\n var type = isMemo(nodeOrComponent) ? nodeOrComponent.type.type : nodeOrComponent.type;\n\n // Function component node\n if (typeof type === 'function' && !((_type$prototype = type.prototype) !== null && _type$prototype !== void 0 && _type$prototype.render) && type.$$typeof !== ForwardRef) {\n return false;\n }\n\n // Class component\n if (typeof nodeOrComponent === 'function' && !((_nodeOrComponent$prot = nodeOrComponent.prototype) !== null && _nodeOrComponent$prot !== void 0 && _nodeOrComponent$prot.render) && nodeOrComponent.$$typeof !== ForwardRef) {\n return false;\n }\n return true;\n};\nfunction isReactElement(node) {\n return /*#__PURE__*/isValidElement(node) && !isFragment(node);\n}\nexport var supportNodeRef = function supportNodeRef(node) {\n return isReactElement(node) && supportRef(node);\n};\n\n/**\n * In React 19. `ref` is not a property from node.\n * But a property from `props.ref`.\n * To check if `props.ref` exist or fallback to `ref`.\n */\nexport var getNodeRef = Number(version.split('.')[0]) >= 19 ?\n// >= React 19\nfunction (node) {\n if (isReactElement(node)) {\n return node.props.ref;\n }\n return null;\n} :\n// < React 19\nfunction (node) {\n if (isReactElement(node)) {\n return node.ref;\n }\n return null;\n};","export default function get(entity, path) {\n var current = entity;\n for (var i = 0; i < path.length; i += 1) {\n if (current === null || current === undefined) {\n return undefined;\n }\n current = current[path[i]];\n }\n return current;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _toArray from \"@babel/runtime/helpers/esm/toArray\";\nimport get from \"./get\";\nfunction internalSet(entity, paths, value, removeIfUndefined) {\n if (!paths.length) {\n return value;\n }\n var _paths = _toArray(paths),\n path = _paths[0],\n restPath = _paths.slice(1);\n var clone;\n if (!entity && typeof path === 'number') {\n clone = [];\n } else if (Array.isArray(entity)) {\n clone = _toConsumableArray(entity);\n } else {\n clone = _objectSpread({}, entity);\n }\n\n // Delete prop if `removeIfUndefined` and value is undefined\n if (removeIfUndefined && value === undefined && restPath.length === 1) {\n delete clone[path][restPath[0]];\n } else {\n clone[path] = internalSet(clone[path], restPath, value, removeIfUndefined);\n }\n return clone;\n}\nexport default function set(entity, paths, value) {\n var removeIfUndefined = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n // Do nothing if `removeIfUndefined` and parent object not exist\n if (paths.length && removeIfUndefined && value === undefined && !get(entity, paths.slice(0, -1))) {\n return entity;\n }\n return internalSet(entity, paths, value, removeIfUndefined);\n}\nfunction isObject(obj) {\n return _typeof(obj) === 'object' && obj !== null && Object.getPrototypeOf(obj) === Object.prototype;\n}\nfunction createEmpty(source) {\n return Array.isArray(source) ? [] : {};\n}\nvar keys = typeof Reflect === 'undefined' ? Object.keys : Reflect.ownKeys;\n\n/**\n * Merge objects which will create\n */\nexport function merge() {\n for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n var clone = createEmpty(sources[0]);\n sources.forEach(function (src) {\n function internalMerge(path, parentLoopSet) {\n var loopSet = new Set(parentLoopSet);\n var value = get(src, path);\n var isArr = Array.isArray(value);\n if (isArr || isObject(value)) {\n // Only add not loop obj\n if (!loopSet.has(value)) {\n loopSet.add(value);\n var originValue = get(clone, path);\n if (isArr) {\n // Array will always be override\n clone = set(clone, path, []);\n } else if (!originValue || _typeof(originValue) !== 'object') {\n // Init container if not exist\n clone = set(clone, path, createEmpty(value));\n }\n keys(value).forEach(function (key) {\n internalMerge([].concat(_toConsumableArray(path), [key]), loopSet);\n });\n }\n } else {\n clone = set(clone, path, value);\n }\n }\n internalMerge([]);\n });\n return clone;\n}","/* eslint-disable no-console */\nvar warned = {};\nvar preWarningFns = [];\n\n/**\n * Pre warning enable you to parse content before console.error.\n * Modify to null will prevent warning.\n */\nexport var preMessage = function preMessage(fn) {\n preWarningFns.push(fn);\n};\n\n/**\n * Warning if condition not match.\n * @param valid Condition\n * @param message Warning message\n * @example\n * ```js\n * warning(false, 'some error'); // print some error\n * warning(true, 'some error'); // print nothing\n * warning(1 === 2, 'some error'); // print some error\n * ```\n */\nexport function warning(valid, message) {\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'warning');\n }, message);\n if (finalMessage) {\n console.error(\"Warning: \".concat(finalMessage));\n }\n }\n}\n\n/** @see Similar to {@link warning} */\nexport function note(valid, message) {\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'note');\n }, message);\n if (finalMessage) {\n console.warn(\"Note: \".concat(finalMessage));\n }\n }\n}\nexport function resetWarned() {\n warned = {};\n}\nexport function call(method, valid, message) {\n if (!valid && !warned[message]) {\n method(false, message);\n warned[message] = true;\n }\n}\n\n/** @see Same as {@link warning}, but only warn once for the same message */\nexport function warningOnce(valid, message) {\n call(warning, valid, message);\n}\n\n/** @see Same as {@link warning}, but only warn once for the same message */\nexport function noteOnce(valid, message) {\n call(note, valid, message);\n}\nwarningOnce.preMessage = preMessage;\nwarningOnce.resetWarned = resetWarned;\nwarningOnce.noteOnce = noteOnce;\nexport default warningOnce;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = canUseDom;\nfunction canUseDom() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = contains;\nfunction contains(root, n) {\n if (!root) {\n return false;\n }\n\n // Use native if support\n if (root.contains) {\n return root.contains(n);\n }\n\n // `document.contains` not support with IE11\n var node = n;\n while (node) {\n if (node === root) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.clearContainerCache = clearContainerCache;\nexports.injectCSS = injectCSS;\nexports.removeCSS = removeCSS;\nexports.updateCSS = updateCSS;\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread2\"));\nvar _canUseDom = _interopRequireDefault(require(\"./canUseDom\"));\nvar _contains = _interopRequireDefault(require(\"./contains\"));\nvar APPEND_ORDER = 'data-rc-order';\nvar APPEND_PRIORITY = 'data-rc-priority';\nvar MARK_KEY = \"rc-util-key\";\nvar containerCache = new Map();\nfunction getMark() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n mark = _ref.mark;\n if (mark) {\n return mark.startsWith('data-') ? mark : \"data-\".concat(mark);\n }\n return MARK_KEY;\n}\nfunction getContainer(option) {\n if (option.attachTo) {\n return option.attachTo;\n }\n var head = document.querySelector('head');\n return head || document.body;\n}\nfunction getOrder(prepend) {\n if (prepend === 'queue') {\n return 'prependQueue';\n }\n return prepend ? 'prepend' : 'append';\n}\n\n/**\n * Find style which inject by rc-util\n */\nfunction findStyles(container) {\n return Array.from((containerCache.get(container) || container).children).filter(function (node) {\n return node.tagName === 'STYLE';\n });\n}\nfunction injectCSS(css) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!(0, _canUseDom.default)()) {\n return null;\n }\n var csp = option.csp,\n prepend = option.prepend,\n _option$priority = option.priority,\n priority = _option$priority === void 0 ? 0 : _option$priority;\n var mergedOrder = getOrder(prepend);\n var isPrependQueue = mergedOrder === 'prependQueue';\n var styleNode = document.createElement('style');\n styleNode.setAttribute(APPEND_ORDER, mergedOrder);\n if (isPrependQueue && priority) {\n styleNode.setAttribute(APPEND_PRIORITY, \"\".concat(priority));\n }\n if (csp !== null && csp !== void 0 && csp.nonce) {\n styleNode.nonce = csp === null || csp === void 0 ? void 0 : csp.nonce;\n }\n styleNode.innerHTML = css;\n var container = getContainer(option);\n var firstChild = container.firstChild;\n if (prepend) {\n // If is queue `prepend`, it will prepend first style and then append rest style\n if (isPrependQueue) {\n var existStyle = (option.styles || findStyles(container)).filter(function (node) {\n // Ignore style which not injected by rc-util with prepend\n if (!['prepend', 'prependQueue'].includes(node.getAttribute(APPEND_ORDER))) {\n return false;\n }\n\n // Ignore style which priority less then new style\n var nodePriority = Number(node.getAttribute(APPEND_PRIORITY) || 0);\n return priority >= nodePriority;\n });\n if (existStyle.length) {\n container.insertBefore(styleNode, existStyle[existStyle.length - 1].nextSibling);\n return styleNode;\n }\n }\n\n // Use `insertBefore` as `prepend`\n container.insertBefore(styleNode, firstChild);\n } else {\n container.appendChild(styleNode);\n }\n return styleNode;\n}\nfunction findExistNode(key) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var container = getContainer(option);\n return (option.styles || findStyles(container)).find(function (node) {\n return node.getAttribute(getMark(option)) === key;\n });\n}\nfunction removeCSS(key) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var existNode = findExistNode(key, option);\n if (existNode) {\n var container = getContainer(option);\n container.removeChild(existNode);\n }\n}\n\n/**\n * qiankun will inject `appendChild` to insert into other\n */\nfunction syncRealContainer(container, option) {\n var cachedRealContainer = containerCache.get(container);\n\n // Find real container when not cached or cached container removed\n if (!cachedRealContainer || !(0, _contains.default)(document, cachedRealContainer)) {\n var placeholderStyle = injectCSS('', option);\n var parentNode = placeholderStyle.parentNode;\n containerCache.set(container, parentNode);\n container.removeChild(placeholderStyle);\n }\n}\n\n/**\n * manually clear container cache to avoid global cache in unit testes\n */\nfunction clearContainerCache() {\n containerCache.clear();\n}\nfunction updateCSS(css, key) {\n var originOption = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var container = getContainer(originOption);\n var styles = findStyles(container);\n var option = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originOption), {}, {\n styles: styles\n });\n\n // Sync real parent\n syncRealContainer(container, option);\n var existNode = findExistNode(key, option);\n if (existNode) {\n var _option$csp, _option$csp2;\n if ((_option$csp = option.csp) !== null && _option$csp !== void 0 && _option$csp.nonce && existNode.nonce !== ((_option$csp2 = option.csp) === null || _option$csp2 === void 0 ? void 0 : _option$csp2.nonce)) {\n var _option$csp3;\n existNode.nonce = (_option$csp3 = option.csp) === null || _option$csp3 === void 0 ? void 0 : _option$csp3.nonce;\n }\n if (existNode.innerHTML !== css) {\n existNode.innerHTML = css;\n }\n return existNode;\n }\n var newNode = injectCSS(css, option);\n newNode.setAttribute(getMark(option), key);\n return newNode;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getShadowRoot = getShadowRoot;\nexports.inShadow = inShadow;\nfunction getRoot(ele) {\n var _ele$getRootNode;\n return ele === null || ele === void 0 || (_ele$getRootNode = ele.getRootNode) === null || _ele$getRootNode === void 0 ? void 0 : _ele$getRootNode.call(ele);\n}\n\n/**\n * Check if is in shadowRoot\n */\nfunction inShadow(ele) {\n return getRoot(ele) instanceof ShadowRoot;\n}\n\n/**\n * Return shadowRoot if possible\n */\nfunction getShadowRoot(ele) {\n return inShadow(ele) ? getRoot(ele) : null;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = omit;\nfunction omit(obj, fields) {\n var clone = Object.assign({}, obj);\n if (Array.isArray(fields)) {\n fields.forEach(function (key) {\n delete clone[key];\n });\n }\n return clone;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.call = call;\nexports.default = void 0;\nexports.note = note;\nexports.noteOnce = noteOnce;\nexports.preMessage = void 0;\nexports.resetWarned = resetWarned;\nexports.warning = warning;\nexports.warningOnce = warningOnce;\n/* eslint-disable no-console */\nvar warned = {};\nvar preWarningFns = [];\n\n/**\n * Pre warning enable you to parse content before console.error.\n * Modify to null will prevent warning.\n */\nvar preMessage = exports.preMessage = function preMessage(fn) {\n preWarningFns.push(fn);\n};\n\n/**\n * Warning if condition not match.\n * @param valid Condition\n * @param message Warning message\n * @example\n * ```js\n * warning(false, 'some error'); // print some error\n * warning(true, 'some error'); // print nothing\n * warning(1 === 2, 'some error'); // print some error\n * ```\n */\nfunction warning(valid, message) {\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'warning');\n }, message);\n if (finalMessage) {\n console.error(\"Warning: \".concat(finalMessage));\n }\n }\n}\n\n/** @see Similar to {@link warning} */\nfunction note(valid, message) {\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'note');\n }, message);\n if (finalMessage) {\n console.warn(\"Note: \".concat(finalMessage));\n }\n }\n}\nfunction resetWarned() {\n warned = {};\n}\nfunction call(method, valid, message) {\n if (!valid && !warned[message]) {\n method(false, message);\n warned[message] = true;\n }\n}\n\n/** @see Same as {@link warning}, but only warn once for the same message */\nfunction warningOnce(valid, message) {\n call(warning, valid, message);\n}\n\n/** @see Same as {@link warning}, but only warn once for the same message */\nfunction noteOnce(valid, message) {\n call(note, valid, message);\n}\nwarningOnce.preMessage = preMessage;\nwarningOnce.resetWarned = resetWarned;\nwarningOnce.noteOnce = noteOnce;\nvar _default = exports.default = warningOnce;","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import * as React from 'react';\nexport var CollectionContext = /*#__PURE__*/React.createContext(null);\n/**\n * Collect all the resize event from children ResizeObserver\n */\nexport function Collection(_ref) {\n var children = _ref.children,\n onBatchResize = _ref.onBatchResize;\n var resizeIdRef = React.useRef(0);\n var resizeInfosRef = React.useRef([]);\n var onCollectionResize = React.useContext(CollectionContext);\n var onResize = React.useCallback(function (size, element, data) {\n resizeIdRef.current += 1;\n var currentId = resizeIdRef.current;\n resizeInfosRef.current.push({\n size: size,\n element: element,\n data: data\n });\n Promise.resolve().then(function () {\n if (currentId === resizeIdRef.current) {\n onBatchResize === null || onBatchResize === void 0 || onBatchResize(resizeInfosRef.current);\n resizeInfosRef.current = [];\n }\n });\n\n // Continue bubbling if parent exist\n onCollectionResize === null || onCollectionResize === void 0 || onCollectionResize(size, element, data);\n }, [onBatchResize, onCollectionResize]);\n return /*#__PURE__*/React.createElement(CollectionContext.Provider, {\n value: onResize\n }, children);\n}","import ResizeObserver from 'resize-observer-polyfill';\n// =============================== Const ===============================\nvar elementListeners = new Map();\nfunction onResize(entities) {\n entities.forEach(function (entity) {\n var _elementListeners$get;\n var target = entity.target;\n (_elementListeners$get = elementListeners.get(target)) === null || _elementListeners$get === void 0 || _elementListeners$get.forEach(function (listener) {\n return listener(target);\n });\n });\n}\n\n// Note: ResizeObserver polyfill not support option to measure border-box resize\nvar resizeObserver = new ResizeObserver(onResize);\n\n// Dev env only\nexport var _el = process.env.NODE_ENV !== 'production' ? elementListeners : null; // eslint-disable-line\nexport var _rs = process.env.NODE_ENV !== 'production' ? onResize : null; // eslint-disable-line\n\n// ============================== Observe ==============================\nexport function observe(element, callback) {\n if (!elementListeners.has(element)) {\n elementListeners.set(element, new Set());\n resizeObserver.observe(element);\n }\n elementListeners.get(element).add(callback);\n}\nexport function unobserve(element, callback) {\n if (elementListeners.has(element)) {\n elementListeners.get(element).delete(callback);\n if (!elementListeners.get(element).size) {\n resizeObserver.unobserve(element);\n elementListeners.delete(element);\n }\n }\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\n/**\n * Fallback to findDOMNode if origin ref do not provide any dom element\n */\nvar DomWrapper = /*#__PURE__*/function (_React$Component) {\n _inherits(DomWrapper, _React$Component);\n var _super = _createSuper(DomWrapper);\n function DomWrapper() {\n _classCallCheck(this, DomWrapper);\n return _super.apply(this, arguments);\n }\n _createClass(DomWrapper, [{\n key: \"render\",\n value: function render() {\n return this.props.children;\n }\n }]);\n return DomWrapper;\n}(React.Component);\nexport { DomWrapper as default };","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport { supportRef, useComposeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { CollectionContext } from \"../Collection\";\nimport { observe, unobserve } from \"../utils/observerUtil\";\nimport DomWrapper from \"./DomWrapper\";\nfunction SingleObserver(props, ref) {\n var children = props.children,\n disabled = props.disabled;\n var elementRef = React.useRef(null);\n var wrapperRef = React.useRef(null);\n var onCollectionResize = React.useContext(CollectionContext);\n\n // =========================== Children ===========================\n var isRenderProps = typeof children === 'function';\n var mergedChildren = isRenderProps ? children(elementRef) : children;\n\n // ============================= Size =============================\n var sizeRef = React.useRef({\n width: -1,\n height: -1,\n offsetWidth: -1,\n offsetHeight: -1\n });\n\n // ============================= Ref ==============================\n var canRef = !isRenderProps && /*#__PURE__*/React.isValidElement(mergedChildren) && supportRef(mergedChildren);\n var originRef = canRef ? mergedChildren.ref : null;\n var mergedRef = useComposeRef(originRef, elementRef);\n var getDom = function getDom() {\n var _elementRef$current;\n return findDOMNode(elementRef.current) || (\n // Support `nativeElement` format\n elementRef.current && _typeof(elementRef.current) === 'object' ? findDOMNode((_elementRef$current = elementRef.current) === null || _elementRef$current === void 0 ? void 0 : _elementRef$current.nativeElement) : null) || findDOMNode(wrapperRef.current);\n };\n React.useImperativeHandle(ref, function () {\n return getDom();\n });\n\n // =========================== Observe ============================\n var propsRef = React.useRef(props);\n propsRef.current = props;\n\n // Handler\n var onInternalResize = React.useCallback(function (target) {\n var _propsRef$current = propsRef.current,\n onResize = _propsRef$current.onResize,\n data = _propsRef$current.data;\n var _target$getBoundingCl = target.getBoundingClientRect(),\n width = _target$getBoundingCl.width,\n height = _target$getBoundingCl.height;\n var offsetWidth = target.offsetWidth,\n offsetHeight = target.offsetHeight;\n\n /**\n * Resize observer trigger when content size changed.\n * In most case we just care about element size,\n * let's use `boundary` instead of `contentRect` here to avoid shaking.\n */\n var fixedWidth = Math.floor(width);\n var fixedHeight = Math.floor(height);\n if (sizeRef.current.width !== fixedWidth || sizeRef.current.height !== fixedHeight || sizeRef.current.offsetWidth !== offsetWidth || sizeRef.current.offsetHeight !== offsetHeight) {\n var size = {\n width: fixedWidth,\n height: fixedHeight,\n offsetWidth: offsetWidth,\n offsetHeight: offsetHeight\n };\n sizeRef.current = size;\n\n // IE is strange, right?\n var mergedOffsetWidth = offsetWidth === Math.round(width) ? width : offsetWidth;\n var mergedOffsetHeight = offsetHeight === Math.round(height) ? height : offsetHeight;\n var sizeInfo = _objectSpread(_objectSpread({}, size), {}, {\n offsetWidth: mergedOffsetWidth,\n offsetHeight: mergedOffsetHeight\n });\n\n // Let collection know what happened\n onCollectionResize === null || onCollectionResize === void 0 || onCollectionResize(sizeInfo, target, data);\n if (onResize) {\n // defer the callback but not defer to next frame\n Promise.resolve().then(function () {\n onResize(sizeInfo, target);\n });\n }\n }\n }, []);\n\n // Dynamic observe\n React.useEffect(function () {\n var currentElement = getDom();\n if (currentElement && !disabled) {\n observe(currentElement, onInternalResize);\n }\n return function () {\n return unobserve(currentElement, onInternalResize);\n };\n }, [elementRef.current, disabled]);\n\n // ============================ Render ============================\n return /*#__PURE__*/React.createElement(DomWrapper, {\n ref: wrapperRef\n }, canRef ? /*#__PURE__*/React.cloneElement(mergedChildren, {\n ref: mergedRef\n }) : mergedChildren);\n}\nvar RefSingleObserver = /*#__PURE__*/React.forwardRef(SingleObserver);\nif (process.env.NODE_ENV !== 'production') {\n RefSingleObserver.displayName = 'SingleObserver';\n}\nexport default RefSingleObserver;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport { warning } from \"rc-util/es/warning\";\nimport SingleObserver from \"./SingleObserver\";\nimport { Collection } from \"./Collection\";\nvar INTERNAL_PREFIX_KEY = 'rc-observer-key';\nimport { _rs } from \"./utils/observerUtil\";\nexport { /** @private Test only for mock trigger resize event */\n_rs };\nfunction ResizeObserver(props, ref) {\n var children = props.children;\n var childNodes = typeof children === 'function' ? [children] : toArray(children);\n if (process.env.NODE_ENV !== 'production') {\n if (childNodes.length > 1) {\n warning(false, 'Find more than one child node with `children` in ResizeObserver. Please use ResizeObserver.Collection instead.');\n } else if (childNodes.length === 0) {\n warning(false, '`children` of ResizeObserver is empty. Nothing is in observe.');\n }\n }\n return childNodes.map(function (child, index) {\n var key = (child === null || child === void 0 ? void 0 : child.key) || \"\".concat(INTERNAL_PREFIX_KEY, \"-\").concat(index);\n return /*#__PURE__*/React.createElement(SingleObserver, _extends({}, props, {\n key: key,\n ref: index === 0 ? ref : undefined\n }), child);\n });\n}\nvar RefResizeObserver = /*#__PURE__*/React.forwardRef(ResizeObserver);\nif (process.env.NODE_ENV !== 'production') {\n RefResizeObserver.displayName = 'ResizeObserver';\n}\nRefResizeObserver.Collection = Collection;\nexport default RefResizeObserver;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport ResizeObserver from 'rc-resize-observer';\nimport classNames from 'classnames';\n/**\n * Fill component to provided the scroll content real height.\n */\nvar Filler = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var height = _ref.height,\n offsetY = _ref.offsetY,\n offsetX = _ref.offsetX,\n children = _ref.children,\n prefixCls = _ref.prefixCls,\n onInnerResize = _ref.onInnerResize,\n innerProps = _ref.innerProps,\n rtl = _ref.rtl,\n extra = _ref.extra;\n var outerStyle = {};\n var innerStyle = {\n display: 'flex',\n flexDirection: 'column'\n };\n if (offsetY !== undefined) {\n // Not set `width` since this will break `sticky: right`\n outerStyle = {\n height: height,\n position: 'relative',\n overflow: 'hidden'\n };\n innerStyle = _objectSpread(_objectSpread({}, innerStyle), {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({\n transform: \"translateY(\".concat(offsetY, \"px)\")\n }, rtl ? 'marginRight' : 'marginLeft', -offsetX), \"position\", 'absolute'), \"left\", 0), \"right\", 0), \"top\", 0));\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n style: outerStyle\n }, /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: function onResize(_ref2) {\n var offsetHeight = _ref2.offsetHeight;\n if (offsetHeight && onInnerResize) {\n onInnerResize();\n }\n }\n }, /*#__PURE__*/React.createElement(\"div\", _extends({\n style: innerStyle,\n className: classNames(_defineProperty({}, \"\".concat(prefixCls, \"-holder-inner\"), prefixCls)),\n ref: ref\n }, innerProps), children, extra)));\n});\nFiller.displayName = 'Filler';\nexport default Filler;","import * as React from 'react';\nexport function Item(_ref) {\n var children = _ref.children,\n setRef = _ref.setRef;\n var refFunc = React.useCallback(function (node) {\n setRef(node);\n }, []);\n return /*#__PURE__*/React.cloneElement(children, {\n ref: refFunc\n });\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar isFF = (typeof navigator === \"undefined\" ? \"undefined\" : _typeof(navigator)) === 'object' && /Firefox/i.test(navigator.userAgent);\nexport default isFF;","import { useRef } from 'react';\nexport default (function (isScrollAtTop, isScrollAtBottom, isScrollAtLeft, isScrollAtRight) {\n // Do lock for a wheel when scrolling\n var lockRef = useRef(false);\n var lockTimeoutRef = useRef(null);\n function lockScroll() {\n clearTimeout(lockTimeoutRef.current);\n lockRef.current = true;\n lockTimeoutRef.current = setTimeout(function () {\n lockRef.current = false;\n }, 50);\n }\n\n // Pass to ref since global add is in closure\n var scrollPingRef = useRef({\n top: isScrollAtTop,\n bottom: isScrollAtBottom,\n left: isScrollAtLeft,\n right: isScrollAtRight\n });\n scrollPingRef.current.top = isScrollAtTop;\n scrollPingRef.current.bottom = isScrollAtBottom;\n scrollPingRef.current.left = isScrollAtLeft;\n scrollPingRef.current.right = isScrollAtRight;\n return function (isHorizontal, delta) {\n var smoothOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var originScroll = isHorizontal ?\n // Pass origin wheel when on the left\n delta < 0 && scrollPingRef.current.left ||\n // Pass origin wheel when on the right\n delta > 0 && scrollPingRef.current.right // Pass origin wheel when on the top\n : delta < 0 && scrollPingRef.current.top ||\n // Pass origin wheel when on the bottom\n delta > 0 && scrollPingRef.current.bottom;\n if (smoothOffset && originScroll) {\n // No need lock anymore when it's smooth offset from touchMove interval\n clearTimeout(lockTimeoutRef.current);\n lockRef.current = false;\n } else if (!originScroll || lockRef.current) {\n lockScroll();\n }\n return !lockRef.current && originScroll;\n };\n});","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n// Firefox has low performance of map.\nvar CacheMap = /*#__PURE__*/function () {\n function CacheMap() {\n _classCallCheck(this, CacheMap);\n _defineProperty(this, \"maps\", void 0);\n // Used for cache key\n // `useMemo` no need to update if `id` not change\n _defineProperty(this, \"id\", 0);\n this.maps = Object.create(null);\n }\n _createClass(CacheMap, [{\n key: \"set\",\n value: function set(key, value) {\n this.maps[key] = value;\n this.id += 1;\n }\n }, {\n key: \"get\",\n value: function get(key) {\n return this.maps[key];\n }\n }]);\n return CacheMap;\n}();\nexport default CacheMap;","import useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { useRef } from 'react';\nvar SMOOTH_PTG = 14 / 15;\nexport default function useMobileTouchMove(inVirtual, listRef, callback) {\n var touchedRef = useRef(false);\n var touchXRef = useRef(0);\n var touchYRef = useRef(0);\n var elementRef = useRef(null);\n\n // Smooth scroll\n var intervalRef = useRef(null);\n\n /* eslint-disable prefer-const */\n var cleanUpEvents;\n var onTouchMove = function onTouchMove(e) {\n if (touchedRef.current) {\n var currentX = Math.ceil(e.touches[0].pageX);\n var currentY = Math.ceil(e.touches[0].pageY);\n var offsetX = touchXRef.current - currentX;\n var offsetY = touchYRef.current - currentY;\n var _isHorizontal = Math.abs(offsetX) > Math.abs(offsetY);\n if (_isHorizontal) {\n touchXRef.current = currentX;\n } else {\n touchYRef.current = currentY;\n }\n if (callback(_isHorizontal, _isHorizontal ? offsetX : offsetY)) {\n e.preventDefault();\n }\n // Smooth interval\n clearInterval(intervalRef.current);\n intervalRef.current = setInterval(function () {\n if (_isHorizontal) {\n offsetX *= SMOOTH_PTG;\n } else {\n offsetY *= SMOOTH_PTG;\n }\n var offset = Math.floor(_isHorizontal ? offsetX : offsetY);\n if (!callback(_isHorizontal, offset, true) || Math.abs(offset) <= 0.1) {\n clearInterval(intervalRef.current);\n }\n }, 16);\n }\n };\n var onTouchEnd = function onTouchEnd() {\n touchedRef.current = false;\n cleanUpEvents();\n };\n var onTouchStart = function onTouchStart(e) {\n cleanUpEvents();\n if (e.touches.length === 1 && !touchedRef.current) {\n touchedRef.current = true;\n touchXRef.current = Math.ceil(e.touches[0].pageX);\n touchYRef.current = Math.ceil(e.touches[0].pageY);\n elementRef.current = e.target;\n elementRef.current.addEventListener('touchmove', onTouchMove);\n elementRef.current.addEventListener('touchend', onTouchEnd);\n }\n };\n cleanUpEvents = function cleanUpEvents() {\n if (elementRef.current) {\n elementRef.current.removeEventListener('touchmove', onTouchMove);\n elementRef.current.removeEventListener('touchend', onTouchEnd);\n }\n };\n useLayoutEffect(function () {\n if (inVirtual) {\n listRef.current.addEventListener('touchstart', onTouchStart);\n }\n return function () {\n var _listRef$current;\n (_listRef$current = listRef.current) === null || _listRef$current === void 0 || _listRef$current.removeEventListener('touchstart', onTouchStart);\n cleanUpEvents();\n clearInterval(intervalRef.current);\n };\n }, [inVirtual]);\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport raf from \"rc-util/es/raf\";\nimport * as React from 'react';\nfunction getPageXY(e, horizontal) {\n var obj = 'touches' in e ? e.touches[0] : e;\n return obj[horizontal ? 'pageX' : 'pageY'];\n}\nvar ScrollBar = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n rtl = props.rtl,\n scrollOffset = props.scrollOffset,\n scrollRange = props.scrollRange,\n onStartMove = props.onStartMove,\n onStopMove = props.onStopMove,\n onScroll = props.onScroll,\n horizontal = props.horizontal,\n spinSize = props.spinSize,\n containerSize = props.containerSize,\n style = props.style,\n propsThumbStyle = props.thumbStyle;\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n dragging = _React$useState2[0],\n setDragging = _React$useState2[1];\n var _React$useState3 = React.useState(null),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n pageXY = _React$useState4[0],\n setPageXY = _React$useState4[1];\n var _React$useState5 = React.useState(null),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n startTop = _React$useState6[0],\n setStartTop = _React$useState6[1];\n var isLTR = !rtl;\n\n // ========================= Refs =========================\n var scrollbarRef = React.useRef();\n var thumbRef = React.useRef();\n\n // ======================= Visible ========================\n var _React$useState7 = React.useState(false),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n visible = _React$useState8[0],\n setVisible = _React$useState8[1];\n var visibleTimeoutRef = React.useRef();\n var delayHidden = function delayHidden() {\n clearTimeout(visibleTimeoutRef.current);\n setVisible(true);\n visibleTimeoutRef.current = setTimeout(function () {\n setVisible(false);\n }, 3000);\n };\n\n // ======================== Range =========================\n var enableScrollRange = scrollRange - containerSize || 0;\n var enableOffsetRange = containerSize - spinSize || 0;\n\n // ========================= Top ==========================\n var top = React.useMemo(function () {\n if (scrollOffset === 0 || enableScrollRange === 0) {\n return 0;\n }\n var ptg = scrollOffset / enableScrollRange;\n return ptg * enableOffsetRange;\n }, [scrollOffset, enableScrollRange, enableOffsetRange]);\n\n // ====================== Container =======================\n var onContainerMouseDown = function onContainerMouseDown(e) {\n e.stopPropagation();\n e.preventDefault();\n };\n\n // ======================== Thumb =========================\n var stateRef = React.useRef({\n top: top,\n dragging: dragging,\n pageY: pageXY,\n startTop: startTop\n });\n stateRef.current = {\n top: top,\n dragging: dragging,\n pageY: pageXY,\n startTop: startTop\n };\n var onThumbMouseDown = function onThumbMouseDown(e) {\n setDragging(true);\n setPageXY(getPageXY(e, horizontal));\n setStartTop(stateRef.current.top);\n onStartMove();\n e.stopPropagation();\n e.preventDefault();\n };\n\n // ======================== Effect ========================\n\n // React make event as passive, but we need to preventDefault\n // Add event on dom directly instead.\n // ref: https://github.com/facebook/react/issues/9809\n React.useEffect(function () {\n var onScrollbarTouchStart = function onScrollbarTouchStart(e) {\n e.preventDefault();\n };\n var scrollbarEle = scrollbarRef.current;\n var thumbEle = thumbRef.current;\n scrollbarEle.addEventListener('touchstart', onScrollbarTouchStart);\n thumbEle.addEventListener('touchstart', onThumbMouseDown);\n return function () {\n scrollbarEle.removeEventListener('touchstart', onScrollbarTouchStart);\n thumbEle.removeEventListener('touchstart', onThumbMouseDown);\n };\n }, []);\n\n // Pass to effect\n var enableScrollRangeRef = React.useRef();\n enableScrollRangeRef.current = enableScrollRange;\n var enableOffsetRangeRef = React.useRef();\n enableOffsetRangeRef.current = enableOffsetRange;\n React.useEffect(function () {\n if (dragging) {\n var moveRafId;\n var onMouseMove = function onMouseMove(e) {\n var _stateRef$current = stateRef.current,\n stateDragging = _stateRef$current.dragging,\n statePageY = _stateRef$current.pageY,\n stateStartTop = _stateRef$current.startTop;\n raf.cancel(moveRafId);\n var scale = containerSize / scrollbarRef.current.getBoundingClientRect().height;\n if (stateDragging) {\n var offset = (getPageXY(e, horizontal) - statePageY) * scale;\n var newTop = stateStartTop;\n if (!isLTR && horizontal) {\n newTop -= offset;\n } else {\n newTop += offset;\n }\n var tmpEnableScrollRange = enableScrollRangeRef.current;\n var tmpEnableOffsetRange = enableOffsetRangeRef.current;\n var ptg = tmpEnableOffsetRange ? newTop / tmpEnableOffsetRange : 0;\n var newScrollTop = Math.ceil(ptg * tmpEnableScrollRange);\n newScrollTop = Math.max(newScrollTop, 0);\n newScrollTop = Math.min(newScrollTop, tmpEnableScrollRange);\n moveRafId = raf(function () {\n onScroll(newScrollTop, horizontal);\n });\n }\n };\n var onMouseUp = function onMouseUp() {\n setDragging(false);\n onStopMove();\n };\n window.addEventListener('mousemove', onMouseMove);\n window.addEventListener('touchmove', onMouseMove);\n window.addEventListener('mouseup', onMouseUp);\n window.addEventListener('touchend', onMouseUp);\n return function () {\n window.removeEventListener('mousemove', onMouseMove);\n window.removeEventListener('touchmove', onMouseMove);\n window.removeEventListener('mouseup', onMouseUp);\n window.removeEventListener('touchend', onMouseUp);\n raf.cancel(moveRafId);\n };\n }\n }, [dragging]);\n React.useEffect(function () {\n delayHidden();\n }, [scrollOffset]);\n\n // ====================== Imperative ======================\n React.useImperativeHandle(ref, function () {\n return {\n delayHidden: delayHidden\n };\n });\n\n // ======================== Render ========================\n var scrollbarPrefixCls = \"\".concat(prefixCls, \"-scrollbar\");\n var containerStyle = {\n position: 'absolute',\n visibility: visible ? null : 'hidden'\n };\n var thumbStyle = {\n position: 'absolute',\n background: 'rgba(0, 0, 0, 0.5)',\n borderRadius: 99,\n cursor: 'pointer',\n userSelect: 'none'\n };\n if (horizontal) {\n // Container\n containerStyle.height = 8;\n containerStyle.left = 0;\n containerStyle.right = 0;\n containerStyle.bottom = 0;\n\n // Thumb\n thumbStyle.height = '100%';\n thumbStyle.width = spinSize;\n if (isLTR) {\n thumbStyle.left = top;\n } else {\n thumbStyle.right = top;\n }\n } else {\n // Container\n containerStyle.width = 8;\n containerStyle.top = 0;\n containerStyle.bottom = 0;\n if (isLTR) {\n containerStyle.right = 0;\n } else {\n containerStyle.left = 0;\n }\n\n // Thumb\n thumbStyle.width = '100%';\n thumbStyle.height = spinSize;\n thumbStyle.top = top;\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: scrollbarRef,\n className: classNames(scrollbarPrefixCls, _defineProperty(_defineProperty(_defineProperty({}, \"\".concat(scrollbarPrefixCls, \"-horizontal\"), horizontal), \"\".concat(scrollbarPrefixCls, \"-vertical\"), !horizontal), \"\".concat(scrollbarPrefixCls, \"-visible\"), visible)),\n style: _objectSpread(_objectSpread({}, containerStyle), style),\n onMouseDown: onContainerMouseDown,\n onMouseMove: delayHidden\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: thumbRef,\n className: classNames(\"\".concat(scrollbarPrefixCls, \"-thumb\"), _defineProperty({}, \"\".concat(scrollbarPrefixCls, \"-thumb-moving\"), dragging)),\n style: _objectSpread(_objectSpread({}, thumbStyle), propsThumbStyle),\n onMouseDown: onThumbMouseDown\n }));\n});\nif (process.env.NODE_ENV !== 'production') {\n ScrollBar.displayName = 'ScrollBar';\n}\nexport default ScrollBar;","var MIN_SIZE = 20;\nexport function getSpinSize() {\n var containerSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var scrollRange = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var baseSize = containerSize / scrollRange * containerSize;\n if (isNaN(baseSize)) {\n baseSize = 0;\n }\n baseSize = Math.max(baseSize, MIN_SIZE);\n return Math.floor(baseSize);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"className\", \"height\", \"itemHeight\", \"fullHeight\", \"style\", \"data\", \"children\", \"itemKey\", \"virtual\", \"direction\", \"scrollWidth\", \"component\", \"onScroll\", \"onVirtualScroll\", \"onVisibleChange\", \"innerProps\", \"extraRender\", \"styles\"];\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport { useEvent } from 'rc-util';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport * as React from 'react';\nimport { useRef, useState } from 'react';\nimport { flushSync } from 'react-dom';\nimport Filler from \"./Filler\";\nimport useChildren from \"./hooks/useChildren\";\nimport useDiffItem from \"./hooks/useDiffItem\";\nimport useFrameWheel from \"./hooks/useFrameWheel\";\nimport { useGetSize } from \"./hooks/useGetSize\";\nimport useHeights from \"./hooks/useHeights\";\nimport useMobileTouchMove from \"./hooks/useMobileTouchMove\";\nimport useOriginScroll from \"./hooks/useOriginScroll\";\nimport useScrollTo from \"./hooks/useScrollTo\";\nimport ScrollBar from \"./ScrollBar\";\nimport { getSpinSize } from \"./utils/scrollbarUtil\";\nvar EMPTY_DATA = [];\nvar ScrollStyle = {\n overflowY: 'auto',\n overflowAnchor: 'none'\n};\nexport function RawList(props, ref) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-virtual-list' : _props$prefixCls,\n className = props.className,\n height = props.height,\n itemHeight = props.itemHeight,\n _props$fullHeight = props.fullHeight,\n fullHeight = _props$fullHeight === void 0 ? true : _props$fullHeight,\n style = props.style,\n data = props.data,\n children = props.children,\n itemKey = props.itemKey,\n virtual = props.virtual,\n direction = props.direction,\n scrollWidth = props.scrollWidth,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n onScroll = props.onScroll,\n onVirtualScroll = props.onVirtualScroll,\n onVisibleChange = props.onVisibleChange,\n innerProps = props.innerProps,\n extraRender = props.extraRender,\n styles = props.styles,\n restProps = _objectWithoutProperties(props, _excluded);\n\n // =============================== Item Key ===============================\n var getKey = React.useCallback(function (item) {\n if (typeof itemKey === 'function') {\n return itemKey(item);\n }\n return item === null || item === void 0 ? void 0 : item[itemKey];\n }, [itemKey]);\n\n // ================================ Height ================================\n var _useHeights = useHeights(getKey, null, null),\n _useHeights2 = _slicedToArray(_useHeights, 4),\n setInstanceRef = _useHeights2[0],\n collectHeight = _useHeights2[1],\n heights = _useHeights2[2],\n heightUpdatedMark = _useHeights2[3];\n\n // ================================= MISC =================================\n var useVirtual = !!(virtual !== false && height && itemHeight);\n var containerHeight = React.useMemo(function () {\n return Object.values(heights.maps).reduce(function (total, curr) {\n return total + curr;\n }, 0);\n }, [heights.id, heights.maps]);\n var inVirtual = useVirtual && data && (Math.max(itemHeight * data.length, containerHeight) > height || !!scrollWidth);\n var isRTL = direction === 'rtl';\n var mergedClassName = classNames(prefixCls, _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), isRTL), className);\n var mergedData = data || EMPTY_DATA;\n var componentRef = useRef();\n var fillerInnerRef = useRef();\n var containerRef = useRef();\n\n // =============================== Item Key ===============================\n\n var _useState = useState(0),\n _useState2 = _slicedToArray(_useState, 2),\n offsetTop = _useState2[0],\n setOffsetTop = _useState2[1];\n var _useState3 = useState(0),\n _useState4 = _slicedToArray(_useState3, 2),\n offsetLeft = _useState4[0],\n setOffsetLeft = _useState4[1];\n var _useState5 = useState(false),\n _useState6 = _slicedToArray(_useState5, 2),\n scrollMoving = _useState6[0],\n setScrollMoving = _useState6[1];\n var onScrollbarStartMove = function onScrollbarStartMove() {\n setScrollMoving(true);\n };\n var onScrollbarStopMove = function onScrollbarStopMove() {\n setScrollMoving(false);\n };\n var sharedConfig = {\n getKey: getKey\n };\n\n // ================================ Scroll ================================\n function syncScrollTop(newTop) {\n setOffsetTop(function (origin) {\n var value;\n if (typeof newTop === 'function') {\n value = newTop(origin);\n } else {\n value = newTop;\n }\n var alignedTop = keepInRange(value);\n componentRef.current.scrollTop = alignedTop;\n return alignedTop;\n });\n }\n\n // ================================ Legacy ================================\n // Put ref here since the range is generate by follow\n var rangeRef = useRef({\n start: 0,\n end: mergedData.length\n });\n var diffItemRef = useRef();\n var _useDiffItem = useDiffItem(mergedData, getKey),\n _useDiffItem2 = _slicedToArray(_useDiffItem, 1),\n diffItem = _useDiffItem2[0];\n diffItemRef.current = diffItem;\n\n // ========================== Visible Calculation =========================\n var _React$useMemo = React.useMemo(function () {\n if (!useVirtual) {\n return {\n scrollHeight: undefined,\n start: 0,\n end: mergedData.length - 1,\n offset: undefined\n };\n }\n\n // Always use virtual scroll bar in avoid shaking\n if (!inVirtual) {\n var _fillerInnerRef$curre;\n return {\n scrollHeight: ((_fillerInnerRef$curre = fillerInnerRef.current) === null || _fillerInnerRef$curre === void 0 ? void 0 : _fillerInnerRef$curre.offsetHeight) || 0,\n start: 0,\n end: mergedData.length - 1,\n offset: undefined\n };\n }\n var itemTop = 0;\n var startIndex;\n var startOffset;\n var endIndex;\n var dataLen = mergedData.length;\n for (var i = 0; i < dataLen; i += 1) {\n var _item = mergedData[i];\n var key = getKey(_item);\n var cacheHeight = heights.get(key);\n var currentItemBottom = itemTop + (cacheHeight === undefined ? itemHeight : cacheHeight);\n\n // Check item top in the range\n if (currentItemBottom >= offsetTop && startIndex === undefined) {\n startIndex = i;\n startOffset = itemTop;\n }\n\n // Check item bottom in the range. We will render additional one item for motion usage\n if (currentItemBottom > offsetTop + height && endIndex === undefined) {\n endIndex = i;\n }\n itemTop = currentItemBottom;\n }\n\n // When scrollTop at the end but data cut to small count will reach this\n if (startIndex === undefined) {\n startIndex = 0;\n startOffset = 0;\n endIndex = Math.ceil(height / itemHeight);\n }\n if (endIndex === undefined) {\n endIndex = mergedData.length - 1;\n }\n\n // Give cache to improve scroll experience\n endIndex = Math.min(endIndex + 1, mergedData.length - 1);\n return {\n scrollHeight: itemTop,\n start: startIndex,\n end: endIndex,\n offset: startOffset\n };\n }, [inVirtual, useVirtual, offsetTop, mergedData, heightUpdatedMark, height]),\n scrollHeight = _React$useMemo.scrollHeight,\n start = _React$useMemo.start,\n end = _React$useMemo.end,\n fillerOffset = _React$useMemo.offset;\n rangeRef.current.start = start;\n rangeRef.current.end = end;\n\n // ================================= Size =================================\n var _React$useState = React.useState({\n width: 0,\n height: height\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n size = _React$useState2[0],\n setSize = _React$useState2[1];\n var onHolderResize = function onHolderResize(sizeInfo) {\n setSize({\n width: sizeInfo.offsetWidth,\n height: sizeInfo.offsetHeight\n });\n };\n\n // Hack on scrollbar to enable flash call\n var verticalScrollBarRef = useRef();\n var horizontalScrollBarRef = useRef();\n var horizontalScrollBarSpinSize = React.useMemo(function () {\n return getSpinSize(size.width, scrollWidth);\n }, [size.width, scrollWidth]);\n var verticalScrollBarSpinSize = React.useMemo(function () {\n return getSpinSize(size.height, scrollHeight);\n }, [size.height, scrollHeight]);\n\n // =============================== In Range ===============================\n var maxScrollHeight = scrollHeight - height;\n var maxScrollHeightRef = useRef(maxScrollHeight);\n maxScrollHeightRef.current = maxScrollHeight;\n function keepInRange(newScrollTop) {\n var newTop = newScrollTop;\n if (!Number.isNaN(maxScrollHeightRef.current)) {\n newTop = Math.min(newTop, maxScrollHeightRef.current);\n }\n newTop = Math.max(newTop, 0);\n return newTop;\n }\n var isScrollAtTop = offsetTop <= 0;\n var isScrollAtBottom = offsetTop >= maxScrollHeight;\n var isScrollAtLeft = offsetLeft <= 0;\n var isScrollAtRight = offsetLeft >= scrollWidth;\n var originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom, isScrollAtLeft, isScrollAtRight);\n\n // ================================ Scroll ================================\n var getVirtualScrollInfo = function getVirtualScrollInfo() {\n return {\n x: isRTL ? -offsetLeft : offsetLeft,\n y: offsetTop\n };\n };\n var lastVirtualScrollInfoRef = useRef(getVirtualScrollInfo());\n var triggerScroll = useEvent(function (params) {\n if (onVirtualScroll) {\n var nextInfo = _objectSpread(_objectSpread({}, getVirtualScrollInfo()), params);\n\n // Trigger when offset changed\n if (lastVirtualScrollInfoRef.current.x !== nextInfo.x || lastVirtualScrollInfoRef.current.y !== nextInfo.y) {\n onVirtualScroll(nextInfo);\n lastVirtualScrollInfoRef.current = nextInfo;\n }\n }\n });\n function onScrollBar(newScrollOffset, horizontal) {\n var newOffset = newScrollOffset;\n if (horizontal) {\n flushSync(function () {\n setOffsetLeft(newOffset);\n });\n triggerScroll();\n } else {\n syncScrollTop(newOffset);\n }\n }\n\n // When data size reduce. It may trigger native scroll event back to fit scroll position\n function onFallbackScroll(e) {\n var newScrollTop = e.currentTarget.scrollTop;\n if (newScrollTop !== offsetTop) {\n syncScrollTop(newScrollTop);\n }\n\n // Trigger origin onScroll\n onScroll === null || onScroll === void 0 || onScroll(e);\n triggerScroll();\n }\n var keepInHorizontalRange = function keepInHorizontalRange(nextOffsetLeft) {\n var tmpOffsetLeft = nextOffsetLeft;\n var max = !!scrollWidth ? scrollWidth - size.width : 0;\n tmpOffsetLeft = Math.max(tmpOffsetLeft, 0);\n tmpOffsetLeft = Math.min(tmpOffsetLeft, max);\n return tmpOffsetLeft;\n };\n var onWheelDelta = useEvent(function (offsetXY, fromHorizontal) {\n if (fromHorizontal) {\n // Horizontal scroll no need sync virtual position\n\n flushSync(function () {\n setOffsetLeft(function (left) {\n var nextOffsetLeft = left + (isRTL ? -offsetXY : offsetXY);\n return keepInHorizontalRange(nextOffsetLeft);\n });\n });\n triggerScroll();\n } else {\n syncScrollTop(function (top) {\n var newTop = top + offsetXY;\n return newTop;\n });\n }\n });\n\n // Since this added in global,should use ref to keep update\n var _useFrameWheel = useFrameWheel(useVirtual, isScrollAtTop, isScrollAtBottom, isScrollAtLeft, isScrollAtRight, !!scrollWidth, onWheelDelta),\n _useFrameWheel2 = _slicedToArray(_useFrameWheel, 2),\n onRawWheel = _useFrameWheel2[0],\n onFireFoxScroll = _useFrameWheel2[1];\n\n // Mobile touch move\n useMobileTouchMove(useVirtual, componentRef, function (isHorizontal, delta, smoothOffset) {\n if (originScroll(isHorizontal, delta, smoothOffset)) {\n return false;\n }\n onRawWheel({\n preventDefault: function preventDefault() {},\n deltaX: isHorizontal ? delta : 0,\n deltaY: isHorizontal ? 0 : delta\n });\n return true;\n });\n useLayoutEffect(function () {\n // Firefox only\n function onMozMousePixelScroll(e) {\n if (useVirtual) {\n e.preventDefault();\n }\n }\n var componentEle = componentRef.current;\n componentEle.addEventListener('wheel', onRawWheel);\n componentEle.addEventListener('DOMMouseScroll', onFireFoxScroll);\n componentEle.addEventListener('MozMousePixelScroll', onMozMousePixelScroll);\n return function () {\n componentEle.removeEventListener('wheel', onRawWheel);\n componentEle.removeEventListener('DOMMouseScroll', onFireFoxScroll);\n componentEle.removeEventListener('MozMousePixelScroll', onMozMousePixelScroll);\n };\n }, [useVirtual]);\n\n // Sync scroll left\n useLayoutEffect(function () {\n if (scrollWidth) {\n var newOffsetLeft = keepInHorizontalRange(offsetLeft);\n setOffsetLeft(newOffsetLeft);\n triggerScroll({\n x: newOffsetLeft\n });\n }\n }, [size.width, scrollWidth]);\n\n // ================================= Ref ==================================\n var delayHideScrollBar = function delayHideScrollBar() {\n var _verticalScrollBarRef, _horizontalScrollBarR;\n (_verticalScrollBarRef = verticalScrollBarRef.current) === null || _verticalScrollBarRef === void 0 || _verticalScrollBarRef.delayHidden();\n (_horizontalScrollBarR = horizontalScrollBarRef.current) === null || _horizontalScrollBarR === void 0 || _horizontalScrollBarR.delayHidden();\n };\n var _scrollTo = useScrollTo(componentRef, mergedData, heights, itemHeight, getKey, function () {\n return collectHeight(true);\n }, syncScrollTop, delayHideScrollBar);\n React.useImperativeHandle(ref, function () {\n return {\n nativeElement: containerRef.current,\n getScrollInfo: getVirtualScrollInfo,\n scrollTo: function scrollTo(config) {\n function isPosScroll(arg) {\n return arg && _typeof(arg) === 'object' && ('left' in arg || 'top' in arg);\n }\n if (isPosScroll(config)) {\n // Scroll X\n if (config.left !== undefined) {\n setOffsetLeft(keepInHorizontalRange(config.left));\n }\n\n // Scroll Y\n _scrollTo(config.top);\n } else {\n _scrollTo(config);\n }\n }\n };\n });\n\n // ================================ Effect ================================\n /** We need told outside that some list not rendered */\n useLayoutEffect(function () {\n if (onVisibleChange) {\n var renderList = mergedData.slice(start, end + 1);\n onVisibleChange(renderList, mergedData);\n }\n }, [start, end, mergedData]);\n\n // ================================ Extra =================================\n var getSize = useGetSize(mergedData, getKey, heights, itemHeight);\n var extraContent = extraRender === null || extraRender === void 0 ? void 0 : extraRender({\n start: start,\n end: end,\n virtual: inVirtual,\n offsetX: offsetLeft,\n offsetY: fillerOffset,\n rtl: isRTL,\n getSize: getSize\n });\n\n // ================================ Render ================================\n var listChildren = useChildren(mergedData, start, end, scrollWidth, offsetLeft, setInstanceRef, children, sharedConfig);\n var componentStyle = null;\n if (height) {\n componentStyle = _objectSpread(_defineProperty({}, fullHeight ? 'height' : 'maxHeight', height), ScrollStyle);\n if (useVirtual) {\n componentStyle.overflowY = 'hidden';\n if (scrollWidth) {\n componentStyle.overflowX = 'hidden';\n }\n if (scrollMoving) {\n componentStyle.pointerEvents = 'none';\n }\n }\n }\n var containerProps = {};\n if (isRTL) {\n containerProps.dir = 'rtl';\n }\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: containerRef,\n style: _objectSpread(_objectSpread({}, style), {}, {\n position: 'relative'\n }),\n className: mergedClassName\n }, containerProps, restProps), /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onHolderResize\n }, /*#__PURE__*/React.createElement(Component, {\n className: \"\".concat(prefixCls, \"-holder\"),\n style: componentStyle,\n ref: componentRef,\n onScroll: onFallbackScroll,\n onMouseEnter: delayHideScrollBar\n }, /*#__PURE__*/React.createElement(Filler, {\n prefixCls: prefixCls,\n height: scrollHeight,\n offsetX: offsetLeft,\n offsetY: fillerOffset,\n scrollWidth: scrollWidth,\n onInnerResize: collectHeight,\n ref: fillerInnerRef,\n innerProps: innerProps,\n rtl: isRTL,\n extra: extraContent\n }, listChildren))), inVirtual && scrollHeight > height && /*#__PURE__*/React.createElement(ScrollBar, {\n ref: verticalScrollBarRef,\n prefixCls: prefixCls,\n scrollOffset: offsetTop,\n scrollRange: scrollHeight,\n rtl: isRTL,\n onScroll: onScrollBar,\n onStartMove: onScrollbarStartMove,\n onStopMove: onScrollbarStopMove,\n spinSize: verticalScrollBarSpinSize,\n containerSize: size.height,\n style: styles === null || styles === void 0 ? void 0 : styles.verticalScrollBar,\n thumbStyle: styles === null || styles === void 0 ? void 0 : styles.verticalScrollBarThumb\n }), inVirtual && scrollWidth > size.width && /*#__PURE__*/React.createElement(ScrollBar, {\n ref: horizontalScrollBarRef,\n prefixCls: prefixCls,\n scrollOffset: offsetLeft,\n scrollRange: scrollWidth,\n rtl: isRTL,\n onScroll: onScrollBar,\n onStartMove: onScrollbarStartMove,\n onStopMove: onScrollbarStopMove,\n spinSize: horizontalScrollBarSpinSize,\n containerSize: size.width,\n horizontal: true,\n style: styles === null || styles === void 0 ? void 0 : styles.horizontalScrollBar,\n thumbStyle: styles === null || styles === void 0 ? void 0 : styles.horizontalScrollBarThumb\n }));\n}\nvar List = /*#__PURE__*/React.forwardRef(RawList);\nList.displayName = 'List';\nexport default List;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef, useEffect } from 'react';\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport raf from \"rc-util/es/raf\";\nimport CacheMap from \"../utils/CacheMap\";\nexport default function useHeights(getKey, onItemAdd, onItemRemove) {\n var _React$useState = React.useState(0),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n updatedMark = _React$useState2[0],\n setUpdatedMark = _React$useState2[1];\n var instanceRef = useRef(new Map());\n var heightsRef = useRef(new CacheMap());\n var collectRafRef = useRef();\n function cancelRaf() {\n raf.cancel(collectRafRef.current);\n }\n function collectHeight() {\n var sync = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n cancelRaf();\n var doCollect = function doCollect() {\n instanceRef.current.forEach(function (element, key) {\n if (element && element.offsetParent) {\n var htmlElement = findDOMNode(element);\n var offsetHeight = htmlElement.offsetHeight;\n if (heightsRef.current.get(key) !== offsetHeight) {\n heightsRef.current.set(key, htmlElement.offsetHeight);\n }\n }\n });\n\n // Always trigger update mark to tell parent that should re-calculate heights when resized\n setUpdatedMark(function (c) {\n return c + 1;\n });\n };\n if (sync) {\n doCollect();\n } else {\n collectRafRef.current = raf(doCollect);\n }\n }\n function setInstanceRef(item, instance) {\n var key = getKey(item);\n var origin = instanceRef.current.get(key);\n if (instance) {\n instanceRef.current.set(key, instance);\n collectHeight();\n } else {\n instanceRef.current.delete(key);\n }\n\n // Instance changed\n if (!origin !== !instance) {\n if (instance) {\n onItemAdd === null || onItemAdd === void 0 || onItemAdd(item);\n } else {\n onItemRemove === null || onItemRemove === void 0 || onItemRemove(item);\n }\n }\n }\n useEffect(function () {\n return cancelRaf;\n }, []);\n return [setInstanceRef, collectHeight, heightsRef.current, updatedMark];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { findListDiffIndex } from \"../utils/algorithmUtil\";\nexport default function useDiffItem(data, getKey, onDiff) {\n var _React$useState = React.useState(data),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n prevData = _React$useState2[0],\n setPrevData = _React$useState2[1];\n var _React$useState3 = React.useState(null),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n diffItem = _React$useState4[0],\n setDiffItem = _React$useState4[1];\n React.useEffect(function () {\n var diff = findListDiffIndex(prevData || [], data || [], getKey);\n if ((diff === null || diff === void 0 ? void 0 : diff.index) !== undefined) {\n onDiff === null || onDiff === void 0 || onDiff(diff.index);\n setDiffItem(data[diff.index]);\n }\n setPrevData(data);\n }, [data]);\n return [diffItem];\n}","/**\n * Get index with specific start index one by one. e.g.\n * min: 3, max: 9, start: 6\n *\n * Return index is:\n * [0]: 6\n * [1]: 7\n * [2]: 5\n * [3]: 8\n * [4]: 4\n * [5]: 9\n * [6]: 3\n */\nexport function getIndexByStartLoc(min, max, start, index) {\n var beforeCount = start - min;\n var afterCount = max - start;\n var balanceCount = Math.min(beforeCount, afterCount) * 2;\n\n // Balance\n if (index <= balanceCount) {\n var stepIndex = Math.floor(index / 2);\n if (index % 2) {\n return start + stepIndex + 1;\n }\n return start - stepIndex;\n }\n\n // One is out of range\n if (beforeCount > afterCount) {\n return start - (index - afterCount);\n }\n return start + (index - beforeCount);\n}\n\n/**\n * We assume that 2 list has only 1 item diff and others keeping the order.\n * So we can use dichotomy algorithm to find changed one.\n */\nexport function findListDiffIndex(originList, targetList, getKey) {\n var originLen = originList.length;\n var targetLen = targetList.length;\n var shortList;\n var longList;\n if (originLen === 0 && targetLen === 0) {\n return null;\n }\n if (originLen < targetLen) {\n shortList = originList;\n longList = targetList;\n } else {\n shortList = targetList;\n longList = originList;\n }\n var notExistKey = {\n __EMPTY_ITEM__: true\n };\n function getItemKey(item) {\n if (item !== undefined) {\n return getKey(item);\n }\n return notExistKey;\n }\n\n // Loop to find diff one\n var diffIndex = null;\n var multiple = Math.abs(originLen - targetLen) !== 1;\n for (var i = 0; i < longList.length; i += 1) {\n var shortKey = getItemKey(shortList[i]);\n var longKey = getItemKey(longList[i]);\n if (shortKey !== longKey) {\n diffIndex = i;\n multiple = multiple || shortKey !== getItemKey(longList[i + 1]);\n break;\n }\n }\n return diffIndex === null ? null : {\n index: diffIndex,\n multiple: multiple\n };\n}","import raf from \"rc-util/es/raf\";\nimport { useRef } from 'react';\nimport isFF from \"../utils/isFirefox\";\nimport useOriginScroll from \"./useOriginScroll\";\nexport default function useFrameWheel(inVirtual, isScrollAtTop, isScrollAtBottom, isScrollAtLeft, isScrollAtRight, horizontalScroll,\n/***\n * Return `true` when you need to prevent default event\n */\nonWheelDelta) {\n var offsetRef = useRef(0);\n var nextFrameRef = useRef(null);\n\n // Firefox patch\n var wheelValueRef = useRef(null);\n var isMouseScrollRef = useRef(false);\n\n // Scroll status sync\n var originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom, isScrollAtLeft, isScrollAtRight);\n function onWheelY(event, deltaY) {\n raf.cancel(nextFrameRef.current);\n offsetRef.current += deltaY;\n wheelValueRef.current = deltaY;\n\n // Do nothing when scroll at the edge, Skip check when is in scroll\n if (originScroll(false, deltaY)) return;\n\n // Proxy of scroll events\n if (!isFF) {\n event.preventDefault();\n }\n nextFrameRef.current = raf(function () {\n // Patch a multiple for Firefox to fix wheel number too small\n // ref: https://github.com/ant-design/ant-design/issues/26372#issuecomment-679460266\n var patchMultiple = isMouseScrollRef.current ? 10 : 1;\n onWheelDelta(offsetRef.current * patchMultiple);\n offsetRef.current = 0;\n });\n }\n function onWheelX(event, deltaX) {\n onWheelDelta(deltaX, true);\n if (!isFF) {\n event.preventDefault();\n }\n }\n\n // Check for which direction does wheel do. `sx` means `shift + wheel`\n var wheelDirectionRef = useRef(null);\n var wheelDirectionCleanRef = useRef(null);\n function onWheel(event) {\n if (!inVirtual) return;\n\n // Wait for 2 frame to clean direction\n raf.cancel(wheelDirectionCleanRef.current);\n wheelDirectionCleanRef.current = raf(function () {\n wheelDirectionRef.current = null;\n }, 2);\n var deltaX = event.deltaX,\n deltaY = event.deltaY,\n shiftKey = event.shiftKey;\n var mergedDeltaX = deltaX;\n var mergedDeltaY = deltaY;\n if (wheelDirectionRef.current === 'sx' || !wheelDirectionRef.current && (shiftKey || false) && deltaY && !deltaX) {\n mergedDeltaX = deltaY;\n mergedDeltaY = 0;\n wheelDirectionRef.current = 'sx';\n }\n var absX = Math.abs(mergedDeltaX);\n var absY = Math.abs(mergedDeltaY);\n if (wheelDirectionRef.current === null) {\n wheelDirectionRef.current = horizontalScroll && absX > absY ? 'x' : 'y';\n }\n if (wheelDirectionRef.current === 'y') {\n onWheelY(event, mergedDeltaY);\n } else {\n onWheelX(event, mergedDeltaX);\n }\n }\n\n // A patch for firefox\n function onFireFoxScroll(event) {\n if (!inVirtual) return;\n isMouseScrollRef.current = event.detail === wheelValueRef.current;\n }\n return [onWheel, onFireFoxScroll];\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n/* eslint-disable no-param-reassign */\nimport * as React from 'react';\nimport raf from \"rc-util/es/raf\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { warning } from 'rc-util';\nvar MAX_TIMES = 10;\nexport default function useScrollTo(containerRef, data, heights, itemHeight, getKey, collectHeight, syncScrollTop, triggerFlash) {\n var scrollRef = React.useRef();\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n syncState = _React$useState2[0],\n setSyncState = _React$useState2[1];\n\n // ========================== Sync Scroll ==========================\n useLayoutEffect(function () {\n if (syncState && syncState.times < MAX_TIMES) {\n // Never reach\n if (!containerRef.current) {\n setSyncState(function (ori) {\n return _objectSpread({}, ori);\n });\n return;\n }\n collectHeight();\n var targetAlign = syncState.targetAlign,\n originAlign = syncState.originAlign,\n index = syncState.index,\n offset = syncState.offset;\n var height = containerRef.current.clientHeight;\n var needCollectHeight = false;\n var newTargetAlign = targetAlign;\n var targetTop = null;\n\n // Go to next frame if height not exist\n if (height) {\n var mergedAlign = targetAlign || originAlign;\n\n // Get top & bottom\n var stackTop = 0;\n var itemTop = 0;\n var itemBottom = 0;\n var maxLen = Math.min(data.length - 1, index);\n for (var i = 0; i <= maxLen; i += 1) {\n var key = getKey(data[i]);\n itemTop = stackTop;\n var cacheHeight = heights.get(key);\n itemBottom = itemTop + (cacheHeight === undefined ? itemHeight : cacheHeight);\n stackTop = itemBottom;\n }\n\n // Check if need sync height (visible range has item not record height)\n var leftHeight = mergedAlign === 'top' ? offset : height - offset;\n for (var _i = maxLen; _i >= 0; _i -= 1) {\n var _key = getKey(data[_i]);\n var _cacheHeight = heights.get(_key);\n if (_cacheHeight === undefined) {\n needCollectHeight = true;\n break;\n }\n leftHeight -= _cacheHeight;\n if (leftHeight <= 0) {\n break;\n }\n }\n\n // Scroll to\n switch (mergedAlign) {\n case 'top':\n targetTop = itemTop - offset;\n break;\n case 'bottom':\n targetTop = itemBottom - height + offset;\n break;\n default:\n {\n var scrollTop = containerRef.current.scrollTop;\n var scrollBottom = scrollTop + height;\n if (itemTop < scrollTop) {\n newTargetAlign = 'top';\n } else if (itemBottom > scrollBottom) {\n newTargetAlign = 'bottom';\n }\n }\n }\n if (targetTop !== null) {\n syncScrollTop(targetTop);\n }\n\n // One more time for sync\n if (targetTop !== syncState.lastTop) {\n needCollectHeight = true;\n }\n }\n\n // Trigger next effect\n if (needCollectHeight) {\n setSyncState(_objectSpread(_objectSpread({}, syncState), {}, {\n times: syncState.times + 1,\n targetAlign: newTargetAlign,\n lastTop: targetTop\n }));\n }\n } else if (process.env.NODE_ENV !== 'production' && (syncState === null || syncState === void 0 ? void 0 : syncState.times) === MAX_TIMES) {\n warning(false, 'Seems `scrollTo` with `rc-virtual-list` reach the max limitation. Please fire issue for us. Thanks.');\n }\n }, [syncState, containerRef.current]);\n\n // =========================== Scroll To ===========================\n return function (arg) {\n // When not argument provided, we think dev may want to show the scrollbar\n if (arg === null || arg === undefined) {\n triggerFlash();\n return;\n }\n\n // Normal scroll logic\n raf.cancel(scrollRef.current);\n if (typeof arg === 'number') {\n syncScrollTop(arg);\n } else if (arg && _typeof(arg) === 'object') {\n var index;\n var align = arg.align;\n if ('index' in arg) {\n index = arg.index;\n } else {\n index = data.findIndex(function (item) {\n return getKey(item) === arg.key;\n });\n }\n var _arg$offset = arg.offset,\n offset = _arg$offset === void 0 ? 0 : _arg$offset;\n setSyncState({\n times: 0,\n index: index,\n offset: offset,\n originAlign: align\n });\n }\n };\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\n\n/**\n * Size info need loop query for the `heights` which will has the perf issue.\n * Let cache result for each render phase.\n */\nexport function useGetSize(mergedData, getKey, heights, itemHeight) {\n var _React$useMemo = React.useMemo(function () {\n return [new Map(), []];\n }, [mergedData, heights.id, itemHeight]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n key2Index = _React$useMemo2[0],\n bottomList = _React$useMemo2[1];\n var getSize = function getSize(startKey) {\n var endKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : startKey;\n // Get from cache first\n var startIndex = key2Index.get(startKey);\n var endIndex = key2Index.get(endKey);\n\n // Loop to fill the cache\n if (startIndex === undefined || endIndex === undefined) {\n var dataLen = mergedData.length;\n for (var i = bottomList.length; i < dataLen; i += 1) {\n var _heights$get;\n var item = mergedData[i];\n var key = getKey(item);\n key2Index.set(key, i);\n var cacheHeight = (_heights$get = heights.get(key)) !== null && _heights$get !== void 0 ? _heights$get : itemHeight;\n bottomList[i] = (bottomList[i - 1] || 0) + cacheHeight;\n if (key === startKey) {\n startIndex = i;\n }\n if (key === endKey) {\n endIndex = i;\n }\n if (startIndex !== undefined && endIndex !== undefined) {\n break;\n }\n }\n }\n return {\n top: bottomList[startIndex - 1] || 0,\n bottom: bottomList[endIndex]\n };\n };\n return getSize;\n}","import * as React from 'react';\nimport { Item } from \"../Item\";\nexport default function useChildren(list, startIndex, endIndex, scrollWidth, offsetX, setNodeRef, renderFunc, _ref) {\n var getKey = _ref.getKey;\n return list.slice(startIndex, endIndex + 1).map(function (item, index) {\n var eleIndex = startIndex + index;\n var node = renderFunc(item, eleIndex, {\n style: {\n width: scrollWidth\n },\n offsetX: offsetX\n });\n var key = getKey(item);\n return /*#__PURE__*/React.createElement(Item, {\n key: key,\n setRef: function setRef(ele) {\n return setNodeRef(item, ele);\n }\n }, node);\n });\n}","import List from \"./List\";\nexport default List;","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nvar rowSizeBase = {\n width: '100%',\n height: '10px',\n top: '0px',\n left: '0px',\n cursor: 'row-resize',\n};\nvar colSizeBase = {\n width: '10px',\n height: '100%',\n top: '0px',\n left: '0px',\n cursor: 'col-resize',\n};\nvar edgeBase = {\n width: '20px',\n height: '20px',\n position: 'absolute',\n};\nvar styles = {\n top: __assign(__assign({}, rowSizeBase), { top: '-5px' }),\n right: __assign(__assign({}, colSizeBase), { left: undefined, right: '-5px' }),\n bottom: __assign(__assign({}, rowSizeBase), { top: undefined, bottom: '-5px' }),\n left: __assign(__assign({}, colSizeBase), { left: '-5px' }),\n topRight: __assign(__assign({}, edgeBase), { right: '-10px', top: '-10px', cursor: 'ne-resize' }),\n bottomRight: __assign(__assign({}, edgeBase), { right: '-10px', bottom: '-10px', cursor: 'se-resize' }),\n bottomLeft: __assign(__assign({}, edgeBase), { left: '-10px', bottom: '-10px', cursor: 'sw-resize' }),\n topLeft: __assign(__assign({}, edgeBase), { left: '-10px', top: '-10px', cursor: 'nw-resize' }),\n};\nvar Resizer = /** @class */ (function (_super) {\n __extends(Resizer, _super);\n function Resizer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.onMouseDown = function (e) {\n _this.props.onResizeStart(e, _this.props.direction);\n };\n _this.onTouchStart = function (e) {\n _this.props.onResizeStart(e, _this.props.direction);\n };\n return _this;\n }\n Resizer.prototype.render = function () {\n return (React.createElement(\"div\", { className: this.props.className || '', style: __assign(__assign({ position: 'absolute', userSelect: 'none' }, styles[this.props.direction]), (this.props.replaceStyles || {})), onMouseDown: this.onMouseDown, onTouchStart: this.onTouchStart }, this.props.children));\n };\n return Resizer;\n}(React.PureComponent));\nexport { Resizer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { flushSync } from 'react-dom';\nimport { Resizer } from './resizer';\nvar DEFAULT_SIZE = {\n width: 'auto',\n height: 'auto',\n};\nvar clamp = function (n, min, max) { return Math.max(Math.min(n, max), min); };\nvar snap = function (n, size) { return Math.round(n / size) * size; };\nvar hasDirection = function (dir, target) {\n return new RegExp(dir, 'i').test(target);\n};\n// INFO: In case of window is a Proxy and does not porxy Events correctly, use isTouchEvent & isMouseEvent to distinguish event type instead of `instanceof`.\nvar isTouchEvent = function (event) {\n return Boolean(event.touches && event.touches.length);\n};\nvar isMouseEvent = function (event) {\n return Boolean((event.clientX || event.clientX === 0) &&\n (event.clientY || event.clientY === 0));\n};\nvar findClosestSnap = function (n, snapArray, snapGap) {\n if (snapGap === void 0) { snapGap = 0; }\n var closestGapIndex = snapArray.reduce(function (prev, curr, index) { return (Math.abs(curr - n) < Math.abs(snapArray[prev] - n) ? index : prev); }, 0);\n var gap = Math.abs(snapArray[closestGapIndex] - n);\n return snapGap === 0 || gap < snapGap ? snapArray[closestGapIndex] : n;\n};\nvar getStringSize = function (n) {\n n = n.toString();\n if (n === 'auto') {\n return n;\n }\n if (n.endsWith('px')) {\n return n;\n }\n if (n.endsWith('%')) {\n return n;\n }\n if (n.endsWith('vh')) {\n return n;\n }\n if (n.endsWith('vw')) {\n return n;\n }\n if (n.endsWith('vmax')) {\n return n;\n }\n if (n.endsWith('vmin')) {\n return n;\n }\n return n + \"px\";\n};\nvar getPixelSize = function (size, parentSize, innerWidth, innerHeight) {\n if (size && typeof size === 'string') {\n if (size.endsWith('px')) {\n return Number(size.replace('px', ''));\n }\n if (size.endsWith('%')) {\n var ratio = Number(size.replace('%', '')) / 100;\n return parentSize * ratio;\n }\n if (size.endsWith('vw')) {\n var ratio = Number(size.replace('vw', '')) / 100;\n return innerWidth * ratio;\n }\n if (size.endsWith('vh')) {\n var ratio = Number(size.replace('vh', '')) / 100;\n return innerHeight * ratio;\n }\n }\n return size;\n};\nvar calculateNewMax = function (parentSize, innerWidth, innerHeight, maxWidth, maxHeight, minWidth, minHeight) {\n maxWidth = getPixelSize(maxWidth, parentSize.width, innerWidth, innerHeight);\n maxHeight = getPixelSize(maxHeight, parentSize.height, innerWidth, innerHeight);\n minWidth = getPixelSize(minWidth, parentSize.width, innerWidth, innerHeight);\n minHeight = getPixelSize(minHeight, parentSize.height, innerWidth, innerHeight);\n return {\n maxWidth: typeof maxWidth === 'undefined' ? undefined : Number(maxWidth),\n maxHeight: typeof maxHeight === 'undefined' ? undefined : Number(maxHeight),\n minWidth: typeof minWidth === 'undefined' ? undefined : Number(minWidth),\n minHeight: typeof minHeight === 'undefined' ? undefined : Number(minHeight),\n };\n};\nvar definedProps = [\n 'as',\n 'style',\n 'className',\n 'grid',\n 'snap',\n 'bounds',\n 'boundsByDirection',\n 'size',\n 'defaultSize',\n 'minWidth',\n 'minHeight',\n 'maxWidth',\n 'maxHeight',\n 'lockAspectRatio',\n 'lockAspectRatioExtraWidth',\n 'lockAspectRatioExtraHeight',\n 'enable',\n 'handleStyles',\n 'handleClasses',\n 'handleWrapperStyle',\n 'handleWrapperClass',\n 'children',\n 'onResizeStart',\n 'onResize',\n 'onResizeStop',\n 'handleComponent',\n 'scale',\n 'resizeRatio',\n 'snapGap',\n];\n// HACK: This class is used to calculate % size.\nvar baseClassName = '__resizable_base__';\nvar Resizable = /** @class */ (function (_super) {\n __extends(Resizable, _super);\n function Resizable(props) {\n var _this = _super.call(this, props) || this;\n _this.ratio = 1;\n _this.resizable = null;\n // For parent boundary\n _this.parentLeft = 0;\n _this.parentTop = 0;\n // For boundary\n _this.resizableLeft = 0;\n _this.resizableRight = 0;\n _this.resizableTop = 0;\n _this.resizableBottom = 0;\n // For target boundary\n _this.targetLeft = 0;\n _this.targetTop = 0;\n _this.appendBase = function () {\n if (!_this.resizable || !_this.window) {\n return null;\n }\n var parent = _this.parentNode;\n if (!parent) {\n return null;\n }\n var element = _this.window.document.createElement('div');\n element.style.width = '100%';\n element.style.height = '100%';\n element.style.position = 'absolute';\n element.style.transform = 'scale(0, 0)';\n element.style.left = '0';\n element.style.flex = '0 0 100%';\n if (element.classList) {\n element.classList.add(baseClassName);\n }\n else {\n element.className += baseClassName;\n }\n parent.appendChild(element);\n return element;\n };\n _this.removeBase = function (base) {\n var parent = _this.parentNode;\n if (!parent) {\n return;\n }\n parent.removeChild(base);\n };\n _this.ref = function (c) {\n if (c) {\n _this.resizable = c;\n }\n };\n _this.state = {\n isResizing: false,\n width: typeof (_this.propsSize && _this.propsSize.width) === 'undefined'\n ? 'auto'\n : _this.propsSize && _this.propsSize.width,\n height: typeof (_this.propsSize && _this.propsSize.height) === 'undefined'\n ? 'auto'\n : _this.propsSize && _this.propsSize.height,\n direction: 'right',\n original: {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n },\n backgroundStyle: {\n height: '100%',\n width: '100%',\n backgroundColor: 'rgba(0,0,0,0)',\n cursor: 'auto',\n opacity: 0,\n position: 'fixed',\n zIndex: 9999,\n top: '0',\n left: '0',\n bottom: '0',\n right: '0',\n },\n flexBasis: undefined,\n };\n _this.onResizeStart = _this.onResizeStart.bind(_this);\n _this.onMouseMove = _this.onMouseMove.bind(_this);\n _this.onMouseUp = _this.onMouseUp.bind(_this);\n return _this;\n }\n Object.defineProperty(Resizable.prototype, \"parentNode\", {\n get: function () {\n if (!this.resizable) {\n return null;\n }\n return this.resizable.parentNode;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Resizable.prototype, \"window\", {\n get: function () {\n if (!this.resizable) {\n return null;\n }\n if (!this.resizable.ownerDocument) {\n return null;\n }\n return this.resizable.ownerDocument.defaultView;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Resizable.prototype, \"propsSize\", {\n get: function () {\n return this.props.size || this.props.defaultSize || DEFAULT_SIZE;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Resizable.prototype, \"size\", {\n get: function () {\n var width = 0;\n var height = 0;\n if (this.resizable && this.window) {\n var orgWidth = this.resizable.offsetWidth;\n var orgHeight = this.resizable.offsetHeight;\n // HACK: Set position `relative` to get parent size.\n // This is because when re-resizable set `absolute`, I can not get base width correctly.\n var orgPosition = this.resizable.style.position;\n if (orgPosition !== 'relative') {\n this.resizable.style.position = 'relative';\n }\n // INFO: Use original width or height if set auto.\n width = this.resizable.style.width !== 'auto' ? this.resizable.offsetWidth : orgWidth;\n height = this.resizable.style.height !== 'auto' ? this.resizable.offsetHeight : orgHeight;\n // Restore original position\n this.resizable.style.position = orgPosition;\n }\n return { width: width, height: height };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Resizable.prototype, \"sizeStyle\", {\n get: function () {\n var _this = this;\n var size = this.props.size;\n var getSize = function (key) {\n if (typeof _this.state[key] === 'undefined' || _this.state[key] === 'auto') {\n return 'auto';\n }\n if (_this.propsSize && _this.propsSize[key] && _this.propsSize[key].toString().endsWith('%')) {\n if (_this.state[key].toString().endsWith('%')) {\n return _this.state[key].toString();\n }\n var parentSize = _this.getParentSize();\n var value = Number(_this.state[key].toString().replace('px', ''));\n var percent = (value / parentSize[key]) * 100;\n return percent + \"%\";\n }\n return getStringSize(_this.state[key]);\n };\n var width = size && typeof size.width !== 'undefined' && !this.state.isResizing\n ? getStringSize(size.width)\n : getSize('width');\n var height = size && typeof size.height !== 'undefined' && !this.state.isResizing\n ? getStringSize(size.height)\n : getSize('height');\n return { width: width, height: height };\n },\n enumerable: false,\n configurable: true\n });\n Resizable.prototype.getParentSize = function () {\n if (!this.parentNode) {\n if (!this.window) {\n return { width: 0, height: 0 };\n }\n return { width: this.window.innerWidth, height: this.window.innerHeight };\n }\n var base = this.appendBase();\n if (!base) {\n return { width: 0, height: 0 };\n }\n // INFO: To calculate parent width with flex layout\n var wrapChanged = false;\n var wrap = this.parentNode.style.flexWrap;\n if (wrap !== 'wrap') {\n wrapChanged = true;\n this.parentNode.style.flexWrap = 'wrap';\n // HACK: Use relative to get parent padding size\n }\n base.style.position = 'relative';\n base.style.minWidth = '100%';\n base.style.minHeight = '100%';\n var size = {\n width: base.offsetWidth,\n height: base.offsetHeight,\n };\n if (wrapChanged) {\n this.parentNode.style.flexWrap = wrap;\n }\n this.removeBase(base);\n return size;\n };\n Resizable.prototype.bindEvents = function () {\n if (this.window) {\n this.window.addEventListener('mouseup', this.onMouseUp);\n this.window.addEventListener('mousemove', this.onMouseMove);\n this.window.addEventListener('mouseleave', this.onMouseUp);\n this.window.addEventListener('touchmove', this.onMouseMove, {\n capture: true,\n passive: false,\n });\n this.window.addEventListener('touchend', this.onMouseUp);\n }\n };\n Resizable.prototype.unbindEvents = function () {\n if (this.window) {\n this.window.removeEventListener('mouseup', this.onMouseUp);\n this.window.removeEventListener('mousemove', this.onMouseMove);\n this.window.removeEventListener('mouseleave', this.onMouseUp);\n this.window.removeEventListener('touchmove', this.onMouseMove, true);\n this.window.removeEventListener('touchend', this.onMouseUp);\n }\n };\n Resizable.prototype.componentDidMount = function () {\n if (!this.resizable || !this.window) {\n return;\n }\n var computedStyle = this.window.getComputedStyle(this.resizable);\n this.setState({\n width: this.state.width || this.size.width,\n height: this.state.height || this.size.height,\n flexBasis: computedStyle.flexBasis !== 'auto' ? computedStyle.flexBasis : undefined,\n });\n };\n Resizable.prototype.componentWillUnmount = function () {\n if (this.window) {\n this.unbindEvents();\n }\n };\n Resizable.prototype.createSizeForCssProperty = function (newSize, kind) {\n var propsSize = this.propsSize && this.propsSize[kind];\n return this.state[kind] === 'auto' &&\n this.state.original[kind] === newSize &&\n (typeof propsSize === 'undefined' || propsSize === 'auto')\n ? 'auto'\n : newSize;\n };\n Resizable.prototype.calculateNewMaxFromBoundary = function (maxWidth, maxHeight) {\n var boundsByDirection = this.props.boundsByDirection;\n var direction = this.state.direction;\n var widthByDirection = boundsByDirection && hasDirection('left', direction);\n var heightByDirection = boundsByDirection && hasDirection('top', direction);\n var boundWidth;\n var boundHeight;\n if (this.props.bounds === 'parent') {\n var parent_1 = this.parentNode;\n if (parent_1) {\n boundWidth = widthByDirection\n ? this.resizableRight - this.parentLeft\n : parent_1.offsetWidth + (this.parentLeft - this.resizableLeft);\n boundHeight = heightByDirection\n ? this.resizableBottom - this.parentTop\n : parent_1.offsetHeight + (this.parentTop - this.resizableTop);\n }\n }\n else if (this.props.bounds === 'window') {\n if (this.window) {\n boundWidth = widthByDirection ? this.resizableRight : this.window.innerWidth - this.resizableLeft;\n boundHeight = heightByDirection ? this.resizableBottom : this.window.innerHeight - this.resizableTop;\n }\n }\n else if (this.props.bounds) {\n boundWidth = widthByDirection\n ? this.resizableRight - this.targetLeft\n : this.props.bounds.offsetWidth + (this.targetLeft - this.resizableLeft);\n boundHeight = heightByDirection\n ? this.resizableBottom - this.targetTop\n : this.props.bounds.offsetHeight + (this.targetTop - this.resizableTop);\n }\n if (boundWidth && Number.isFinite(boundWidth)) {\n maxWidth = maxWidth && maxWidth < boundWidth ? maxWidth : boundWidth;\n }\n if (boundHeight && Number.isFinite(boundHeight)) {\n maxHeight = maxHeight && maxHeight < boundHeight ? maxHeight : boundHeight;\n }\n return { maxWidth: maxWidth, maxHeight: maxHeight };\n };\n Resizable.prototype.calculateNewSizeFromDirection = function (clientX, clientY) {\n var scale = this.props.scale || 1;\n var resizeRatio = this.props.resizeRatio || 1;\n var _a = this.state, direction = _a.direction, original = _a.original;\n var _b = this.props, lockAspectRatio = _b.lockAspectRatio, lockAspectRatioExtraHeight = _b.lockAspectRatioExtraHeight, lockAspectRatioExtraWidth = _b.lockAspectRatioExtraWidth;\n var newWidth = original.width;\n var newHeight = original.height;\n var extraHeight = lockAspectRatioExtraHeight || 0;\n var extraWidth = lockAspectRatioExtraWidth || 0;\n if (hasDirection('right', direction)) {\n newWidth = original.width + ((clientX - original.x) * resizeRatio) / scale;\n if (lockAspectRatio) {\n newHeight = (newWidth - extraWidth) / this.ratio + extraHeight;\n }\n }\n if (hasDirection('left', direction)) {\n newWidth = original.width - ((clientX - original.x) * resizeRatio) / scale;\n if (lockAspectRatio) {\n newHeight = (newWidth - extraWidth) / this.ratio + extraHeight;\n }\n }\n if (hasDirection('bottom', direction)) {\n newHeight = original.height + ((clientY - original.y) * resizeRatio) / scale;\n if (lockAspectRatio) {\n newWidth = (newHeight - extraHeight) * this.ratio + extraWidth;\n }\n }\n if (hasDirection('top', direction)) {\n newHeight = original.height - ((clientY - original.y) * resizeRatio) / scale;\n if (lockAspectRatio) {\n newWidth = (newHeight - extraHeight) * this.ratio + extraWidth;\n }\n }\n return { newWidth: newWidth, newHeight: newHeight };\n };\n Resizable.prototype.calculateNewSizeFromAspectRatio = function (newWidth, newHeight, max, min) {\n var _a = this.props, lockAspectRatio = _a.lockAspectRatio, lockAspectRatioExtraHeight = _a.lockAspectRatioExtraHeight, lockAspectRatioExtraWidth = _a.lockAspectRatioExtraWidth;\n var computedMinWidth = typeof min.width === 'undefined' ? 10 : min.width;\n var computedMaxWidth = typeof max.width === 'undefined' || max.width < 0 ? newWidth : max.width;\n var computedMinHeight = typeof min.height === 'undefined' ? 10 : min.height;\n var computedMaxHeight = typeof max.height === 'undefined' || max.height < 0 ? newHeight : max.height;\n var extraHeight = lockAspectRatioExtraHeight || 0;\n var extraWidth = lockAspectRatioExtraWidth || 0;\n if (lockAspectRatio) {\n var extraMinWidth = (computedMinHeight - extraHeight) * this.ratio + extraWidth;\n var extraMaxWidth = (computedMaxHeight - extraHeight) * this.ratio + extraWidth;\n var extraMinHeight = (computedMinWidth - extraWidth) / this.ratio + extraHeight;\n var extraMaxHeight = (computedMaxWidth - extraWidth) / this.ratio + extraHeight;\n var lockedMinWidth = Math.max(computedMinWidth, extraMinWidth);\n var lockedMaxWidth = Math.min(computedMaxWidth, extraMaxWidth);\n var lockedMinHeight = Math.max(computedMinHeight, extraMinHeight);\n var lockedMaxHeight = Math.min(computedMaxHeight, extraMaxHeight);\n newWidth = clamp(newWidth, lockedMinWidth, lockedMaxWidth);\n newHeight = clamp(newHeight, lockedMinHeight, lockedMaxHeight);\n }\n else {\n newWidth = clamp(newWidth, computedMinWidth, computedMaxWidth);\n newHeight = clamp(newHeight, computedMinHeight, computedMaxHeight);\n }\n return { newWidth: newWidth, newHeight: newHeight };\n };\n Resizable.prototype.setBoundingClientRect = function () {\n // For parent boundary\n if (this.props.bounds === 'parent') {\n var parent_2 = this.parentNode;\n if (parent_2) {\n var parentRect = parent_2.getBoundingClientRect();\n this.parentLeft = parentRect.left;\n this.parentTop = parentRect.top;\n }\n }\n // For target(html element) boundary\n if (this.props.bounds && typeof this.props.bounds !== 'string') {\n var targetRect = this.props.bounds.getBoundingClientRect();\n this.targetLeft = targetRect.left;\n this.targetTop = targetRect.top;\n }\n // For boundary\n if (this.resizable) {\n var _a = this.resizable.getBoundingClientRect(), left = _a.left, top_1 = _a.top, right = _a.right, bottom = _a.bottom;\n this.resizableLeft = left;\n this.resizableRight = right;\n this.resizableTop = top_1;\n this.resizableBottom = bottom;\n }\n };\n Resizable.prototype.onResizeStart = function (event, direction) {\n if (!this.resizable || !this.window) {\n return;\n }\n var clientX = 0;\n var clientY = 0;\n if (event.nativeEvent && isMouseEvent(event.nativeEvent)) {\n clientX = event.nativeEvent.clientX;\n clientY = event.nativeEvent.clientY;\n }\n else if (event.nativeEvent && isTouchEvent(event.nativeEvent)) {\n clientX = event.nativeEvent.touches[0].clientX;\n clientY = event.nativeEvent.touches[0].clientY;\n }\n if (this.props.onResizeStart) {\n if (this.resizable) {\n var startResize = this.props.onResizeStart(event, direction, this.resizable);\n if (startResize === false) {\n return;\n }\n }\n }\n // Fix #168\n if (this.props.size) {\n if (typeof this.props.size.height !== 'undefined' && this.props.size.height !== this.state.height) {\n this.setState({ height: this.props.size.height });\n }\n if (typeof this.props.size.width !== 'undefined' && this.props.size.width !== this.state.width) {\n this.setState({ width: this.props.size.width });\n }\n }\n // For lockAspectRatio case\n this.ratio =\n typeof this.props.lockAspectRatio === 'number' ? this.props.lockAspectRatio : this.size.width / this.size.height;\n var flexBasis;\n var computedStyle = this.window.getComputedStyle(this.resizable);\n if (computedStyle.flexBasis !== 'auto') {\n var parent_3 = this.parentNode;\n if (parent_3) {\n var dir = this.window.getComputedStyle(parent_3).flexDirection;\n this.flexDir = dir.startsWith('row') ? 'row' : 'column';\n flexBasis = computedStyle.flexBasis;\n }\n }\n // For boundary\n this.setBoundingClientRect();\n this.bindEvents();\n var state = {\n original: {\n x: clientX,\n y: clientY,\n width: this.size.width,\n height: this.size.height,\n },\n isResizing: true,\n backgroundStyle: __assign(__assign({}, this.state.backgroundStyle), { cursor: this.window.getComputedStyle(event.target).cursor || 'auto' }),\n direction: direction,\n flexBasis: flexBasis,\n };\n this.setState(state);\n };\n Resizable.prototype.onMouseMove = function (event) {\n var _this = this;\n if (!this.state.isResizing || !this.resizable || !this.window) {\n return;\n }\n if (this.window.TouchEvent && isTouchEvent(event)) {\n try {\n event.preventDefault();\n event.stopPropagation();\n }\n catch (e) {\n // Ignore on fail\n }\n }\n var _a = this.props, maxWidth = _a.maxWidth, maxHeight = _a.maxHeight, minWidth = _a.minWidth, minHeight = _a.minHeight;\n var clientX = isTouchEvent(event) ? event.touches[0].clientX : event.clientX;\n var clientY = isTouchEvent(event) ? event.touches[0].clientY : event.clientY;\n var _b = this.state, direction = _b.direction, original = _b.original, width = _b.width, height = _b.height;\n var parentSize = this.getParentSize();\n var max = calculateNewMax(parentSize, this.window.innerWidth, this.window.innerHeight, maxWidth, maxHeight, minWidth, minHeight);\n maxWidth = max.maxWidth;\n maxHeight = max.maxHeight;\n minWidth = max.minWidth;\n minHeight = max.minHeight;\n // Calculate new size\n var _c = this.calculateNewSizeFromDirection(clientX, clientY), newHeight = _c.newHeight, newWidth = _c.newWidth;\n // Calculate max size from boundary settings\n var boundaryMax = this.calculateNewMaxFromBoundary(maxWidth, maxHeight);\n if (this.props.snap && this.props.snap.x) {\n newWidth = findClosestSnap(newWidth, this.props.snap.x, this.props.snapGap);\n }\n if (this.props.snap && this.props.snap.y) {\n newHeight = findClosestSnap(newHeight, this.props.snap.y, this.props.snapGap);\n }\n // Calculate new size from aspect ratio\n var newSize = this.calculateNewSizeFromAspectRatio(newWidth, newHeight, { width: boundaryMax.maxWidth, height: boundaryMax.maxHeight }, { width: minWidth, height: minHeight });\n newWidth = newSize.newWidth;\n newHeight = newSize.newHeight;\n if (this.props.grid) {\n var newGridWidth = snap(newWidth, this.props.grid[0]);\n var newGridHeight = snap(newHeight, this.props.grid[1]);\n var gap = this.props.snapGap || 0;\n newWidth = gap === 0 || Math.abs(newGridWidth - newWidth) <= gap ? newGridWidth : newWidth;\n newHeight = gap === 0 || Math.abs(newGridHeight - newHeight) <= gap ? newGridHeight : newHeight;\n }\n var delta = {\n width: newWidth - original.width,\n height: newHeight - original.height,\n };\n if (width && typeof width === 'string') {\n if (width.endsWith('%')) {\n var percent = (newWidth / parentSize.width) * 100;\n newWidth = percent + \"%\";\n }\n else if (width.endsWith('vw')) {\n var vw = (newWidth / this.window.innerWidth) * 100;\n newWidth = vw + \"vw\";\n }\n else if (width.endsWith('vh')) {\n var vh = (newWidth / this.window.innerHeight) * 100;\n newWidth = vh + \"vh\";\n }\n }\n if (height && typeof height === 'string') {\n if (height.endsWith('%')) {\n var percent = (newHeight / parentSize.height) * 100;\n newHeight = percent + \"%\";\n }\n else if (height.endsWith('vw')) {\n var vw = (newHeight / this.window.innerWidth) * 100;\n newHeight = vw + \"vw\";\n }\n else if (height.endsWith('vh')) {\n var vh = (newHeight / this.window.innerHeight) * 100;\n newHeight = vh + \"vh\";\n }\n }\n var newState = {\n width: this.createSizeForCssProperty(newWidth, 'width'),\n height: this.createSizeForCssProperty(newHeight, 'height'),\n };\n if (this.flexDir === 'row') {\n newState.flexBasis = newState.width;\n }\n else if (this.flexDir === 'column') {\n newState.flexBasis = newState.height;\n }\n // For v18, update state sync\n flushSync(function () {\n _this.setState(newState);\n });\n if (this.props.onResize) {\n this.props.onResize(event, direction, this.resizable, delta);\n }\n };\n Resizable.prototype.onMouseUp = function (event) {\n var _a = this.state, isResizing = _a.isResizing, direction = _a.direction, original = _a.original;\n if (!isResizing || !this.resizable) {\n return;\n }\n var delta = {\n width: this.size.width - original.width,\n height: this.size.height - original.height,\n };\n if (this.props.onResizeStop) {\n this.props.onResizeStop(event, direction, this.resizable, delta);\n }\n if (this.props.size) {\n this.setState(this.props.size);\n }\n this.unbindEvents();\n this.setState({\n isResizing: false,\n backgroundStyle: __assign(__assign({}, this.state.backgroundStyle), { cursor: 'auto' }),\n });\n };\n Resizable.prototype.updateSize = function (size) {\n this.setState({ width: size.width, height: size.height });\n };\n Resizable.prototype.renderResizer = function () {\n var _this = this;\n var _a = this.props, enable = _a.enable, handleStyles = _a.handleStyles, handleClasses = _a.handleClasses, handleWrapperStyle = _a.handleWrapperStyle, handleWrapperClass = _a.handleWrapperClass, handleComponent = _a.handleComponent;\n if (!enable) {\n return null;\n }\n var resizers = Object.keys(enable).map(function (dir) {\n if (enable[dir] !== false) {\n return (React.createElement(Resizer, { key: dir, direction: dir, onResizeStart: _this.onResizeStart, replaceStyles: handleStyles && handleStyles[dir], className: handleClasses && handleClasses[dir] }, handleComponent && handleComponent[dir] ? handleComponent[dir] : null));\n }\n return null;\n });\n // #93 Wrap the resize box in span (will not break 100% width/height)\n return (React.createElement(\"div\", { className: handleWrapperClass, style: handleWrapperStyle }, resizers));\n };\n Resizable.prototype.render = function () {\n var _this = this;\n var extendsProps = Object.keys(this.props).reduce(function (acc, key) {\n if (definedProps.indexOf(key) !== -1) {\n return acc;\n }\n acc[key] = _this.props[key];\n return acc;\n }, {});\n var style = __assign(__assign(__assign({ position: 'relative', userSelect: this.state.isResizing ? 'none' : 'auto' }, this.props.style), this.sizeStyle), { maxWidth: this.props.maxWidth, maxHeight: this.props.maxHeight, minWidth: this.props.minWidth, minHeight: this.props.minHeight, boxSizing: 'border-box', flexShrink: 0 });\n if (this.state.flexBasis) {\n style.flexBasis = this.state.flexBasis;\n }\n var Wrapper = this.props.as || 'div';\n return (React.createElement(Wrapper, __assign({ ref: this.ref, style: style, className: this.props.className }, extendsProps),\n this.state.isResizing && React.createElement(\"div\", { style: this.state.backgroundStyle }),\n this.props.children,\n this.renderResizer()));\n };\n Resizable.defaultProps = {\n as: 'div',\n onResizeStart: function () { },\n onResize: function () { },\n onResizeStop: function () { },\n enable: {\n top: true,\n right: true,\n bottom: true,\n left: true,\n topRight: true,\n bottomRight: true,\n bottomLeft: true,\n topLeft: true,\n },\n style: {},\n grid: [1, 1],\n lockAspectRatio: false,\n lockAspectRatioExtraWidth: 0,\n lockAspectRatioExtraHeight: 0,\n scale: 1,\n resizeRatio: 1,\n snapGap: 0,\n };\n return Resizable;\n}(React.PureComponent));\nexport { Resizable };\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"DraggableCore\", {\n enumerable: true,\n get: function () {\n return _DraggableCore.default;\n }\n});\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\nvar _clsx = _interopRequireDefault(require(\"clsx\"));\nvar _domFns = require(\"./utils/domFns\");\nvar _positionFns = require(\"./utils/positionFns\");\nvar _shims = require(\"./utils/shims\");\nvar _DraggableCore = _interopRequireDefault(require(\"./DraggableCore\"));\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); } /*:: import type {ControlPosition, PositionOffsetControlPosition, DraggableCoreProps, DraggableCoreDefaultProps} from './DraggableCore';*/\n/*:: import type {Bounds, DraggableEventHandler} from './utils/types';*/\n/*:: import type {Element as ReactElement} from 'react';*/\n/*:: type DraggableState = {\n dragging: boolean,\n dragged: boolean,\n x: number, y: number,\n slackX: number, slackY: number,\n isElementSVG: boolean,\n prevPropsPosition: ?ControlPosition,\n};*/\n/*:: export type DraggableDefaultProps = {\n ...DraggableCoreDefaultProps,\n axis: 'both' | 'x' | 'y' | 'none',\n bounds: Bounds | string | false,\n defaultClassName: string,\n defaultClassNameDragging: string,\n defaultClassNameDragged: string,\n defaultPosition: ControlPosition,\n scale: number,\n};*/\n/*:: export type DraggableProps = {\n ...DraggableCoreProps,\n ...DraggableDefaultProps,\n positionOffset: PositionOffsetControlPosition,\n position: ControlPosition,\n};*/\n//\n// Define \n//\nclass Draggable extends React.Component /*:: */{\n // React 16.3+\n // Arity (props, state)\n static getDerivedStateFromProps(_ref /*:: */, _ref2 /*:: */) /*: ?Partial*/{\n let {\n position\n } /*: DraggableProps*/ = _ref /*: DraggableProps*/;\n let {\n prevPropsPosition\n } /*: DraggableState*/ = _ref2 /*: DraggableState*/;\n // Set x/y if a new position is provided in props that is different than the previous.\n if (position && (!prevPropsPosition || position.x !== prevPropsPosition.x || position.y !== prevPropsPosition.y)) {\n (0, _log.default)('Draggable: getDerivedStateFromProps %j', {\n position,\n prevPropsPosition\n });\n return {\n x: position.x,\n y: position.y,\n prevPropsPosition: {\n ...position\n }\n };\n }\n return null;\n }\n constructor(props /*: DraggableProps*/) {\n super(props);\n _defineProperty(this, \"onDragStart\", (e, coreData) => {\n (0, _log.default)('Draggable: onDragStart: %j', coreData);\n\n // Short-circuit if user's callback killed it.\n const shouldStart = this.props.onStart(e, (0, _positionFns.createDraggableData)(this, coreData));\n // Kills start event on core as well, so move handlers are never bound.\n if (shouldStart === false) return false;\n this.setState({\n dragging: true,\n dragged: true\n });\n });\n _defineProperty(this, \"onDrag\", (e, coreData) => {\n if (!this.state.dragging) return false;\n (0, _log.default)('Draggable: onDrag: %j', coreData);\n const uiData = (0, _positionFns.createDraggableData)(this, coreData);\n const newState = {\n x: uiData.x,\n y: uiData.y,\n slackX: 0,\n slackY: 0\n };\n\n // Keep within bounds.\n if (this.props.bounds) {\n // Save original x and y.\n const {\n x,\n y\n } = newState;\n\n // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n newState.x += this.state.slackX;\n newState.y += this.state.slackY;\n\n // Get bound position. This will ceil/floor the x and y within the boundaries.\n const [newStateX, newStateY] = (0, _positionFns.getBoundPosition)(this, newState.x, newState.y);\n newState.x = newStateX;\n newState.y = newStateY;\n\n // Recalculate slack by noting how much was shaved by the boundPosition handler.\n newState.slackX = this.state.slackX + (x - newState.x);\n newState.slackY = this.state.slackY + (y - newState.y);\n\n // Update the event we fire to reflect what really happened after bounds took effect.\n uiData.x = newState.x;\n uiData.y = newState.y;\n uiData.deltaX = newState.x - this.state.x;\n uiData.deltaY = newState.y - this.state.y;\n }\n\n // Short-circuit if user's callback killed it.\n const shouldUpdate = this.props.onDrag(e, uiData);\n if (shouldUpdate === false) return false;\n this.setState(newState);\n });\n _defineProperty(this, \"onDragStop\", (e, coreData) => {\n if (!this.state.dragging) return false;\n\n // Short-circuit if user's callback killed it.\n const shouldContinue = this.props.onStop(e, (0, _positionFns.createDraggableData)(this, coreData));\n if (shouldContinue === false) return false;\n (0, _log.default)('Draggable: onDragStop: %j', coreData);\n const newState /*: Partial*/ = {\n dragging: false,\n slackX: 0,\n slackY: 0\n };\n\n // If this is a controlled component, the result of this operation will be to\n // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n const controlled = Boolean(this.props.position);\n if (controlled) {\n const {\n x,\n y\n } = this.props.position;\n newState.x = x;\n newState.y = y;\n }\n this.setState(newState);\n });\n this.state = {\n // Whether or not we are currently dragging.\n dragging: false,\n // Whether or not we have been dragged before.\n dragged: false,\n // Current transform x and y.\n x: props.position ? props.position.x : props.defaultPosition.x,\n y: props.position ? props.position.y : props.defaultPosition.y,\n prevPropsPosition: {\n ...props.position\n },\n // Used for compensating for out-of-bounds drags\n slackX: 0,\n slackY: 0,\n // Can only determine if SVG after mounting\n isElementSVG: false\n };\n if (props.position && !(props.onDrag || props.onStop)) {\n // eslint-disable-next-line no-console\n console.warn('A `position` was applied to this , without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.');\n }\n }\n componentDidMount() {\n // Check to see if the element passed is an instanceof SVGElement\n if (typeof window.SVGElement !== 'undefined' && this.findDOMNode() instanceof window.SVGElement) {\n this.setState({\n isElementSVG: true\n });\n }\n }\n componentWillUnmount() {\n this.setState({\n dragging: false\n }); // prevents invariant if unmounted while dragging\n }\n\n // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n // the underlying DOM node ourselves. See the README for more information.\n findDOMNode() /*: ?HTMLElement*/{\n var _this$props$nodeRef$c, _this$props;\n return (_this$props$nodeRef$c = (_this$props = this.props) === null || _this$props === void 0 || (_this$props = _this$props.nodeRef) === null || _this$props === void 0 ? void 0 : _this$props.current) !== null && _this$props$nodeRef$c !== void 0 ? _this$props$nodeRef$c : _reactDom.default.findDOMNode(this);\n }\n render() /*: ReactElement*/{\n const {\n axis,\n bounds,\n children,\n defaultPosition,\n defaultClassName,\n defaultClassNameDragging,\n defaultClassNameDragged,\n position,\n positionOffset,\n scale,\n ...draggableCoreProps\n } = this.props;\n let style = {};\n let svgTransform = null;\n\n // If this is controlled, we don't want to move it - unless it's dragging.\n const controlled = Boolean(position);\n const draggable = !controlled || this.state.dragging;\n const validPosition = position || defaultPosition;\n const transformOpts = {\n // Set left if horizontal drag is enabled\n x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : validPosition.x,\n // Set top if vertical drag is enabled\n y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : validPosition.y\n };\n\n // If this element was SVG, we use the `transform` attribute.\n if (this.state.isElementSVG) {\n svgTransform = (0, _domFns.createSVGTransform)(transformOpts, positionOffset);\n } else {\n // Add a CSS transform to move the element around. This allows us to move the element around\n // without worrying about whether or not it is relatively or absolutely positioned.\n // If the item you are dragging already has a transform set, wrap it in a so \n // has a clean slate.\n style = (0, _domFns.createCSSTransform)(transformOpts, positionOffset);\n }\n\n // Mark with class while dragging\n const className = (0, _clsx.default)(children.props.className || '', defaultClassName, {\n [defaultClassNameDragging]: this.state.dragging,\n [defaultClassNameDragged]: this.state.dragged\n });\n\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return /*#__PURE__*/React.createElement(_DraggableCore.default, _extends({}, draggableCoreProps, {\n onStart: this.onDragStart,\n onDrag: this.onDrag,\n onStop: this.onDragStop\n }), /*#__PURE__*/React.cloneElement(React.Children.only(children), {\n className: className,\n style: {\n ...children.props.style,\n ...style\n },\n transform: svgTransform\n }));\n }\n}\nexports.default = Draggable;\n_defineProperty(Draggable, \"displayName\", 'Draggable');\n_defineProperty(Draggable, \"propTypes\", {\n // Accepts all props accepts.\n ..._DraggableCore.default.propTypes,\n /**\n * `axis` determines which axis the draggable can move.\n *\n * Note that all callbacks will still return data as normal. This only\n * controls flushing to the DOM.\n *\n * 'both' allows movement horizontally and vertically.\n * 'x' limits movement to horizontal axis.\n * 'y' limits movement to vertical axis.\n * 'none' limits all movement.\n *\n * Defaults to 'both'.\n */\n axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n /**\n * `bounds` determines the range of movement available to the element.\n * Available values are:\n *\n * 'parent' restricts movement within the Draggable's parent node.\n *\n * Alternatively, pass an object with the following properties, all of which are optional:\n *\n * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n *\n * All values are in px.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
    Content
    \n *
    \n * );\n * }\n * });\n * ```\n */\n bounds: _propTypes.default.oneOfType([_propTypes.default.shape({\n left: _propTypes.default.number,\n right: _propTypes.default.number,\n top: _propTypes.default.number,\n bottom: _propTypes.default.number\n }), _propTypes.default.string, _propTypes.default.oneOf([false])]),\n defaultClassName: _propTypes.default.string,\n defaultClassNameDragging: _propTypes.default.string,\n defaultClassNameDragged: _propTypes.default.string,\n /**\n * `defaultPosition` specifies the x and y that the dragged item should start at\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
    I start with transformX: 25px and transformY: 25px;
    \n *
    \n * );\n * }\n * });\n * ```\n */\n defaultPosition: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n positionOffset: _propTypes.default.shape({\n x: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n y: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])\n }),\n /**\n * `position`, if present, defines the current position of the element.\n *\n * This is similar to how form elements in React work - if no `position` is supplied, the component\n * is uncontrolled.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
    I start with transformX: 25px and transformY: 25px;
    \n *
    \n * );\n * }\n * });\n * ```\n */\n position: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n});\n_defineProperty(Draggable, \"defaultProps\", {\n ..._DraggableCore.default.defaultProps,\n axis: 'both',\n bounds: false,\n defaultClassName: 'react-draggable',\n defaultClassNameDragging: 'react-draggable-dragging',\n defaultClassNameDragged: 'react-draggable-dragged',\n defaultPosition: {\n x: 0,\n y: 0\n },\n scale: 1\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\nvar _domFns = require(\"./utils/domFns\");\nvar _positionFns = require(\"./utils/positionFns\");\nvar _shims = require(\"./utils/shims\");\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/*:: import type {EventHandler, MouseTouchEvent} from './utils/types';*/\n/*:: import type {Element as ReactElement} from 'react';*/\n// Simple abstraction for dragging events names.\nconst eventsFor = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n stop: 'touchend'\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n stop: 'mouseup'\n }\n};\n\n// Default to mouse events.\nlet dragEventFor = eventsFor.mouse;\n/*:: export type DraggableData = {\n node: HTMLElement,\n x: number, y: number,\n deltaX: number, deltaY: number,\n lastX: number, lastY: number,\n};*/\n/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void | false;*/\n/*:: export type ControlPosition = {x: number, y: number};*/\n/*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/\n/*:: export type DraggableCoreDefaultProps = {\n allowAnyClick: boolean,\n disabled: boolean,\n enableUserSelectHack: boolean,\n onStart: DraggableEventHandler,\n onDrag: DraggableEventHandler,\n onStop: DraggableEventHandler,\n onMouseDown: (e: MouseEvent) => void,\n scale: number,\n};*/\n/*:: export type DraggableCoreProps = {\n ...DraggableCoreDefaultProps,\n cancel: string,\n children: ReactElement,\n offsetParent: HTMLElement,\n grid: [number, number],\n handle: string,\n nodeRef?: ?React.ElementRef,\n};*/\n//\n// Define .\n//\n// is for advanced usage of . It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\n\nclass DraggableCore extends React.Component /*:: */{\n constructor() {\n super(...arguments);\n _defineProperty(this, \"dragging\", false);\n // Used while dragging to determine deltas.\n _defineProperty(this, \"lastX\", NaN);\n _defineProperty(this, \"lastY\", NaN);\n _defineProperty(this, \"touchIdentifier\", null);\n _defineProperty(this, \"mounted\", false);\n _defineProperty(this, \"handleDragStart\", e => {\n // Make it possible to attach event handlers on top of this one.\n this.props.onMouseDown(e);\n\n // Only accept left-clicks.\n if (!this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false;\n\n // Get nodes. Be sure to grab relative document (could be iframed)\n const thisNode = this.findDOMNode();\n if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n throw new Error(' not mounted on DragStart!');\n }\n const {\n ownerDocument\n } = thisNode;\n\n // Short circuit if handle or cancel prop was provided and selector doesn't match.\n if (this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.handle, thisNode) || this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.cancel, thisNode)) {\n return;\n }\n\n // Prevent scrolling on mobile devices, like ipad/iphone.\n // Important that this is after handle/cancel.\n if (e.type === 'touchstart') e.preventDefault();\n\n // Set touch identifier in component state if this is a touch event. This allows us to\n // distinguish between individual touches on multitouch screens by identifying which\n // touchpoint was set to this element.\n const touchIdentifier = (0, _domFns.getTouchIdentifier)(e);\n this.touchIdentifier = touchIdentifier;\n\n // Get the current drag point from the event. This is used as the offset.\n const position = (0, _positionFns.getControlPosition)(e, touchIdentifier, this);\n if (position == null) return; // not possible but satisfies flow\n const {\n x,\n y\n } = position;\n\n // Create an event object with all the data parents need to make a decision here.\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n (0, _log.default)('DraggableCore: handleDragStart: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, cancel.\n (0, _log.default)('calling', this.props.onStart);\n const shouldUpdate = this.props.onStart(e, coreEvent);\n if (shouldUpdate === false || this.mounted === false) return;\n\n // Add a style to the body to disable user-select. This prevents text from\n // being selected all over the page.\n if (this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument);\n\n // Initiate dragging. Set the current x and y as offsets\n // so we know how much we've moved during the drag. This allows us\n // to drag elements around even if they have been moved, without issue.\n this.dragging = true;\n this.lastX = x;\n this.lastY = y;\n\n // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n // this element. We use different events depending on whether or not we have detected that this\n // is a touch-capable device.\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, this.handleDrag);\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, this.handleDragStop);\n });\n _defineProperty(this, \"handleDrag\", e => {\n // Get the current drag point from the event. This is used as the offset.\n const position = (0, _positionFns.getControlPosition)(e, this.touchIdentifier, this);\n if (position == null) return;\n let {\n x,\n y\n } = position;\n\n // Snap to grid if prop has been provided\n if (Array.isArray(this.props.grid)) {\n let deltaX = x - this.lastX,\n deltaY = y - this.lastY;\n [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);\n if (!deltaX && !deltaY) return; // skip useless drag\n x = this.lastX + deltaX, y = this.lastY + deltaY;\n }\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n (0, _log.default)('DraggableCore: handleDrag: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, trigger end.\n const shouldUpdate = this.props.onDrag(e, coreEvent);\n if (shouldUpdate === false || this.mounted === false) {\n try {\n // $FlowIgnore\n this.handleDragStop(new MouseEvent('mouseup'));\n } catch (err) {\n // Old browsers\n const event = ((document.createEvent('MouseEvents') /*: any*/) /*: MouseTouchEvent*/);\n // I see why this insanity was deprecated\n // $FlowIgnore\n event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n this.handleDragStop(event);\n }\n return;\n }\n this.lastX = x;\n this.lastY = y;\n });\n _defineProperty(this, \"handleDragStop\", e => {\n if (!this.dragging) return;\n const position = (0, _positionFns.getControlPosition)(e, this.touchIdentifier, this);\n if (position == null) return;\n let {\n x,\n y\n } = position;\n\n // Snap to grid if prop has been provided\n if (Array.isArray(this.props.grid)) {\n let deltaX = x - this.lastX || 0;\n let deltaY = y - this.lastY || 0;\n [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);\n x = this.lastX + deltaX, y = this.lastY + deltaY;\n }\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n\n // Call event handler\n const shouldContinue = this.props.onStop(e, coreEvent);\n if (shouldContinue === false || this.mounted === false) return false;\n const thisNode = this.findDOMNode();\n if (thisNode) {\n // Remove user-select hack\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(thisNode.ownerDocument);\n }\n (0, _log.default)('DraggableCore: handleDragStop: %j', coreEvent);\n\n // Reset the el.\n this.dragging = false;\n this.lastX = NaN;\n this.lastY = NaN;\n if (thisNode) {\n // Remove event handlers\n (0, _log.default)('DraggableCore: Removing handlers');\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, this.handleDrag);\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, this.handleDragStop);\n }\n });\n _defineProperty(this, \"onMouseDown\", e => {\n dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n return this.handleDragStart(e);\n });\n _defineProperty(this, \"onMouseUp\", e => {\n dragEventFor = eventsFor.mouse;\n return this.handleDragStop(e);\n });\n // Same as onMouseDown (start drag), but now consider this a touch device.\n _defineProperty(this, \"onTouchStart\", e => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return this.handleDragStart(e);\n });\n _defineProperty(this, \"onTouchEnd\", e => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return this.handleDragStop(e);\n });\n }\n componentDidMount() {\n this.mounted = true;\n // Touch handlers must be added with {passive: false} to be cancelable.\n // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n const thisNode = this.findDOMNode();\n if (thisNode) {\n (0, _domFns.addEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n passive: false\n });\n }\n }\n componentWillUnmount() {\n this.mounted = false;\n // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n const thisNode = this.findDOMNode();\n if (thisNode) {\n const {\n ownerDocument\n } = thisNode;\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n (0, _domFns.removeEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n passive: false\n });\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(ownerDocument);\n }\n }\n\n // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n // the underlying DOM node ourselves. See the README for more information.\n findDOMNode() /*: ?HTMLElement*/{\n var _this$props, _this$props2;\n return (_this$props = this.props) !== null && _this$props !== void 0 && _this$props.nodeRef ? (_this$props2 = this.props) === null || _this$props2 === void 0 || (_this$props2 = _this$props2.nodeRef) === null || _this$props2 === void 0 ? void 0 : _this$props2.current : _reactDom.default.findDOMNode(this);\n }\n render() /*: React.Element*/{\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return /*#__PURE__*/React.cloneElement(React.Children.only(this.props.children), {\n // Note: mouseMove handler is attached to document so it will still function\n // when the user drags quickly and leaves the bounds of the element.\n onMouseDown: this.onMouseDown,\n onMouseUp: this.onMouseUp,\n // onTouchStart is added on `componentDidMount` so they can be added with\n // {passive: false}, which allows it to cancel. See\n // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n onTouchEnd: this.onTouchEnd\n });\n }\n}\nexports.default = DraggableCore;\n_defineProperty(DraggableCore, \"displayName\", 'DraggableCore');\n_defineProperty(DraggableCore, \"propTypes\", {\n /**\n * `allowAnyClick` allows dragging using any mouse button.\n * By default, we only accept the left button.\n *\n * Defaults to `false`.\n */\n allowAnyClick: _propTypes.default.bool,\n children: _propTypes.default.node.isRequired,\n /**\n * `disabled`, if true, stops the from dragging. All handlers,\n * with the exception of `onMouseDown`, will not fire.\n */\n disabled: _propTypes.default.bool,\n /**\n * By default, we add 'user-select:none' attributes to the document body\n * to prevent ugly text selection during drag. If this is causing problems\n * for your app, set this to `false`.\n */\n enableUserSelectHack: _propTypes.default.bool,\n /**\n * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n * instead of using the parent node.\n */\n offsetParent: function (props /*: DraggableCoreProps*/, propName /*: $Keys*/) {\n if (props[propName] && props[propName].nodeType !== 1) {\n throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n }\n },\n /**\n * `grid` specifies the x and y that dragging should snap to.\n */\n grid: _propTypes.default.arrayOf(_propTypes.default.number),\n /**\n * `handle` specifies a selector to be used as the handle that initiates drag.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
    \n *
    Click me to drag
    \n *
    This is some other content
    \n *
    \n *
    \n * );\n * }\n * });\n * ```\n */\n handle: _propTypes.default.string,\n /**\n * `cancel` specifies a selector to be used to prevent drag initialization.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return(\n * \n *
    \n *
    You can't drag from here
    \n *
    Dragging here works fine
    \n *
    \n *
    \n * );\n * }\n * });\n * ```\n */\n cancel: _propTypes.default.string,\n /* If running in React Strict mode, ReactDOM.findDOMNode() is deprecated.\n * Unfortunately, in order for to work properly, we need raw access\n * to the underlying DOM node. If you want to avoid the warning, pass a `nodeRef`\n * as in this example:\n *\n * function MyComponent() {\n * const nodeRef = React.useRef(null);\n * return (\n * \n *
    Example Target
    \n *
    \n * );\n * }\n *\n * This can be used for arbitrarily nested components, so long as the ref ends up\n * pointing to the actual child DOM node and not a custom component.\n */\n nodeRef: _propTypes.default.object,\n /**\n * Called when dragging starts.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onStart: _propTypes.default.func,\n /**\n * Called while dragging.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onDrag: _propTypes.default.func,\n /**\n * Called when dragging stops.\n * If this function returns the boolean false, the drag will remain active.\n */\n onStop: _propTypes.default.func,\n /**\n * A workaround option which can be passed if onMouseDown needs to be accessed,\n * since it'll always be blocked (as there is internal use of onMouseDown)\n */\n onMouseDown: _propTypes.default.func,\n /**\n * `scale`, if set, applies scaling while dragging an element\n */\n scale: _propTypes.default.number,\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n});\n_defineProperty(DraggableCore, \"defaultProps\", {\n allowAnyClick: false,\n // by default only accept left click\n disabled: false,\n enableUserSelectHack: true,\n onStart: function () {},\n onDrag: function () {},\n onStop: function () {},\n onMouseDown: function () {},\n scale: 1\n});","\"use strict\";\n\nconst {\n default: Draggable,\n DraggableCore\n} = require('./Draggable');\n\n// Previous versions of this lib exported as the root export. As to no-// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = DraggableCore;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.addClassName = addClassName;\nexports.addEvent = addEvent;\nexports.addUserSelectStyles = addUserSelectStyles;\nexports.createCSSTransform = createCSSTransform;\nexports.createSVGTransform = createSVGTransform;\nexports.getTouch = getTouch;\nexports.getTouchIdentifier = getTouchIdentifier;\nexports.getTranslation = getTranslation;\nexports.innerHeight = innerHeight;\nexports.innerWidth = innerWidth;\nexports.matchesSelector = matchesSelector;\nexports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;\nexports.offsetXYFromParent = offsetXYFromParent;\nexports.outerHeight = outerHeight;\nexports.outerWidth = outerWidth;\nexports.removeClassName = removeClassName;\nexports.removeEvent = removeEvent;\nexports.removeUserSelectStyles = removeUserSelectStyles;\nvar _shims = require(\"./shims\");\nvar _getPrefix = _interopRequireWildcard(require(\"./getPrefix\"));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n/*:: import type {ControlPosition, PositionOffsetControlPosition, MouseTouchEvent} from './types';*/\nlet matchesSelectorFunc = '';\nfunction matchesSelector(el /*: Node*/, selector /*: string*/) /*: boolean*/{\n if (!matchesSelectorFunc) {\n matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n // $FlowIgnore: Doesn't think elements are indexable\n return (0, _shims.isFunction)(el[method]);\n });\n }\n\n // Might not be found entirely (not an Element?) - in that case, bail\n // $FlowIgnore: Doesn't think elements are indexable\n if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false;\n\n // $FlowIgnore: Doesn't think elements are indexable\n return el[matchesSelectorFunc](selector);\n}\n\n// Works up the tree to the draggable itself attempting to match selector.\nfunction matchesSelectorAndParentsTo(el /*: Node*/, selector /*: string*/, baseNode /*: Node*/) /*: boolean*/{\n let node = el;\n do {\n if (matchesSelector(node, selector)) return true;\n if (node === baseNode) return false;\n // $FlowIgnore[incompatible-type]\n node = node.parentNode;\n } while (node);\n return false;\n}\nfunction addEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/, inputOptions /*: Object*/) /*: void*/{\n if (!el) return;\n const options = {\n capture: true,\n ...inputOptions\n };\n // $FlowIgnore[method-unbinding]\n if (el.addEventListener) {\n el.addEventListener(event, handler, options);\n } else if (el.attachEvent) {\n el.attachEvent('on' + event, handler);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = handler;\n }\n}\nfunction removeEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/, inputOptions /*: Object*/) /*: void*/{\n if (!el) return;\n const options = {\n capture: true,\n ...inputOptions\n };\n // $FlowIgnore[method-unbinding]\n if (el.removeEventListener) {\n el.removeEventListener(event, handler, options);\n } else if (el.detachEvent) {\n el.detachEvent('on' + event, handler);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = null;\n }\n}\nfunction outerHeight(node /*: HTMLElement*/) /*: number*/{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetTop which is including margin. See getBoundPosition\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height += (0, _shims.int)(computedStyle.borderTopWidth);\n height += (0, _shims.int)(computedStyle.borderBottomWidth);\n return height;\n}\nfunction outerWidth(node /*: HTMLElement*/) /*: number*/{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetLeft which is including margin. See getBoundPosition\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width += (0, _shims.int)(computedStyle.borderLeftWidth);\n width += (0, _shims.int)(computedStyle.borderRightWidth);\n return width;\n}\nfunction innerHeight(node /*: HTMLElement*/) /*: number*/{\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height -= (0, _shims.int)(computedStyle.paddingTop);\n height -= (0, _shims.int)(computedStyle.paddingBottom);\n return height;\n}\nfunction innerWidth(node /*: HTMLElement*/) /*: number*/{\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width -= (0, _shims.int)(computedStyle.paddingLeft);\n width -= (0, _shims.int)(computedStyle.paddingRight);\n return width;\n}\n/*:: interface EventWithOffset {\n clientX: number, clientY: number\n}*/\n// Get from offsetParent\nfunction offsetXYFromParent(evt /*: EventWithOffset*/, offsetParent /*: HTMLElement*/, scale /*: number*/) /*: ControlPosition*/{\n const isBody = offsetParent === offsetParent.ownerDocument.body;\n const offsetParentRect = isBody ? {\n left: 0,\n top: 0\n } : offsetParent.getBoundingClientRect();\n const x = (evt.clientX + offsetParent.scrollLeft - offsetParentRect.left) / scale;\n const y = (evt.clientY + offsetParent.scrollTop - offsetParentRect.top) / scale;\n return {\n x,\n y\n };\n}\nfunction createCSSTransform(controlPos /*: ControlPosition*/, positionOffset /*: PositionOffsetControlPosition*/) /*: Object*/{\n const translation = getTranslation(controlPos, positionOffset, 'px');\n return {\n [(0, _getPrefix.browserPrefixToKey)('transform', _getPrefix.default)]: translation\n };\n}\nfunction createSVGTransform(controlPos /*: ControlPosition*/, positionOffset /*: PositionOffsetControlPosition*/) /*: string*/{\n const translation = getTranslation(controlPos, positionOffset, '');\n return translation;\n}\nfunction getTranslation(_ref /*:: */, positionOffset /*: PositionOffsetControlPosition*/, unitSuffix /*: string*/) /*: string*/{\n let {\n x,\n y\n } /*: ControlPosition*/ = _ref /*: ControlPosition*/;\n let translation = \"translate(\".concat(x).concat(unitSuffix, \",\").concat(y).concat(unitSuffix, \")\");\n if (positionOffset) {\n const defaultX = \"\".concat(typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix);\n const defaultY = \"\".concat(typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix);\n translation = \"translate(\".concat(defaultX, \", \").concat(defaultY, \")\") + translation;\n }\n return translation;\n}\nfunction getTouch(e /*: MouseTouchEvent*/, identifier /*: number*/) /*: ?{clientX: number, clientY: number}*/{\n return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, t => identifier === t.identifier) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, t => identifier === t.identifier);\n}\nfunction getTouchIdentifier(e /*: MouseTouchEvent*/) /*: ?number*/{\n if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n}\n\n// User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n\n// Note we're passing `document` b/c we could be iframed\nfunction addUserSelectStyles(doc /*: ?Document*/) {\n if (!doc) return;\n let styleEl = doc.getElementById('react-draggable-style-el');\n if (!styleEl) {\n styleEl = doc.createElement('style');\n styleEl.type = 'text/css';\n styleEl.id = 'react-draggable-style-el';\n styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\\n';\n styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\\n';\n doc.getElementsByTagName('head')[0].appendChild(styleEl);\n }\n if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\nfunction removeUserSelectStyles(doc /*: ?Document*/) {\n if (!doc) return;\n try {\n if (doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection');\n // $FlowIgnore: IE\n if (doc.selection) {\n // $FlowIgnore: IE\n doc.selection.empty();\n } else {\n // Remove selection caused by scroll, unless it's a focused input\n // (we use doc.defaultView in case we're in an iframe)\n const selection = (doc.defaultView || window).getSelection();\n if (selection && selection.type !== 'Caret') {\n selection.removeAllRanges();\n }\n }\n } catch (e) {\n // probably IE\n }\n}\nfunction addClassName(el /*: HTMLElement*/, className /*: string*/) {\n if (el.classList) {\n el.classList.add(className);\n } else {\n if (!el.className.match(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\")))) {\n el.className += \" \".concat(className);\n }\n }\n}\nfunction removeClassName(el /*: HTMLElement*/, className /*: string*/) {\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\"), 'g'), '');\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.browserPrefixToKey = browserPrefixToKey;\nexports.browserPrefixToStyle = browserPrefixToStyle;\nexports.default = void 0;\nexports.getPrefix = getPrefix;\nconst prefixes = ['Moz', 'Webkit', 'O', 'ms'];\nfunction getPrefix() /*: string*/{\n var _window$document;\n let prop /*: string*/ = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n // Ensure we're running in an environment where there is actually a global\n // `window` obj\n if (typeof window === 'undefined') return '';\n\n // If we're in a pseudo-browser server-side environment, this access\n // path may not exist, so bail out if it doesn't.\n const style = (_window$document = window.document) === null || _window$document === void 0 || (_window$document = _window$document.documentElement) === null || _window$document === void 0 ? void 0 : _window$document.style;\n if (!style) return '';\n if (prop in style) return '';\n for (let i = 0; i < prefixes.length; i++) {\n if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n }\n return '';\n}\nfunction browserPrefixToKey(prop /*: string*/, prefix /*: string*/) /*: string*/{\n return prefix ? \"\".concat(prefix).concat(kebabToTitleCase(prop)) : prop;\n}\nfunction browserPrefixToStyle(prop /*: string*/, prefix /*: string*/) /*: string*/{\n return prefix ? \"-\".concat(prefix.toLowerCase(), \"-\").concat(prop) : prop;\n}\nfunction kebabToTitleCase(str /*: string*/) /*: string*/{\n let out = '';\n let shouldCapitalize = true;\n for (let i = 0; i < str.length; i++) {\n if (shouldCapitalize) {\n out += str[i].toUpperCase();\n shouldCapitalize = false;\n } else if (str[i] === '-') {\n shouldCapitalize = true;\n } else {\n out += str[i];\n }\n }\n return out;\n}\n\n// Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\nvar _default = exports.default = (getPrefix() /*: string*/);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = log;\n/*eslint no-console:0*/\nfunction log() {\n if (undefined) console.log(...arguments);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.canDragX = canDragX;\nexports.canDragY = canDragY;\nexports.createCoreData = createCoreData;\nexports.createDraggableData = createDraggableData;\nexports.getBoundPosition = getBoundPosition;\nexports.getControlPosition = getControlPosition;\nexports.snapToGrid = snapToGrid;\nvar _shims = require(\"./shims\");\nvar _domFns = require(\"./domFns\");\n/*:: import type Draggable from '../Draggable';*/\n/*:: import type {Bounds, ControlPosition, DraggableData, MouseTouchEvent} from './types';*/\n/*:: import type DraggableCore from '../DraggableCore';*/\nfunction getBoundPosition(draggable /*: Draggable*/, x /*: number*/, y /*: number*/) /*: [number, number]*/{\n // If no bounds, short-circuit and move on\n if (!draggable.props.bounds) return [x, y];\n\n // Clone new bounds\n let {\n bounds\n } = draggable.props;\n bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n const node = findDOMNode(draggable);\n if (typeof bounds === 'string') {\n const {\n ownerDocument\n } = node;\n const ownerWindow = ownerDocument.defaultView;\n let boundNode;\n if (bounds === 'parent') {\n boundNode = node.parentNode;\n } else {\n boundNode = ownerDocument.querySelector(bounds);\n }\n if (!(boundNode instanceof ownerWindow.HTMLElement)) {\n throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n }\n const boundNodeEl /*: HTMLElement*/ = boundNode; // for Flow, can't seem to refine correctly\n const nodeStyle = ownerWindow.getComputedStyle(node);\n const boundNodeStyle = ownerWindow.getComputedStyle(boundNodeEl);\n // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n bounds = {\n left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft),\n top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop),\n right: (0, _domFns.innerWidth)(boundNodeEl) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight),\n bottom: (0, _domFns.innerHeight)(boundNodeEl) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom)\n };\n }\n\n // Keep x and y below right and bottom limits...\n if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);\n if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom);\n\n // But above left and top limits.\n if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);\n if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);\n return [x, y];\n}\nfunction snapToGrid(grid /*: [number, number]*/, pendingX /*: number*/, pendingY /*: number*/) /*: [number, number]*/{\n const x = Math.round(pendingX / grid[0]) * grid[0];\n const y = Math.round(pendingY / grid[1]) * grid[1];\n return [x, y];\n}\nfunction canDragX(draggable /*: Draggable*/) /*: boolean*/{\n return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\nfunction canDragY(draggable /*: Draggable*/) /*: boolean*/{\n return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n}\n\n// Get {x, y} positions from event.\nfunction getControlPosition(e /*: MouseTouchEvent*/, touchIdentifier /*: ?number*/, draggableCore /*: DraggableCore*/) /*: ?ControlPosition*/{\n const touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;\n if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n const node = findDOMNode(draggableCore);\n // User can provide an offsetParent if desired.\n const offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent, draggableCore.props.scale);\n}\n\n// Create an data object exposed by 's events\nfunction createCoreData(draggable /*: DraggableCore*/, x /*: number*/, y /*: number*/) /*: DraggableData*/{\n const isStart = !(0, _shims.isNum)(draggable.lastX);\n const node = findDOMNode(draggable);\n if (isStart) {\n // If this is our first move, use the x and y as last coords.\n return {\n node,\n deltaX: 0,\n deltaY: 0,\n lastX: x,\n lastY: y,\n x,\n y\n };\n } else {\n // Otherwise calculate proper values.\n return {\n node,\n deltaX: x - draggable.lastX,\n deltaY: y - draggable.lastY,\n lastX: draggable.lastX,\n lastY: draggable.lastY,\n x,\n y\n };\n }\n}\n\n// Create an data exposed by 's events\nfunction createDraggableData(draggable /*: Draggable*/, coreData /*: DraggableData*/) /*: DraggableData*/{\n const scale = draggable.props.scale;\n return {\n node: coreData.node,\n x: draggable.state.x + coreData.deltaX / scale,\n y: draggable.state.y + coreData.deltaY / scale,\n deltaX: coreData.deltaX / scale,\n deltaY: coreData.deltaY / scale,\n lastX: draggable.state.x,\n lastY: draggable.state.y\n };\n}\n\n// A lot faster than stringify/parse\nfunction cloneBounds(bounds /*: Bounds*/) /*: Bounds*/{\n return {\n left: bounds.left,\n top: bounds.top,\n right: bounds.right,\n bottom: bounds.bottom\n };\n}\nfunction findDOMNode(draggable /*: Draggable | DraggableCore*/) /*: HTMLElement*/{\n const node = draggable.findDOMNode();\n if (!node) {\n throw new Error(': Unmounted during event!');\n }\n // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n return node;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.dontSetMe = dontSetMe;\nexports.findInArray = findInArray;\nexports.int = int;\nexports.isFunction = isFunction;\nexports.isNum = isNum;\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nfunction findInArray(array /*: Array | TouchList*/, callback /*: Function*/) /*: any*/{\n for (let i = 0, length = array.length; i < length; i++) {\n if (callback.apply(callback, [array[i], i, array])) return array[i];\n }\n}\nfunction isFunction(func /*: any*/) /*: boolean %checks*/{\n // $FlowIgnore[method-unbinding]\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\nfunction isNum(num /*: any*/) /*: boolean %checks*/{\n return typeof num === 'number' && !isNaN(num);\n}\nfunction int(a /*: string*/) /*: number*/{\n return parseInt(a, 10);\n}\nfunction dontSetMe(props /*: Object*/, propName /*: string*/, componentName /*: string*/) /*: ?Error*/{\n if (props[propName]) {\n return new Error(\"Invalid prop \".concat(propName, \" passed to \").concat(componentName, \" - do not set this, set it on the child.\"));\n }\n}","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import { 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, createPath } 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/**\n * The public API for a that uses HTML5 history.\n */\n\nvar BrowserRouter = /*#__PURE__*/function (_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 /*#__PURE__*/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/**\n * The public API for a that uses window.location.hash.\n */\n\nvar HashRouter = /*#__PURE__*/function (_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 /*#__PURE__*/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};\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 /*#__PURE__*/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 /*#__PURE__*/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 isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n var method = replace || isDuplicateNavigation ? 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 /*#__PURE__*/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 /*#__PURE__*/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 = typeof classNameProp === \"function\" ? classNameProp(isActive) : classNameProp;\n var style = typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n if (isActive) {\n className = joinClassnames(className, activeClassName);\n style = _extends({}, style, activeStyle);\n }\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 /*#__PURE__*/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\", \"false\"]);\n NavLink.propTypes = _extends({}, Link.propTypes, {\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n });\n}\n\nexport { BrowserRouter, HashRouter, Link, NavLink };\n//# sourceMappingURL=react-router-dom.js.map\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 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';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== \"undefined\" // 'global proper'\n? // eslint-disable-next-line no-undef\nglobalThis : typeof window !== \"undefined\" ? window // Browser\n: typeof global !== \"undefined\" ? global // node.js\n: {};\n\nfunction getUniqueId() {\n var key = \"__global_unique_id__\";\n return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n} // Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // eslint-disable-next-line no-self-compare\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n 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 = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Provider, _React$Component);\n\n function Provider() {\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.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; // No change\n } else {\n changedBits = typeof calculateChangedBits === \"function\" ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== \"production\") {\n process.env.NODE_ENV !== \"production\" ? warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, \"calculateChangedBits: Expected the return value to be a \" + \"31-bit integer. Instead received: \" + changedBits) : void 0;\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 }(React.Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer = /*#__PURE__*/function (_React$Component2) {\n _inheritsLoose(Consumer, _React$Component2);\n\n function Consumer() {\n var _this2;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n _this2 = _React$Component2.call.apply(_React$Component2, [this].concat(args)) || this;\n _this2.observedBits = void 0;\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 // Subscribe to all changes by default\n : 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 // Subscribe to all changes by default\n : 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 }(React.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\n// MIT License\nvar createContext = React.createContext || createReactContext;\n\n// 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 = /*#__PURE__*/createNamedContext(\"Router-History\");\n\nvar context = /*#__PURE__*/createNamedContext(\"Router\");\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router = /*#__PURE__*/function (_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 _this._pendingLocation = location;\n });\n }\n\n return _this;\n }\n\n var _proto = Router.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n this._isMounted = true;\n\n if (this.unlisten) {\n // Any pre-mount location changes have been captured at\n // this point, so unregister the listener.\n this.unlisten();\n }\n\n if (!this.props.staticContext) {\n this.unlisten = this.props.history.listen(function (location) {\n if (_this2._isMounted) {\n _this2.setState({\n location: location\n });\n }\n });\n }\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) {\n this.unlisten();\n this._isMounted = false;\n this._pendingLocation = null;\n }\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/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 }, /*#__PURE__*/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/**\n * The public API for a that stores location in memory.\n */\n\nvar MemoryRouter = /*#__PURE__*/function (_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 /*#__PURE__*/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 = /*#__PURE__*/function (_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/**\n * The public API for prompting the user before navigating away from a screen.\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 /*#__PURE__*/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 /*#__PURE__*/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/**\n * The public API for navigating programmatically with a component.\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 /*#__PURE__*/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 /*#__PURE__*/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 = /*#__PURE__*/function (_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 /*#__PURE__*/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) && isEmptyChildren(children)) {\n children = null;\n }\n\n return /*#__PURE__*/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 ? /*#__PURE__*/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 = /*#__PURE__*/function (_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 /*#__PURE__*/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/**\n * The public API for rendering the first that matches.\n */\n\nvar Switch = /*#__PURE__*/function (_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 /*#__PURE__*/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 && /*#__PURE__*/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 ? /*#__PURE__*/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/**\n * A public higher-order component to access the imperative API\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 /*#__PURE__*/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 /*#__PURE__*/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;\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}\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}\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}\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$1 = 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$1[key] && global$1[key] !== \"esm\") {\n var initialBuildName = buildNames[global$1[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$1[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 };\n//# sourceMappingURL=react-router.js.map\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports['default'] = createSlicer;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _getSubsetJs = require('./getSubset.js');\n\nvar _getSubsetJs2 = _interopRequireDefault(_getSubsetJs);\n\nvar _utilTypeOfJs = require('./util/typeOf.js');\n\nvar _utilTypeOfJs2 = _interopRequireDefault(_utilTypeOfJs);\n\n/**\n * @description\n * createSlicer inspects the typeof paths and returns an appropriate slicer function.\n *\n * @param {String|String[]} [paths] The paths argument supplied to persistState.\n *\n * @return {Function} A slicer function, which returns the subset to store when called with Redux's store state.\n */\n\nfunction createSlicer(paths) {\n switch ((0, _utilTypeOfJs2['default'])(paths)) {\n case 'void':\n return function (state) {\n return state;\n };\n case 'string':\n return function (state) {\n return (0, _getSubsetJs2['default'])(state, [paths]);\n };\n case 'array':\n return function (state) {\n return (0, _getSubsetJs2['default'])(state, paths);\n };\n default:\n return console.error('Invalid paths argument, should be of type String, Array or Void');\n }\n}\n\nmodule.exports = exports['default'];","/**\n * @description\n * getSubset returns an object with the same structure as the original object passed in,\n * but contains only the specified keys and only if that key has a truth-y value.\n *\n * @param {Object} obj The object from which to create a subset.\n * @param {String[]} paths An array of (top-level) keys that should be included in the subset.\n *\n * @return {Object} An object that contains the specified keys with truth-y values\n */\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = getSubset;\n\nfunction getSubset(obj, paths) {\n var subset = {};\n\n paths.forEach(function (key) {\n var slice = obj[key];\n if (slice) subset[key] = slice;\n });\n\n return subset;\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports['default'] = persistState;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _createSlicerJs = require('./createSlicer.js');\n\nvar _createSlicerJs2 = _interopRequireDefault(_createSlicerJs);\n\nvar _utilMergeStateJs = require('./util/mergeState.js');\n\nvar _utilMergeStateJs2 = _interopRequireDefault(_utilMergeStateJs);\n\n/**\n * @description\n * persistState is a Store Enhancer that syncs (a subset of) store state to localStorage.\n *\n * @param {String|String[]} [paths] Specify keys to sync with localStorage, if left undefined the whole store is persisted\n * @param {Object} [config] Optional config object\n * @param {String} [config.key=\"redux\"] String used as localStorage key\n * @param {Function} [config.slicer] (paths) => (state) => subset. A function that returns a subset\n * of store state that should be persisted to localStorage\n * @param {Function} [config.serialize=JSON.stringify] (subset) => serializedData. Called just before persisting to\n * localStorage. Should transform the subset into a format that can be stored.\n * @param {Function} [config.deserialize=JSON.parse] (persistedData) => subset. Called directly after retrieving\n * persistedState from localStorage. Should transform the data into the format expected by your application\n *\n * @return {Function} An enhanced store\n */\n\nfunction persistState(paths, config) {\n var cfg = _extends({\n key: 'redux',\n merge: _utilMergeStateJs2['default'],\n slicer: _createSlicerJs2['default'],\n serialize: JSON.stringify,\n deserialize: JSON.parse\n }, config);\n\n var key = cfg.key;\n var merge = cfg.merge;\n var slicer = cfg.slicer;\n var serialize = cfg.serialize;\n var deserialize = cfg.deserialize;\n\n return function (next) {\n return function (reducer, initialState, enhancer) {\n if (typeof initialState === 'function' && typeof enhancer === 'undefined') {\n enhancer = initialState;\n initialState = undefined;\n }\n\n var persistedState = undefined;\n var finalInitialState = undefined;\n\n try {\n persistedState = deserialize(localStorage.getItem(key));\n finalInitialState = merge(initialState, persistedState);\n } catch (e) {\n console.warn('Failed to retrieve initialize state from localStorage:', e);\n }\n\n var store = next(reducer, finalInitialState, enhancer);\n var slicerFn = slicer(paths);\n\n store.subscribe(function () {\n var state = store.getState();\n var subset = slicerFn(state);\n\n try {\n localStorage.setItem(key, serialize(subset));\n } catch (e) {\n console.warn('Unable to persist state to localStorage:', e);\n }\n });\n\n return store;\n };\n };\n}\n\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports[\"default\"] = mergeState;\n\nfunction mergeState(initialState, persistedState) {\n return persistedState ? _extends({}, initialState, persistedState) : initialState;\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports['default'] = typeOf;\nvar _isArray = Array.isArray || (Array.isArray = function (a) {\n return '' + a !== a && ({}).toString.call(a) === '[object Array]';\n});\n\n/**\n * @description\n * typeof method that\n * 1. groups all false-y & empty values as void\n * 2. distinguishes between object and array\n *\n * @param {*} thing The thing to inspect\n *\n * @return {String} Actionable type classification\n */\n\nfunction typeOf(thing) {\n if (!thing) return 'void';\n\n if (_isArray(thing)) {\n if (!thing.length) return 'void';\n return 'array';\n }\n\n return typeof thing;\n}\n\nmodule.exports = exports['default'];","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n // Standard Redux middleware definition pattern:\n // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n var middleware = function middleware(_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n // If this \"action\" is really a function, call it and return the result.\n if (typeof action === 'function') {\n // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n return action(dispatch, getState, extraArgument);\n } // Otherwise, pass the action down the middleware chain as usual\n\n\n return next(action);\n };\n };\n };\n\n return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar ActionTypes = exports.ActionTypes = {\n UNDO: '@@redux-undo/UNDO',\n REDO: '@@redux-undo/REDO',\n JUMP_TO_FUTURE: '@@redux-undo/JUMP_TO_FUTURE',\n JUMP_TO_PAST: '@@redux-undo/JUMP_TO_PAST',\n JUMP: '@@redux-undo/JUMP',\n CLEAR_HISTORY: '@@redux-undo/CLEAR_HISTORY'\n};\n\nvar ActionCreators = exports.ActionCreators = {\n undo: function undo() {\n return { type: ActionTypes.UNDO };\n },\n redo: function redo() {\n return { type: ActionTypes.REDO };\n },\n jumpToFuture: function jumpToFuture(index) {\n return { type: ActionTypes.JUMP_TO_FUTURE, index: index };\n },\n jumpToPast: function jumpToPast(index) {\n return { type: ActionTypes.JUMP_TO_PAST, index: index };\n },\n jump: function jump(index) {\n return { type: ActionTypes.JUMP, index: index };\n },\n clearHistory: function clearHistory() {\n return { type: ActionTypes.CLEAR_HISTORY };\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar __DEBUG__ = void 0;\nvar displayBuffer = void 0;\n\nvar colors = {\n prevState: '#9E9E9E',\n action: '#03A9F4',\n nextState: '#4CAF50'\n\n /* istanbul ignore next: debug messaging is not tested */\n};function initBuffer() {\n displayBuffer = {\n header: [],\n prev: [],\n action: [],\n next: [],\n msgs: []\n };\n}\n\n/* istanbul ignore next: debug messaging is not tested */\nfunction printBuffer() {\n var _displayBuffer = displayBuffer,\n header = _displayBuffer.header,\n prev = _displayBuffer.prev,\n next = _displayBuffer.next,\n action = _displayBuffer.action,\n msgs = _displayBuffer.msgs;\n\n if (console.group) {\n var _console, _console2, _console3, _console4, _console5;\n\n (_console = console).groupCollapsed.apply(_console, _toConsumableArray(header));\n (_console2 = console).log.apply(_console2, _toConsumableArray(prev));\n (_console3 = console).log.apply(_console3, _toConsumableArray(action));\n (_console4 = console).log.apply(_console4, _toConsumableArray(next));\n (_console5 = console).log.apply(_console5, _toConsumableArray(msgs));\n console.groupEnd();\n } else {\n var _console6, _console7, _console8, _console9, _console10;\n\n (_console6 = console).log.apply(_console6, _toConsumableArray(header));\n (_console7 = console).log.apply(_console7, _toConsumableArray(prev));\n (_console8 = console).log.apply(_console8, _toConsumableArray(action));\n (_console9 = console).log.apply(_console9, _toConsumableArray(next));\n (_console10 = console).log.apply(_console10, _toConsumableArray(msgs));\n }\n}\n\n/* istanbul ignore next: debug messaging is not tested */\nfunction colorFormat(text, color, obj) {\n return ['%c' + text, 'color: ' + color + '; font-weight: bold', obj];\n}\n\n/* istanbul ignore next: debug messaging is not tested */\nfunction start(action, state) {\n initBuffer();\n if (__DEBUG__) {\n if (console.group) {\n displayBuffer.header = ['%credux-undo', 'font-style: italic', 'action', action.type];\n displayBuffer.action = colorFormat('action', colors.action, action);\n displayBuffer.prev = colorFormat('prev history', colors.prevState, state);\n } else {\n displayBuffer.header = ['redux-undo action', action.type];\n displayBuffer.action = ['action', action];\n displayBuffer.prev = ['prev history', state];\n }\n }\n}\n\n/* istanbul ignore next: debug messaging is not tested */\nfunction end(nextState) {\n if (__DEBUG__) {\n if (console.group) {\n displayBuffer.next = colorFormat('next history', colors.nextState, nextState);\n } else {\n displayBuffer.next = ['next history', nextState];\n }\n printBuffer();\n }\n}\n\n/* istanbul ignore next: debug messaging is not tested */\nfunction log() {\n if (__DEBUG__) {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n displayBuffer.msgs = displayBuffer.msgs.concat([].concat(args, ['\\n']));\n }\n}\n\n/* istanbul ignore next: debug messaging is not tested */\nfunction set(debug) {\n __DEBUG__ = debug;\n}\n\nexports.set = set;\nexports.start = start;\nexports.end = end;\nexports.log = log;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parseActions = parseActions;\nexports.isHistory = isHistory;\nexports.distinctState = distinctState;\nexports.includeAction = includeAction;\nexports.excludeAction = excludeAction;\nexports.combineFilters = combineFilters;\nexports.groupByActionTypes = groupByActionTypes;\nexports.newHistory = newHistory;\n// parseActions helper: takes a string (or array)\n// and makes it an array if it isn't yet\nfunction parseActions(rawActions) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n if (Array.isArray(rawActions)) {\n return rawActions;\n } else if (typeof rawActions === 'string') {\n return [rawActions];\n }\n return defaultValue;\n}\n\n// isHistory helper: check for a valid history object\nfunction isHistory(history) {\n return typeof history.present !== 'undefined' && typeof history.future !== 'undefined' && typeof history.past !== 'undefined' && Array.isArray(history.future) && Array.isArray(history.past);\n}\n\n// distinctState helper: deprecated, does nothing in latest beta\n/* istanbul ignore next */\nfunction distinctState() {\n console.warn('distinctState is deprecated in beta4 and newer. ' + 'The distinctState behavior is now default, which means only ' + 'actions resulting in a new state are recorded. ' + 'See https://github.com/omnidan/redux-undo#filtering-actions ' + 'for more details.');\n return function () {\n return true;\n };\n}\n\n// includeAction helper: whitelist actions to be added to the history\nfunction includeAction(rawActions) {\n var actions = parseActions(rawActions);\n return function (action) {\n return actions.indexOf(action.type) >= 0;\n };\n}\n\n// excludeAction helper: blacklist actions from being added to the history\nfunction excludeAction(rawActions) {\n var actions = parseActions(rawActions);\n return function (action) {\n return actions.indexOf(action.type) < 0;\n };\n}\n\n// combineFilters helper: combine multiple filters to one\nfunction combineFilters() {\n for (var _len = arguments.length, filters = Array(_len), _key = 0; _key < _len; _key++) {\n filters[_key] = arguments[_key];\n }\n\n return filters.reduce(function (prev, curr) {\n return function (action, currentState, previousHistory) {\n return prev(action, currentState, previousHistory) && curr(action, currentState, previousHistory);\n };\n }, function () {\n return true;\n });\n}\n\nfunction groupByActionTypes(rawActions) {\n var actions = parseActions(rawActions);\n return function (action) {\n return actions.indexOf(action.type) >= 0 ? action.type : null;\n };\n}\n\nfunction newHistory(past, present, future) {\n var group = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n return {\n past: past,\n present: present,\n future: future,\n group: group,\n _latestUnfiltered: present,\n index: past.length,\n limit: past.length + future.length + 1\n };\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _actions = require('./actions');\n\nObject.defineProperty(exports, 'ActionTypes', {\n enumerable: true,\n get: function get() {\n return _actions.ActionTypes;\n }\n});\nObject.defineProperty(exports, 'ActionCreators', {\n enumerable: true,\n get: function get() {\n return _actions.ActionCreators;\n }\n});\n\nvar _helpers = require('./helpers');\n\nObject.defineProperty(exports, 'parseActions', {\n enumerable: true,\n get: function get() {\n return _helpers.parseActions;\n }\n});\nObject.defineProperty(exports, 'isHistory', {\n enumerable: true,\n get: function get() {\n return _helpers.isHistory;\n }\n});\nObject.defineProperty(exports, 'distinctState', {\n enumerable: true,\n get: function get() {\n return _helpers.distinctState;\n }\n});\nObject.defineProperty(exports, 'includeAction', {\n enumerable: true,\n get: function get() {\n return _helpers.includeAction;\n }\n});\nObject.defineProperty(exports, 'excludeAction', {\n enumerable: true,\n get: function get() {\n return _helpers.excludeAction;\n }\n});\nObject.defineProperty(exports, 'combineFilters', {\n enumerable: true,\n get: function get() {\n return _helpers.combineFilters;\n }\n});\nObject.defineProperty(exports, 'groupByActionTypes', {\n enumerable: true,\n get: function get() {\n return _helpers.groupByActionTypes;\n }\n});\nObject.defineProperty(exports, 'newHistory', {\n enumerable: true,\n get: function get() {\n return _helpers.newHistory;\n }\n});\n\nvar _reducer = require('./reducer');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_reducer).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = undoable;\n\nvar _debug = require('./debug');\n\nvar debug = _interopRequireWildcard(_debug);\n\nvar _actions = require('./actions');\n\nvar _helpers = require('./helpers');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n// createHistory\nfunction createHistory(state, ignoreInitialState) {\n // ignoreInitialState essentially prevents the user from undoing to the\n // beginning, in the case that the undoable reducer handles initialization\n // in a way that can't be redone simply\n var history = (0, _helpers.newHistory)([], state, []);\n if (ignoreInitialState) {\n history._latestUnfiltered = null;\n }\n return history;\n}\n\n// lengthWithoutFuture: get length of history\nfunction lengthWithoutFuture(history) {\n return history.past.length + 1;\n}\n\n// insert: insert `state` into history, which means adding the current state\n// into `past`, setting the new `state` as `present` and erasing\n// the `future`.\nfunction insert(history, state, limit, group) {\n debug.log('inserting', state);\n debug.log('new free: ', limit - lengthWithoutFuture(history));\n\n var past = history.past,\n _latestUnfiltered = history._latestUnfiltered;\n\n var historyOverflow = limit && lengthWithoutFuture(history) >= limit;\n\n var pastSliced = past.slice(historyOverflow ? 1 : 0);\n var newPast = _latestUnfiltered != null ? [].concat(_toConsumableArray(pastSliced), [_latestUnfiltered]) : pastSliced;\n\n return (0, _helpers.newHistory)(newPast, state, [], group);\n}\n\n// jumpToFuture: jump to requested index in future history\nfunction jumpToFuture(history, index) {\n if (index < 0 || index >= history.future.length) return history;\n\n var past = history.past,\n future = history.future,\n _latestUnfiltered = history._latestUnfiltered;\n\n\n var newPast = [].concat(_toConsumableArray(past), [_latestUnfiltered], _toConsumableArray(future.slice(0, index)));\n var newPresent = future[index];\n var newFuture = future.slice(index + 1);\n\n return (0, _helpers.newHistory)(newPast, newPresent, newFuture);\n}\n\n// jumpToPast: jump to requested index in past history\nfunction jumpToPast(history, index) {\n if (index < 0 || index >= history.past.length) return history;\n\n var past = history.past,\n future = history.future,\n _latestUnfiltered = history._latestUnfiltered;\n\n\n var newPast = past.slice(0, index);\n var newFuture = [].concat(_toConsumableArray(past.slice(index + 1)), [_latestUnfiltered], _toConsumableArray(future));\n var newPresent = past[index];\n\n return (0, _helpers.newHistory)(newPast, newPresent, newFuture);\n}\n\n// jump: jump n steps in the past or forward\nfunction jump(history, n) {\n if (n > 0) return jumpToFuture(history, n - 1);\n if (n < 0) return jumpToPast(history, history.past.length + n);\n return history;\n}\n\n// helper to dynamically match in the reducer's switch-case\nfunction actionTypeAmongClearHistoryType(actionType, clearHistoryType) {\n return clearHistoryType.indexOf(actionType) > -1 ? actionType : !actionType;\n}\n\n// redux-undo higher order reducer\nfunction undoable(reducer) {\n var rawConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n debug.set(rawConfig.debug);\n\n var config = {\n initTypes: (0, _helpers.parseActions)(rawConfig.initTypes, ['@@redux-undo/INIT']),\n limit: rawConfig.limit,\n filter: rawConfig.filter || function () {\n return true;\n },\n groupBy: rawConfig.groupBy || function () {\n return null;\n },\n undoType: rawConfig.undoType || _actions.ActionTypes.UNDO,\n redoType: rawConfig.redoType || _actions.ActionTypes.REDO,\n jumpToPastType: rawConfig.jumpToPastType || _actions.ActionTypes.JUMP_TO_PAST,\n jumpToFutureType: rawConfig.jumpToFutureType || _actions.ActionTypes.JUMP_TO_FUTURE,\n jumpType: rawConfig.jumpType || _actions.ActionTypes.JUMP,\n clearHistoryType: Array.isArray(rawConfig.clearHistoryType) ? rawConfig.clearHistoryType : [rawConfig.clearHistoryType || _actions.ActionTypes.CLEAR_HISTORY],\n neverSkipReducer: rawConfig.neverSkipReducer || false,\n ignoreInitialState: rawConfig.ignoreInitialState || false,\n syncFilter: rawConfig.syncFilter || false\n };\n\n var initialState = config.history;\n return function () {\n for (var _len = arguments.length, slices = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n slices[_key - 2] = arguments[_key];\n }\n\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n debug.start(action, state);\n\n var history = state;\n if (!initialState) {\n debug.log('history is uninitialized');\n\n if (state === undefined) {\n var clearHistoryAction = { type: _actions.ActionTypes.CLEAR_HISTORY };\n var start = reducer.apply(undefined, [state, clearHistoryAction].concat(slices));\n\n history = createHistory(start, config.ignoreInitialState);\n\n debug.log('do not set initialState on probe actions');\n } else if ((0, _helpers.isHistory)(state)) {\n history = initialState = config.ignoreInitialState ? state : (0, _helpers.newHistory)(state.past, state.present, state.future);\n debug.log('initialHistory initialized: initialState is a history', initialState);\n } else {\n history = initialState = createHistory(state, config.ignoreInitialState);\n debug.log('initialHistory initialized: initialState is not a history', initialState);\n }\n }\n\n var skipReducer = function skipReducer(res) {\n return config.neverSkipReducer ? _extends({}, res, {\n present: reducer.apply(undefined, [res.present, action].concat(slices))\n }) : res;\n };\n\n var res = void 0;\n switch (action.type) {\n case undefined:\n return history;\n\n case config.undoType:\n res = jump(history, -1);\n debug.log('perform undo');\n debug.end(res);\n return skipReducer(res);\n\n case config.redoType:\n res = jump(history, 1);\n debug.log('perform redo');\n debug.end(res);\n return skipReducer(res);\n\n case config.jumpToPastType:\n res = jumpToPast(history, action.index);\n debug.log('perform jumpToPast to ' + action.index);\n debug.end(res);\n return skipReducer(res);\n\n case config.jumpToFutureType:\n res = jumpToFuture(history, action.index);\n debug.log('perform jumpToFuture to ' + action.index);\n debug.end(res);\n return skipReducer(res);\n\n case config.jumpType:\n res = jump(history, action.index);\n debug.log('perform jump to ' + action.index);\n debug.end(res);\n return skipReducer(res);\n\n case actionTypeAmongClearHistoryType(action.type, config.clearHistoryType):\n res = createHistory(history.present);\n debug.log('perform clearHistory');\n debug.end(res);\n return skipReducer(res);\n\n default:\n res = reducer.apply(undefined, [history.present, action].concat(slices));\n\n if (config.initTypes.some(function (actionType) {\n return actionType === action.type;\n })) {\n debug.log('reset history due to init action');\n debug.end(initialState);\n return initialState;\n }\n\n if (history._latestUnfiltered === res) {\n // Don't handle this action. Do not call debug.end here,\n // because this action should not produce side effects to the console\n return history;\n }\n\n var filtered = typeof config.filter === 'function' && !config.filter(action, res, history);\n var group = config.groupBy(action, res, history);\n\n if (filtered) {\n // if filtering an action, merely update the present\n var filteredState = (0, _helpers.newHistory)(history.past, res, history.future, history.group);\n if (!config.syncFilter) {\n filteredState._latestUnfiltered = history._latestUnfiltered;\n }\n debug.log('filter ignored action, not storing it in past');\n debug.end(filteredState);\n return filteredState;\n } else if (group != null && group === history.group) {\n var groupedState = (0, _helpers.newHistory)(history.past, res, history.future, history.group);\n debug.log('groupBy grouped the action with the previous action');\n debug.end(groupedState);\n return groupedState;\n } else {\n // If the action wasn't filtered, insert normally\n history = insert(history, res, config.limit, group);\n\n debug.log('inserted new state into history');\n debug.end(history);\n return history;\n }\n }\n };\n}\nmodule.exports = exports['default'];","// Cache implementation based on Erik Rasmussen's `lru-memoize`:\n// https://github.com/erikras/lru-memoize\nvar NOT_FOUND = 'NOT_FOUND';\n\nfunction createSingletonCache(equals) {\n var entry;\n return {\n get: function get(key) {\n if (entry && equals(entry.key, key)) {\n return entry.value;\n }\n\n return NOT_FOUND;\n },\n put: function put(key, value) {\n entry = {\n key: key,\n value: value\n };\n },\n getEntries: function getEntries() {\n return entry ? [entry] : [];\n },\n clear: function clear() {\n entry = undefined;\n }\n };\n}\n\nfunction createLruCache(maxSize, equals) {\n var entries = [];\n\n function get(key) {\n var cacheIndex = entries.findIndex(function (entry) {\n return equals(key, entry.key);\n }); // We found a cached entry\n\n if (cacheIndex > -1) {\n var entry = entries[cacheIndex]; // Cached entry not at top of cache, move it to the top\n\n if (cacheIndex > 0) {\n entries.splice(cacheIndex, 1);\n entries.unshift(entry);\n }\n\n return entry.value;\n } // No entry found in cache, return sentinel\n\n\n return NOT_FOUND;\n }\n\n function put(key, value) {\n if (get(key) === NOT_FOUND) {\n // TODO Is unshift slow?\n entries.unshift({\n key: key,\n value: value\n });\n\n if (entries.length > maxSize) {\n entries.pop();\n }\n }\n }\n\n function getEntries() {\n return entries;\n }\n\n function clear() {\n entries = [];\n }\n\n return {\n get: get,\n put: put,\n getEntries: getEntries,\n clear: clear\n };\n}\n\nexport var defaultEqualityCheck = function defaultEqualityCheck(a, b) {\n return a === b;\n};\nexport function createCacheKeyComparator(equalityCheck) {\n return function areArgumentsShallowlyEqual(prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n } // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n\n\n var length = prev.length;\n\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n };\n}\n// defaultMemoize now supports a configurable cache size with LRU behavior,\n// and optional comparison of the result value with existing values\nexport function defaultMemoize(func, equalityCheckOrOptions) {\n var providedOptions = typeof equalityCheckOrOptions === 'object' ? equalityCheckOrOptions : {\n equalityCheck: equalityCheckOrOptions\n };\n var _providedOptions$equa = providedOptions.equalityCheck,\n equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa,\n _providedOptions$maxS = providedOptions.maxSize,\n maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS,\n resultEqualityCheck = providedOptions.resultEqualityCheck;\n var comparator = createCacheKeyComparator(equalityCheck);\n var cache = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator); // we reference arguments instead of spreading them for performance reasons\n\n function memoized() {\n var value = cache.get(arguments);\n\n if (value === NOT_FOUND) {\n // @ts-ignore\n value = func.apply(null, arguments);\n\n if (resultEqualityCheck) {\n var entries = cache.getEntries();\n var matchingEntry = entries.find(function (entry) {\n return resultEqualityCheck(entry.value, value);\n });\n\n if (matchingEntry) {\n value = matchingEntry.value;\n }\n }\n\n cache.put(arguments, value);\n }\n\n return value;\n }\n\n memoized.clearCache = function () {\n return cache.clear();\n };\n\n return memoized;\n}","import { defaultMemoize, defaultEqualityCheck } from './defaultMemoize';\nexport { defaultMemoize, defaultEqualityCheck };\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep === 'function' ? \"function \" + (dep.name || 'unnamed') + \"()\" : typeof dep;\n }).join(', ');\n throw new Error(\"createSelector expects all input-selectors to be functions, but received the following types: [\" + dependencyTypes + \"]\");\n }\n\n return dependencies;\n}\n\nexport function createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptionsFromArgs[_key - 1] = arguments[_key];\n }\n\n var createSelector = function createSelector() {\n for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var _recomputations = 0;\n\n var _lastResult; // Due to the intricacies of rest params, we can't do an optional arg after `...funcs`.\n // So, start by declaring the default value here.\n // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.)\n\n\n var directlyPassedOptions = {\n memoizeOptions: undefined\n }; // Normally, the result func or \"output selector\" is the last arg\n\n var resultFunc = funcs.pop(); // If the result func is actually an _object_, assume it's our options object\n\n if (typeof resultFunc === 'object') {\n directlyPassedOptions = resultFunc; // and pop the real result func off\n\n resultFunc = funcs.pop();\n }\n\n if (typeof resultFunc !== 'function') {\n throw new Error(\"createSelector expects an output function after the inputs, but received: [\" + typeof resultFunc + \"]\");\n } // Determine which set of options we're using. Prefer options passed directly,\n // but fall back to options given to createSelectorCreator.\n\n\n var _directlyPassedOption = directlyPassedOptions,\n _directlyPassedOption2 = _directlyPassedOption.memoizeOptions,\n memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2; // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer\n // is an array. In most libs I've looked at, it's an equality function or options object.\n // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full\n // user-provided array of options. Otherwise, it must be just the _first_ arg, and so\n // we wrap it in an array so we can apply it.\n\n var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];\n var dependencies = getDependencies(funcs);\n var memoizedResultFunc = memoize.apply(void 0, [function recomputationWrapper() {\n _recomputations++; // apply arguments instead of spreading for performance.\n\n return resultFunc.apply(null, arguments);\n }].concat(finalMemoizeOptions)); // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n\n var selector = memoize(function dependenciesChecker() {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n // @ts-ignore\n params.push(dependencies[i].apply(null, arguments));\n } // apply arguments instead of spreading for performance.\n\n\n _lastResult = memoizedResultFunc.apply(null, params);\n return _lastResult;\n });\n Object.assign(selector, {\n resultFunc: resultFunc,\n memoizedResultFunc: memoizedResultFunc,\n dependencies: dependencies,\n lastResult: function lastResult() {\n return _lastResult;\n },\n recomputations: function recomputations() {\n return _recomputations;\n },\n resetRecomputations: function resetRecomputations() {\n return _recomputations = 0;\n }\n });\n return selector;\n }; // @ts-ignore\n\n\n return createSelector;\n}\nexport var createSelector = /* #__PURE__ */createSelectorCreator(defaultMemoize);\n// Manual definition of state and output arguments\nexport var createStructuredSelector = function createStructuredSelector(selectors, selectorCreator) {\n if (selectorCreator === void 0) {\n selectorCreator = createSelector;\n }\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + (\"where each property is a selector, instead received a \" + typeof selectors));\n }\n\n var objectKeys = Object.keys(selectors);\n var resultSelector = selectorCreator( // @ts-ignore\n objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n return resultSelector;\n};","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","/** @license React v0.19.1\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var f,g,h,k,l;\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var p=null,q=null,t=function(){if(null!==p)try{var a=exports.unstable_now();p(!0,a);p=null}catch(b){throw setTimeout(t,0),b;}},u=Date.now();exports.unstable_now=function(){return Date.now()-u};f=function(a){null!==p?setTimeout(f,0,a):(p=a,setTimeout(t,0))};g=function(a,b){q=setTimeout(a,b)};h=function(){clearTimeout(q)};k=function(){return!1};l=exports.unstable_forceFrameRate=function(){}}else{var w=window.performance,x=window.Date,\ny=window.setTimeout,z=window.clearTimeout;if(\"undefined\"!==typeof console){var A=window.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\"function\"!==typeof A&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")}if(\"object\"===\ntypeof w&&\"function\"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var B=x.now();exports.unstable_now=function(){return x.now()-B}}var C=!1,D=null,E=-1,F=5,G=0;k=function(){return exports.unstable_now()>=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","var parse = require('inline-style-parser');\n\n/**\n * Parses inline style to object.\n *\n * @example\n * // returns { 'line-height': '42' }\n * StyleToObject('line-height: 42;');\n *\n * @param {String} style - The inline style.\n * @param {Function} [iterator] - The iterator function.\n * @return {null|Object}\n */\nfunction StyleToObject(style, iterator) {\n var output = null;\n if (!style || typeof style !== 'string') {\n return output;\n }\n\n var declaration;\n var declarations = parse(style);\n var hasIterator = typeof iterator === 'function';\n var property;\n var value;\n\n for (var i = 0, len = declarations.length; i < len; i++) {\n declaration = declarations[i];\n property = declaration.property;\n value = declaration.value;\n\n if (hasIterator) {\n iterator(property, value, declaration);\n } else if (value) {\n output || (output = {});\n output[property] = value;\n }\n }\n\n return output;\n}\n\nmodule.exports = StyleToObject;\nmodule.exports.default = StyleToObject; // ESM support\n","// TinyColor v1.4.2\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\n(function(Math) {\n\nvar trimLeft = /^\\s+/,\n trimRight = /\\s+$/,\n tinyCounter = 0,\n mathRound = Math.round,\n mathMin = Math.min,\n mathMax = Math.max,\n mathRandom = Math.random;\n\nfunction tinycolor (color, opts) {\n\n color = (color) ? color : '';\n opts = opts || { };\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n\n var rgb = inputToRGB(color);\n this._originalInput = color,\n this._r = rgb.r,\n this._g = rgb.g,\n this._b = rgb.b,\n this._a = rgb.a,\n this._roundA = mathRound(100*this._a) / 100,\n this._format = opts.format || rgb.format;\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) { this._r = mathRound(this._r); }\n if (this._g < 1) { this._g = mathRound(this._g); }\n if (this._b < 1) { this._b = mathRound(this._b); }\n\n this._ok = rgb.ok;\n this._tc_id = tinyCounter++;\n}\n\ntinycolor.prototype = {\n isDark: function() {\n return this.getBrightness() < 128;\n },\n isLight: function() {\n return !this.isDark();\n },\n isValid: function() {\n return this._ok;\n },\n getOriginalInput: function() {\n return this._originalInput;\n },\n getFormat: function() {\n return this._format;\n },\n getAlpha: function() {\n return this._a;\n },\n getBrightness: function() {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function() {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r/255;\n GsRGB = rgb.g/255;\n BsRGB = rgb.b/255;\n\n if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);}\n if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);}\n if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);}\n return (0.2126 * R) + (0.7152 * G) + (0.0722 * B);\n },\n setAlpha: function(value) {\n this._a = boundAlpha(value);\n this._roundA = mathRound(100*this._a) / 100;\n return this;\n },\n toHsv: function() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };\n },\n toHsvString: function() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);\n return (this._a == 1) ?\n \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" :\n \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \"+ this._roundA + \")\";\n },\n toHsl: function() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };\n },\n toHslString: function() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);\n return (this._a == 1) ?\n \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" :\n \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \"+ this._roundA + \")\";\n },\n toHex: function(allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function(allow3Char) {\n return '#' + this.toHex(allow3Char);\n },\n toHex8: function(allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function(allow4Char) {\n return '#' + this.toHex8(allow4Char);\n },\n toRgb: function() {\n return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a };\n },\n toRgbString: function() {\n return (this._a == 1) ?\n \"rgb(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \")\" :\n \"rgba(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \", \" + this._roundA + \")\";\n },\n toPercentageRgb: function() {\n return { r: mathRound(bound01(this._r, 255) * 100) + \"%\", g: mathRound(bound01(this._g, 255) * 100) + \"%\", b: mathRound(bound01(this._b, 255) * 100) + \"%\", a: this._a };\n },\n toPercentageRgbString: function() {\n return (this._a == 1) ?\n \"rgb(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%)\" :\n \"rgba(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n },\n toName: function() {\n if (this._a === 0) {\n return \"transparent\";\n }\n\n if (this._a < 1) {\n return false;\n }\n\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function(secondColor) {\n var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n\n return \"progid:DXImageTransform.Microsoft.gradient(\"+gradientType+\"startColorstr=\"+hex8String+\",endColorstr=\"+secondHex8String+\")\";\n },\n toString: function(format) {\n var formatSet = !!format;\n format = format || this._format;\n\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n\n return formattedString || this.toHexString();\n },\n clone: function() {\n return tinycolor(this.toString());\n },\n\n _applyModification: function(fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function() {\n return this._applyModification(lighten, arguments);\n },\n brighten: function() {\n return this._applyModification(brighten, arguments);\n },\n darken: function() {\n return this._applyModification(darken, arguments);\n },\n desaturate: function() {\n return this._applyModification(desaturate, arguments);\n },\n saturate: function() {\n return this._applyModification(saturate, arguments);\n },\n greyscale: function() {\n return this._applyModification(greyscale, arguments);\n },\n spin: function() {\n return this._applyModification(spin, arguments);\n },\n\n _applyCombination: function(fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function() {\n return this._applyCombination(analogous, arguments);\n },\n complement: function() {\n return this._applyCombination(complement, arguments);\n },\n monochromatic: function() {\n return this._applyCombination(monochromatic, arguments);\n },\n splitcomplement: function() {\n return this._applyCombination(splitcomplement, arguments);\n },\n triad: function() {\n return this._applyCombination(triad, arguments);\n },\n tetrad: function() {\n return this._applyCombination(tetrad, arguments);\n }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function(color, opts) {\n if (typeof color == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n }\n else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n\n return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n// \"red\"\n// \"#f00\" or \"f00\"\n// \"#ff0000\" or \"ff0000\"\n// \"#ff000000\" or \"ff000000\"\n// \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n// \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n// \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n// \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n// \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n// \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n// \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n\n if (typeof color == \"object\") {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n\n a = boundAlpha(a);\n\n return {\n ok: ok,\n format: color.format || format,\n r: mathMin(255, mathMax(rgb.r, 0)),\n g: mathMin(255, mathMax(rgb.g, 0)),\n b: mathMin(255, mathMax(rgb.b, 0)),\n a: a\n };\n}\n\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// \n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// \n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b){\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\n var h, s, l = (max + min) / 2;\n\n if(max == min) {\n h = s = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch(max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n\n h /= 6;\n }\n\n return { h: h, s: s, l: l };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n var r, g, b;\n\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n\n function hue2rgb(p, q, t) {\n if(t < 0) t += 1;\n if(t > 1) t -= 1;\n if(t < 1/6) return p + (q - p) * 6 * t;\n if(t < 1/2) return q;\n if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n return p;\n }\n\n if(s === 0) {\n r = g = b = l; // achromatic\n }\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 { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\n var h, s, v = max;\n\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n\n if(max == min) {\n h = 0; // achromatic\n }\n else {\n switch(max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n h /= 6;\n }\n return { h: h, s: s, v: v };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n\n var hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16))\n ];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n\n return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n\n var hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16)),\n pad2(convertDecimalToHex(a))\n ];\n\n // Return a 4 character hex if possible\n if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n\n return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n\n var hex = [\n pad2(convertDecimalToHex(a)),\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16))\n ];\n\n return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) { return false; }\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\n\ntinycolor.random = function() {\n return tinycolor.fromRatio({\n r: mathRandom(),\n g: mathRandom(),\n b: mathRandom()\n });\n};\n\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// \n\nfunction desaturate(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\n\nfunction saturate(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\n\nfunction greyscale(color) {\n return tinycolor(color).desaturate(100);\n}\n\nfunction lighten (color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\nfunction brighten(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var rgb = tinycolor(color).toRgb();\n rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100))));\n rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100))));\n rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100))));\n return tinycolor(rgb);\n}\n\nfunction darken (color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// \n\nfunction complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n}\n\nfunction triad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })\n ];\n}\n\nfunction tetrad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })\n ];\n}\n\nfunction splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}),\n tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l})\n ];\n}\n\nfunction analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n\n for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n}\n\nfunction monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h, s = hsv.s, v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n\n while (results--) {\n ret.push(tinycolor({ h: h, s: s, v: v}));\n v = (v + modification) % 1;\n }\n\n return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function(color1, color2, amount) {\n amount = (amount === 0) ? 0 : (amount || 50);\n\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n\n var p = amount / 100;\n\n var rgba = {\n r: ((rgb2.r - rgb1.r) * p) + rgb1.r,\n g: ((rgb2.g - rgb1.g) * p) + rgb1.g,\n b: ((rgb2.b - rgb1.b) * p) + rgb1.b,\n a: ((rgb2.a - rgb1.a) * p) + rgb1.a\n };\n\n return tinycolor(rgba);\n};\n\n\n// Readability Functions\n// ---------------------\n// false\n// tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function(color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n\n out = false;\n\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function(baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size ;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors ;\n level = args.level;\n size = args.size;\n\n for (var i= 0; i < colorList.length ; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n\n if (tinycolor.isReadable(baseColor, bestColor, {\"level\":level,\"size\":size}) || !includeFallbackColors) {\n return bestColor;\n }\n else {\n args.includeFallbackColors=false;\n return tinycolor.mostReadable(baseColor,[\"#fff\", \"#000\"],args);\n }\n};\n\n\n// Big List of Colors\n// ------------------\n// \nvar names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\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: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\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 lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\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: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\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: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n var flipped = { };\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n a = parseFloat(a);\n\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n\n return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n if (isOnePointZero(n)) { n = \"100%\"; }\n\n var processPercent = isPercentage(n);\n n = mathMin(max, mathMax(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if ((Math.abs(n - max) < 0.000001)) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return (n % max) / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n return mathMin(1, mathMax(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// \nfunction isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n return typeof n === \"string\" && n.indexOf('%') != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n return c.length == 1 ? '0' + c : '' + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n if (n <= 1) {\n n = (n * 100) + \"%\";\n }\n\n return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n return (parseIntFromHex(h) / 255);\n}\n\nvar matchers = (function() {\n\n // \n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // \n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n})();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing. Take in a number of formats, and output an object\n// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n\n color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n }\n else if (color == 'transparent') {\n return { r: 0, g: 0, b: 0, a: 0, format: \"name\" };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if ((match = matchers.rgb.exec(color))) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n if ((match = matchers.rgba.exec(color))) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n if ((match = matchers.hsl.exec(color))) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n if ((match = matchers.hsla.exec(color))) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n if ((match = matchers.hsv.exec(color))) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n if ((match = matchers.hsva.exec(color))) {\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\n }\n if ((match = matchers.hex8.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if ((match = matchers.hex6.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if ((match = matchers.hex4.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n a: convertHexToDecimal(match[4] + '' + match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if ((match = matchers.hex3.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n\n return false;\n}\n\nfunction validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || {\"level\":\"AA\", \"size\":\"small\"};\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return {\"level\":level, \"size\":size};\n}\n\n// Node: Export function\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports = tinycolor;\n}\n// AMD/requirejs: Define the module\nelse if (typeof define === 'function' && define.amd) {\n define(function () {return tinycolor;});\n}\n// Browser: Expose to window\nelse {\n window.tinycolor = tinycolor;\n}\n\n})(Math);\n","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n return obj != null && obj.constructor != null &&\n typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n","/*!\n * URI.js - Mutating URLs\n * IPv6 Support\n *\n * Version: 1.19.11\n *\n * Author: Rodney Rehm\n * Web: http://medialize.github.io/URI.js/\n *\n * Licensed under\n * MIT License http://www.opensource.org/licenses/mit-license\n *\n */\n\n(function (root, factory) {\n 'use strict';\n // https://github.com/umdjs/umd/blob/master/returnExports.js\n if (typeof module === 'object' && module.exports) {\n // Node\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory);\n } else {\n // Browser globals (root is window)\n root.IPv6 = factory(root);\n }\n}(this, function (root) {\n 'use strict';\n\n /*\n var _in = \"fe80:0000:0000:0000:0204:61ff:fe9d:f156\";\n var _out = IPv6.best(_in);\n var _expected = \"fe80::204:61ff:fe9d:f156\";\n\n console.log(_in, _out, _expected, _out === _expected);\n */\n\n // save current IPv6 variable, if any\n var _IPv6 = root && root.IPv6;\n\n function bestPresentation(address) {\n // based on:\n // Javascript to test an IPv6 address for proper format, and to\n // present the \"best text representation\" according to IETF Draft RFC at\n // http://tools.ietf.org/html/draft-ietf-6man-text-addr-representation-04\n // 8 Feb 2010 Rich Brown, Dartware, LLC\n // Please feel free to use this code as long as you provide a link to\n // http://www.intermapper.com\n // http://intermapper.com/support/tools/IPV6-Validator.aspx\n // http://download.dartware.com/thirdparty/ipv6validator.js\n\n var _address = address.toLowerCase();\n var segments = _address.split(':');\n var length = segments.length;\n var total = 8;\n\n // trim colons (:: or ::a:b:c… or …a:b:c::)\n if (segments[0] === '' && segments[1] === '' && segments[2] === '') {\n // must have been ::\n // remove first two items\n segments.shift();\n segments.shift();\n } else if (segments[0] === '' && segments[1] === '') {\n // must have been ::xxxx\n // remove the first item\n segments.shift();\n } else if (segments[length - 1] === '' && segments[length - 2] === '') {\n // must have been xxxx::\n segments.pop();\n }\n\n length = segments.length;\n\n // adjust total segments for IPv4 trailer\n if (segments[length - 1].indexOf('.') !== -1) {\n // found a \".\" which means IPv4\n total = 7;\n }\n\n // fill empty segments them with \"0000\"\n var pos;\n for (pos = 0; pos < length; pos++) {\n if (segments[pos] === '') {\n break;\n }\n }\n\n if (pos < total) {\n segments.splice(pos, 1, '0000');\n while (segments.length < total) {\n segments.splice(pos, 0, '0000');\n }\n }\n\n // strip leading zeros\n var _segments;\n for (var i = 0; i < total; i++) {\n _segments = segments[i].split('');\n for (var j = 0; j < 3 ; j++) {\n if (_segments[0] === '0' && _segments.length > 1) {\n _segments.splice(0,1);\n } else {\n break;\n }\n }\n\n segments[i] = _segments.join('');\n }\n\n // find longest sequence of zeroes and coalesce them into one segment\n var best = -1;\n var _best = 0;\n var _current = 0;\n var current = -1;\n var inzeroes = false;\n // i; already declared\n\n for (i = 0; i < total; i++) {\n if (inzeroes) {\n if (segments[i] === '0') {\n _current += 1;\n } else {\n inzeroes = false;\n if (_current > _best) {\n best = current;\n _best = _current;\n }\n }\n } else {\n if (segments[i] === '0') {\n inzeroes = true;\n current = i;\n _current = 1;\n }\n }\n }\n\n if (_current > _best) {\n best = current;\n _best = _current;\n }\n\n if (_best > 1) {\n segments.splice(best, _best, '');\n }\n\n length = segments.length;\n\n // assemble remaining segments\n var result = '';\n if (segments[0] === '') {\n result = ':';\n }\n\n for (i = 0; i < length; i++) {\n result += segments[i];\n if (i === length - 1) {\n break;\n }\n\n result += ':';\n }\n\n if (segments[length - 1] === '') {\n result += ':';\n }\n\n return result;\n }\n\n function noConflict() {\n /*jshint validthis: true */\n if (root.IPv6 === this) {\n root.IPv6 = _IPv6;\n }\n\n return this;\n }\n\n return {\n best: bestPresentation,\n noConflict: noConflict\n };\n}));\n","/*!\n * URI.js - Mutating URLs\n * Second Level Domain (SLD) Support\n *\n * Version: 1.19.11\n *\n * Author: Rodney Rehm\n * Web: http://medialize.github.io/URI.js/\n *\n * Licensed under\n * MIT License http://www.opensource.org/licenses/mit-license\n *\n */\n\n(function (root, factory) {\n 'use strict';\n // https://github.com/umdjs/umd/blob/master/returnExports.js\n if (typeof module === 'object' && module.exports) {\n // Node\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory);\n } else {\n // Browser globals (root is window)\n root.SecondLevelDomains = factory(root);\n }\n}(this, function (root) {\n 'use strict';\n\n // save current SecondLevelDomains variable, if any\n var _SecondLevelDomains = root && root.SecondLevelDomains;\n\n var SLD = {\n // list of known Second Level Domains\n // converted list of SLDs from https://github.com/gavingmiller/second-level-domains\n // ----\n // publicsuffix.org is more current and actually used by a couple of browsers internally.\n // downside is it also contains domains like \"dyndns.org\" - which is fine for the security\n // issues browser have to deal with (SOP for cookies, etc) - but is way overboard for URI.js\n // ----\n list: {\n 'ac':' com gov mil net org ',\n 'ae':' ac co gov mil name net org pro sch ',\n 'af':' com edu gov net org ',\n 'al':' com edu gov mil net org ',\n 'ao':' co ed gv it og pb ',\n 'ar':' com edu gob gov int mil net org tur ',\n 'at':' ac co gv or ',\n 'au':' asn com csiro edu gov id net org ',\n 'ba':' co com edu gov mil net org rs unbi unmo unsa untz unze ',\n 'bb':' biz co com edu gov info net org store tv ',\n 'bh':' biz cc com edu gov info net org ',\n 'bn':' com edu gov net org ',\n 'bo':' com edu gob gov int mil net org tv ',\n 'br':' adm adv agr am arq art ato b bio blog bmd cim cng cnt com coop ecn edu eng esp etc eti far flog fm fnd fot fst g12 ggf gov imb ind inf jor jus lel mat med mil mus net nom not ntr odo org ppg pro psc psi qsl rec slg srv tmp trd tur tv vet vlog wiki zlg ',\n 'bs':' com edu gov net org ',\n 'bz':' du et om ov rg ',\n 'ca':' ab bc mb nb nf nl ns nt nu on pe qc sk yk ',\n 'ck':' biz co edu gen gov info net org ',\n 'cn':' ac ah bj com cq edu fj gd gov gs gx gz ha hb he hi hl hn jl js jx ln mil net nm nx org qh sc sd sh sn sx tj tw xj xz yn zj ',\n 'co':' com edu gov mil net nom org ',\n 'cr':' ac c co ed fi go or sa ',\n 'cy':' ac biz com ekloges gov ltd name net org parliament press pro tm ',\n 'do':' art com edu gob gov mil net org sld web ',\n 'dz':' art asso com edu gov net org pol ',\n 'ec':' com edu fin gov info med mil net org pro ',\n 'eg':' com edu eun gov mil name net org sci ',\n 'er':' com edu gov ind mil net org rochest w ',\n 'es':' com edu gob nom org ',\n 'et':' biz com edu gov info name net org ',\n 'fj':' ac biz com info mil name net org pro ',\n 'fk':' ac co gov net nom org ',\n 'fr':' asso com f gouv nom prd presse tm ',\n 'gg':' co net org ',\n 'gh':' com edu gov mil org ',\n 'gn':' ac com gov net org ',\n 'gr':' com edu gov mil net org ',\n 'gt':' com edu gob ind mil net org ',\n 'gu':' com edu gov net org ',\n 'hk':' com edu gov idv net org ',\n 'hu':' 2000 agrar bolt casino city co erotica erotika film forum games hotel info ingatlan jogasz konyvelo lakas media news org priv reklam sex shop sport suli szex tm tozsde utazas video ',\n 'id':' ac co go mil net or sch web ',\n 'il':' ac co gov idf k12 muni net org ',\n 'in':' ac co edu ernet firm gen gov i ind mil net nic org res ',\n 'iq':' com edu gov i mil net org ',\n 'ir':' ac co dnssec gov i id net org sch ',\n 'it':' edu gov ',\n 'je':' co net org ',\n 'jo':' com edu gov mil name net org sch ',\n 'jp':' ac ad co ed go gr lg ne or ',\n 'ke':' ac co go info me mobi ne or sc ',\n 'kh':' com edu gov mil net org per ',\n 'ki':' biz com de edu gov info mob net org tel ',\n 'km':' asso com coop edu gouv k medecin mil nom notaires pharmaciens presse tm veterinaire ',\n 'kn':' edu gov net org ',\n 'kr':' ac busan chungbuk chungnam co daegu daejeon es gangwon go gwangju gyeongbuk gyeonggi gyeongnam hs incheon jeju jeonbuk jeonnam k kg mil ms ne or pe re sc seoul ulsan ',\n 'kw':' com edu gov net org ',\n 'ky':' com edu gov net org ',\n 'kz':' com edu gov mil net org ',\n 'lb':' com edu gov net org ',\n 'lk':' assn com edu gov grp hotel int ltd net ngo org sch soc web ',\n 'lr':' com edu gov net org ',\n 'lv':' asn com conf edu gov id mil net org ',\n 'ly':' com edu gov id med net org plc sch ',\n 'ma':' ac co gov m net org press ',\n 'mc':' asso tm ',\n 'me':' ac co edu gov its net org priv ',\n 'mg':' com edu gov mil nom org prd tm ',\n 'mk':' com edu gov inf name net org pro ',\n 'ml':' com edu gov net org presse ',\n 'mn':' edu gov org ',\n 'mo':' com edu gov net org ',\n 'mt':' com edu gov net org ',\n 'mv':' aero biz com coop edu gov info int mil museum name net org pro ',\n 'mw':' ac co com coop edu gov int museum net org ',\n 'mx':' com edu gob net org ',\n 'my':' com edu gov mil name net org sch ',\n 'nf':' arts com firm info net other per rec store web ',\n 'ng':' biz com edu gov mil mobi name net org sch ',\n 'ni':' ac co com edu gob mil net nom org ',\n 'np':' com edu gov mil net org ',\n 'nr':' biz com edu gov info net org ',\n 'om':' ac biz co com edu gov med mil museum net org pro sch ',\n 'pe':' com edu gob mil net nom org sld ',\n 'ph':' com edu gov i mil net ngo org ',\n 'pk':' biz com edu fam gob gok gon gop gos gov net org web ',\n 'pl':' art bialystok biz com edu gda gdansk gorzow gov info katowice krakow lodz lublin mil net ngo olsztyn org poznan pwr radom slupsk szczecin torun warszawa waw wroc wroclaw zgora ',\n 'pr':' ac biz com edu est gov info isla name net org pro prof ',\n 'ps':' com edu gov net org plo sec ',\n 'pw':' belau co ed go ne or ',\n 'ro':' arts com firm info nom nt org rec store tm www ',\n 'rs':' ac co edu gov in org ',\n 'sb':' com edu gov net org ',\n 'sc':' com edu gov net org ',\n 'sh':' co com edu gov net nom org ',\n 'sl':' com edu gov net org ',\n 'st':' co com consulado edu embaixada gov mil net org principe saotome store ',\n 'sv':' com edu gob org red ',\n 'sz':' ac co org ',\n 'tr':' av bbs bel biz com dr edu gen gov info k12 name net org pol tel tsk tv web ',\n 'tt':' aero biz cat co com coop edu gov info int jobs mil mobi museum name net org pro tel travel ',\n 'tw':' club com ebiz edu game gov idv mil net org ',\n 'mu':' ac co com gov net or org ',\n 'mz':' ac co edu gov org ',\n 'na':' co com ',\n 'nz':' ac co cri geek gen govt health iwi maori mil net org parliament school ',\n 'pa':' abo ac com edu gob ing med net nom org sld ',\n 'pt':' com edu gov int net nome org publ ',\n 'py':' com edu gov mil net org ',\n 'qa':' com edu gov mil net org ',\n 're':' asso com nom ',\n 'ru':' ac adygeya altai amur arkhangelsk astrakhan bashkiria belgorod bir bryansk buryatia cbg chel chelyabinsk chita chukotka chuvashia com dagestan e-burg edu gov grozny int irkutsk ivanovo izhevsk jar joshkar-ola kalmykia kaluga kamchatka karelia kazan kchr kemerovo khabarovsk khakassia khv kirov koenig komi kostroma kranoyarsk kuban kurgan kursk lipetsk magadan mari mari-el marine mil mordovia mosreg msk murmansk nalchik net nnov nov novosibirsk nsk omsk orenburg org oryol penza perm pp pskov ptz rnd ryazan sakhalin samara saratov simbirsk smolensk spb stavropol stv surgut tambov tatarstan tom tomsk tsaritsyn tsk tula tuva tver tyumen udm udmurtia ulan-ude vladikavkaz vladimir vladivostok volgograd vologda voronezh vrn vyatka yakutia yamal yekaterinburg yuzhno-sakhalinsk ',\n 'rw':' ac co com edu gouv gov int mil net ',\n 'sa':' com edu gov med net org pub sch ',\n 'sd':' com edu gov info med net org tv ',\n 'se':' a ac b bd c d e f g h i k l m n o org p parti pp press r s t tm u w x y z ',\n 'sg':' com edu gov idn net org per ',\n 'sn':' art com edu gouv org perso univ ',\n 'sy':' com edu gov mil net news org ',\n 'th':' ac co go in mi net or ',\n 'tj':' ac biz co com edu go gov info int mil name net nic org test web ',\n 'tn':' agrinet com defense edunet ens fin gov ind info intl mincom nat net org perso rnrt rns rnu tourism ',\n 'tz':' ac co go ne or ',\n 'ua':' biz cherkassy chernigov chernovtsy ck cn co com crimea cv dn dnepropetrovsk donetsk dp edu gov if in ivano-frankivsk kh kharkov kherson khmelnitskiy kiev kirovograd km kr ks kv lg lugansk lutsk lviv me mk net nikolaev od odessa org pl poltava pp rovno rv sebastopol sumy te ternopil uzhgorod vinnica vn zaporizhzhe zhitomir zp zt ',\n 'ug':' ac co go ne or org sc ',\n 'uk':' ac bl british-library co cym gov govt icnet jet lea ltd me mil mod national-library-scotland nel net nhs nic nls org orgn parliament plc police sch scot soc ',\n 'us':' dni fed isa kids nsn ',\n 'uy':' com edu gub mil net org ',\n 've':' co com edu gob info mil net org web ',\n 'vi':' co com k12 net org ',\n 'vn':' ac biz com edu gov health info int name net org pro ',\n 'ye':' co com gov ltd me net org plc ',\n 'yu':' ac co edu gov org ',\n 'za':' ac agric alt bourse city co cybernet db edu gov grondar iaccess imt inca landesign law mil net ngo nis nom olivetti org pix school tm web ',\n 'zm':' ac co com edu gov net org sch ',\n // https://en.wikipedia.org/wiki/CentralNic#Second-level_domains\n 'com': 'ar br cn de eu gb gr hu jpn kr no qc ru sa se uk us uy za ',\n 'net': 'gb jp se uk ',\n 'org': 'ae',\n 'de': 'com '\n },\n // gorhill 2013-10-25: Using indexOf() instead Regexp(). Significant boost\n // in both performance and memory footprint. No initialization required.\n // http://jsperf.com/uri-js-sld-regex-vs-binary-search/4\n // Following methods use lastIndexOf() rather than array.split() in order\n // to avoid any memory allocations.\n has: function(domain) {\n var tldOffset = domain.lastIndexOf('.');\n if (tldOffset <= 0 || tldOffset >= (domain.length-1)) {\n return false;\n }\n var sldOffset = domain.lastIndexOf('.', tldOffset-1);\n if (sldOffset <= 0 || sldOffset >= (tldOffset-1)) {\n return false;\n }\n var sldList = SLD.list[domain.slice(tldOffset+1)];\n if (!sldList) {\n return false;\n }\n return sldList.indexOf(' ' + domain.slice(sldOffset+1, tldOffset) + ' ') >= 0;\n },\n is: function(domain) {\n var tldOffset = domain.lastIndexOf('.');\n if (tldOffset <= 0 || tldOffset >= (domain.length-1)) {\n return false;\n }\n var sldOffset = domain.lastIndexOf('.', tldOffset-1);\n if (sldOffset >= 0) {\n return false;\n }\n var sldList = SLD.list[domain.slice(tldOffset+1)];\n if (!sldList) {\n return false;\n }\n return sldList.indexOf(' ' + domain.slice(0, tldOffset) + ' ') >= 0;\n },\n get: function(domain) {\n var tldOffset = domain.lastIndexOf('.');\n if (tldOffset <= 0 || tldOffset >= (domain.length-1)) {\n return null;\n }\n var sldOffset = domain.lastIndexOf('.', tldOffset-1);\n if (sldOffset <= 0 || sldOffset >= (tldOffset-1)) {\n return null;\n }\n var sldList = SLD.list[domain.slice(tldOffset+1)];\n if (!sldList) {\n return null;\n }\n if (sldList.indexOf(' ' + domain.slice(sldOffset+1, tldOffset) + ' ') < 0) {\n return null;\n }\n return domain.slice(sldOffset+1);\n },\n noConflict: function(){\n if (root.SecondLevelDomains === this) {\n root.SecondLevelDomains = _SecondLevelDomains;\n }\n return this;\n }\n };\n\n return SLD;\n}));\n","/*!\n * URI.js - Mutating URLs\n *\n * Version: 1.19.11\n *\n * Author: Rodney Rehm\n * Web: http://medialize.github.io/URI.js/\n *\n * Licensed under\n * MIT License http://www.opensource.org/licenses/mit-license\n *\n */\n(function (root, factory) {\n 'use strict';\n // https://github.com/umdjs/umd/blob/master/returnExports.js\n if (typeof module === 'object' && module.exports) {\n // Node\n module.exports = factory(require('./punycode'), require('./IPv6'), require('./SecondLevelDomains'));\n } else if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['./punycode', './IPv6', './SecondLevelDomains'], factory);\n } else {\n // Browser globals (root is window)\n root.URI = factory(root.punycode, root.IPv6, root.SecondLevelDomains, root);\n }\n}(this, function (punycode, IPv6, SLD, root) {\n 'use strict';\n /*global location, escape, unescape */\n // FIXME: v2.0.0 renamce non-camelCase properties to uppercase\n /*jshint camelcase: false */\n\n // save current URI variable, if any\n var _URI = root && root.URI;\n\n function URI(url, base) {\n var _urlSupplied = arguments.length >= 1;\n var _baseSupplied = arguments.length >= 2;\n\n // Allow instantiation without the 'new' keyword\n if (!(this instanceof URI)) {\n if (_urlSupplied) {\n if (_baseSupplied) {\n return new URI(url, base);\n }\n\n return new URI(url);\n }\n\n return new URI();\n }\n\n if (url === undefined) {\n if (_urlSupplied) {\n throw new TypeError('undefined is not a valid argument for URI');\n }\n\n if (typeof location !== 'undefined') {\n url = location.href + '';\n } else {\n url = '';\n }\n }\n\n if (url === null) {\n if (_urlSupplied) {\n throw new TypeError('null is not a valid argument for URI');\n }\n }\n\n this.href(url);\n\n // resolve to base according to http://dvcs.w3.org/hg/url/raw-file/tip/Overview.html#constructor\n if (base !== undefined) {\n return this.absoluteTo(base);\n }\n\n return this;\n }\n\n function isInteger(value) {\n return /^[0-9]+$/.test(value);\n }\n\n URI.version = '1.19.11';\n\n var p = URI.prototype;\n var hasOwn = Object.prototype.hasOwnProperty;\n\n function escapeRegEx(string) {\n // https://github.com/medialize/URI.js/commit/85ac21783c11f8ccab06106dba9735a31a86924d#commitcomment-821963\n return string.replace(/([.*+?^=!:${}()|[\\]\\/\\\\])/g, '\\\\$1');\n }\n\n function getType(value) {\n // IE8 doesn't return [Object Undefined] but [Object Object] for undefined value\n if (value === undefined) {\n return 'Undefined';\n }\n\n return String(Object.prototype.toString.call(value)).slice(8, -1);\n }\n\n function isArray(obj) {\n return getType(obj) === 'Array';\n }\n\n function filterArrayValues(data, value) {\n var lookup = {};\n var i, length;\n\n if (getType(value) === 'RegExp') {\n lookup = null;\n } else if (isArray(value)) {\n for (i = 0, length = value.length; i < length; i++) {\n lookup[value[i]] = true;\n }\n } else {\n lookup[value] = true;\n }\n\n for (i = 0, length = data.length; i < length; i++) {\n /*jshint laxbreak: true */\n var _match = lookup && lookup[data[i]] !== undefined\n || !lookup && value.test(data[i]);\n /*jshint laxbreak: false */\n if (_match) {\n data.splice(i, 1);\n length--;\n i--;\n }\n }\n\n return data;\n }\n\n function arrayContains(list, value) {\n var i, length;\n\n // value may be string, number, array, regexp\n if (isArray(value)) {\n // Note: this can be optimized to O(n) (instead of current O(m * n))\n for (i = 0, length = value.length; i < length; i++) {\n if (!arrayContains(list, value[i])) {\n return false;\n }\n }\n\n return true;\n }\n\n var _type = getType(value);\n for (i = 0, length = list.length; i < length; i++) {\n if (_type === 'RegExp') {\n if (typeof list[i] === 'string' && list[i].match(value)) {\n return true;\n }\n } else if (list[i] === value) {\n return true;\n }\n }\n\n return false;\n }\n\n function arraysEqual(one, two) {\n if (!isArray(one) || !isArray(two)) {\n return false;\n }\n\n // arrays can't be equal if they have different amount of content\n if (one.length !== two.length) {\n return false;\n }\n\n one.sort();\n two.sort();\n\n for (var i = 0, l = one.length; i < l; i++) {\n if (one[i] !== two[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n function trimSlashes(text) {\n var trim_expression = /^\\/+|\\/+$/g;\n return text.replace(trim_expression, '');\n }\n\n URI._parts = function() {\n return {\n protocol: null,\n username: null,\n password: null,\n hostname: null,\n urn: null,\n port: null,\n path: null,\n query: null,\n fragment: null,\n // state\n preventInvalidHostname: URI.preventInvalidHostname,\n duplicateQueryParameters: URI.duplicateQueryParameters,\n escapeQuerySpace: URI.escapeQuerySpace\n };\n };\n // state: throw on invalid hostname\n // see https://github.com/medialize/URI.js/pull/345\n // and https://github.com/medialize/URI.js/issues/354\n URI.preventInvalidHostname = false;\n // state: allow duplicate query parameters (a=1&a=1)\n URI.duplicateQueryParameters = false;\n // state: replaces + with %20 (space in query strings)\n URI.escapeQuerySpace = true;\n // static properties\n URI.protocol_expression = /^[a-z][a-z0-9.+-]*$/i;\n URI.idn_expression = /[^a-z0-9\\._-]/i;\n URI.punycode_expression = /(xn--)/i;\n // well, 333.444.555.666 matches, but it sure ain't no IPv4 - do we care?\n URI.ip4_expression = /^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/;\n // credits to Rich Brown\n // source: http://forums.intermapper.com/viewtopic.php?p=1096#1096\n // specification: http://www.ietf.org/rfc/rfc4291.txt\n URI.ip6_expression = /^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$/;\n // expression used is \"gruber revised\" (@gruber v2) determined to be the\n // best solution in a regex-golf we did a couple of ages ago at\n // * http://mathiasbynens.be/demo/url-regex\n // * http://rodneyrehm.de/t/url-regex.html\n URI.find_uri_expression = /\\b((?:[a-z][\\w-]+:(?:\\/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}\\/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:'\".,<>?«»“”‘’]))/ig;\n URI.findUri = {\n // valid \"scheme://\" or \"www.\"\n start: /\\b(?:([a-z][a-z0-9.+-]*:\\/\\/)|www\\.)/gi,\n // everything up to the next whitespace\n end: /[\\s\\r\\n]|$/,\n // trim trailing punctuation captured by end RegExp\n trim: /[`!()\\[\\]{};:'\".,<>?«»“”„‘’]+$/,\n // balanced parens inclusion (), [], {}, <>\n parens: /(\\([^\\)]*\\)|\\[[^\\]]*\\]|\\{[^}]*\\}|<[^>]*>)/g,\n };\n URI.leading_whitespace_expression = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/\n // https://infra.spec.whatwg.org/#ascii-tab-or-newline\n URI.ascii_tab_whitespace = /[\\u0009\\u000A\\u000D]+/g\n // http://www.iana.org/assignments/uri-schemes.html\n // http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers#Well-known_ports\n URI.defaultPorts = {\n http: '80',\n https: '443',\n ftp: '21',\n gopher: '70',\n ws: '80',\n wss: '443'\n };\n // list of protocols which always require a hostname\n URI.hostProtocols = [\n 'http',\n 'https'\n ];\n\n // allowed hostname characters according to RFC 3986\n // ALPHA DIGIT \"-\" \".\" \"_\" \"~\" \"!\" \"$\" \"&\" \"'\" \"(\" \")\" \"*\" \"+\" \",\" \";\" \"=\" %encoded\n // I've never seen a (non-IDN) hostname other than: ALPHA DIGIT . - _\n URI.invalid_hostname_characters = /[^a-zA-Z0-9\\.\\-:_]/;\n // map DOM Elements to their URI attribute\n URI.domAttributes = {\n 'a': 'href',\n 'blockquote': 'cite',\n 'link': 'href',\n 'base': 'href',\n 'script': 'src',\n 'form': 'action',\n 'img': 'src',\n 'area': 'href',\n 'iframe': 'src',\n 'embed': 'src',\n 'source': 'src',\n 'track': 'src',\n 'input': 'src', // but only if type=\"image\"\n 'audio': 'src',\n 'video': 'src'\n };\n URI.getDomAttribute = function(node) {\n if (!node || !node.nodeName) {\n return undefined;\n }\n\n var nodeName = node.nodeName.toLowerCase();\n // should only expose src for type=\"image\"\n if (nodeName === 'input' && node.type !== 'image') {\n return undefined;\n }\n\n return URI.domAttributes[nodeName];\n };\n\n function escapeForDumbFirefox36(value) {\n // https://github.com/medialize/URI.js/issues/91\n return escape(value);\n }\n\n // encoding / decoding according to RFC3986\n function strictEncodeURIComponent(string) {\n // see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURIComponent\n return encodeURIComponent(string)\n .replace(/[!'()*]/g, escapeForDumbFirefox36)\n .replace(/\\*/g, '%2A');\n }\n URI.encode = strictEncodeURIComponent;\n URI.decode = decodeURIComponent;\n URI.iso8859 = function() {\n URI.encode = escape;\n URI.decode = unescape;\n };\n URI.unicode = function() {\n URI.encode = strictEncodeURIComponent;\n URI.decode = decodeURIComponent;\n };\n URI.characters = {\n pathname: {\n encode: {\n // RFC3986 2.1: For consistency, URI producers and normalizers should\n // use uppercase hexadecimal digits for all percent-encodings.\n expression: /%(24|26|2B|2C|3B|3D|3A|40)/ig,\n map: {\n // -._~!'()*\n '%24': '$',\n '%26': '&',\n '%2B': '+',\n '%2C': ',',\n '%3B': ';',\n '%3D': '=',\n '%3A': ':',\n '%40': '@'\n }\n },\n decode: {\n expression: /[\\/\\?#]/g,\n map: {\n '/': '%2F',\n '?': '%3F',\n '#': '%23'\n }\n }\n },\n reserved: {\n encode: {\n // RFC3986 2.1: For consistency, URI producers and normalizers should\n // use uppercase hexadecimal digits for all percent-encodings.\n expression: /%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/ig,\n map: {\n // gen-delims\n '%3A': ':',\n '%2F': '/',\n '%3F': '?',\n '%23': '#',\n '%5B': '[',\n '%5D': ']',\n '%40': '@',\n // sub-delims\n '%21': '!',\n '%24': '$',\n '%26': '&',\n '%27': '\\'',\n '%28': '(',\n '%29': ')',\n '%2A': '*',\n '%2B': '+',\n '%2C': ',',\n '%3B': ';',\n '%3D': '='\n }\n }\n },\n urnpath: {\n // The characters under `encode` are the characters called out by RFC 2141 as being acceptable\n // for usage in a URN. RFC2141 also calls out \"-\", \".\", and \"_\" as acceptable characters, but\n // these aren't encoded by encodeURIComponent, so we don't have to call them out here. Also\n // note that the colon character is not featured in the encoding map; this is because URI.js\n // gives the colons in URNs semantic meaning as the delimiters of path segements, and so it\n // should not appear unencoded in a segment itself.\n // See also the note above about RFC3986 and capitalalized hex digits.\n encode: {\n expression: /%(21|24|27|28|29|2A|2B|2C|3B|3D|40)/ig,\n map: {\n '%21': '!',\n '%24': '$',\n '%27': '\\'',\n '%28': '(',\n '%29': ')',\n '%2A': '*',\n '%2B': '+',\n '%2C': ',',\n '%3B': ';',\n '%3D': '=',\n '%40': '@'\n }\n },\n // These characters are the characters called out by RFC2141 as \"reserved\" characters that\n // should never appear in a URN, plus the colon character (see note above).\n decode: {\n expression: /[\\/\\?#:]/g,\n map: {\n '/': '%2F',\n '?': '%3F',\n '#': '%23',\n ':': '%3A'\n }\n }\n }\n };\n URI.encodeQuery = function(string, escapeQuerySpace) {\n var escaped = URI.encode(string + '');\n if (escapeQuerySpace === undefined) {\n escapeQuerySpace = URI.escapeQuerySpace;\n }\n\n return escapeQuerySpace ? escaped.replace(/%20/g, '+') : escaped;\n };\n URI.decodeQuery = function(string, escapeQuerySpace) {\n string += '';\n if (escapeQuerySpace === undefined) {\n escapeQuerySpace = URI.escapeQuerySpace;\n }\n\n try {\n return URI.decode(escapeQuerySpace ? string.replace(/\\+/g, '%20') : string);\n } catch(e) {\n // we're not going to mess with weird encodings,\n // give up and return the undecoded original string\n // see https://github.com/medialize/URI.js/issues/87\n // see https://github.com/medialize/URI.js/issues/92\n return string;\n }\n };\n // generate encode/decode path functions\n var _parts = {'encode':'encode', 'decode':'decode'};\n var _part;\n var generateAccessor = function(_group, _part) {\n return function(string) {\n try {\n return URI[_part](string + '').replace(URI.characters[_group][_part].expression, function(c) {\n return URI.characters[_group][_part].map[c];\n });\n } catch (e) {\n // we're not going to mess with weird encodings,\n // give up and return the undecoded original string\n // see https://github.com/medialize/URI.js/issues/87\n // see https://github.com/medialize/URI.js/issues/92\n return string;\n }\n };\n };\n\n for (_part in _parts) {\n URI[_part + 'PathSegment'] = generateAccessor('pathname', _parts[_part]);\n URI[_part + 'UrnPathSegment'] = generateAccessor('urnpath', _parts[_part]);\n }\n\n var generateSegmentedPathFunction = function(_sep, _codingFuncName, _innerCodingFuncName) {\n return function(string) {\n // Why pass in names of functions, rather than the function objects themselves? The\n // definitions of some functions (but in particular, URI.decode) will occasionally change due\n // to URI.js having ISO8859 and Unicode modes. Passing in the name and getting it will ensure\n // that the functions we use here are \"fresh\".\n var actualCodingFunc;\n if (!_innerCodingFuncName) {\n actualCodingFunc = URI[_codingFuncName];\n } else {\n actualCodingFunc = function(string) {\n return URI[_codingFuncName](URI[_innerCodingFuncName](string));\n };\n }\n\n var segments = (string + '').split(_sep);\n\n for (var i = 0, length = segments.length; i < length; i++) {\n segments[i] = actualCodingFunc(segments[i]);\n }\n\n return segments.join(_sep);\n };\n };\n\n // This takes place outside the above loop because we don't want, e.g., encodeUrnPath functions.\n URI.decodePath = generateSegmentedPathFunction('/', 'decodePathSegment');\n URI.decodeUrnPath = generateSegmentedPathFunction(':', 'decodeUrnPathSegment');\n URI.recodePath = generateSegmentedPathFunction('/', 'encodePathSegment', 'decode');\n URI.recodeUrnPath = generateSegmentedPathFunction(':', 'encodeUrnPathSegment', 'decode');\n\n URI.encodeReserved = generateAccessor('reserved', 'encode');\n\n URI.parse = function(string, parts) {\n var pos;\n if (!parts) {\n parts = {\n preventInvalidHostname: URI.preventInvalidHostname\n };\n }\n\n string = string.replace(URI.leading_whitespace_expression, '')\n // https://infra.spec.whatwg.org/#ascii-tab-or-newline\n string = string.replace(URI.ascii_tab_whitespace, '')\n\n // [protocol\"://\"[username[\":\"password]\"@\"]hostname[\":\"port]\"/\"?][path][\"?\"querystring][\"#\"fragment]\n\n // extract fragment\n pos = string.indexOf('#');\n if (pos > -1) {\n // escaping?\n parts.fragment = string.substring(pos + 1) || null;\n string = string.substring(0, pos);\n }\n\n // extract query\n pos = string.indexOf('?');\n if (pos > -1) {\n // escaping?\n parts.query = string.substring(pos + 1) || null;\n string = string.substring(0, pos);\n }\n\n // slashes and backslashes have lost all meaning for the web protocols (https, http, wss, ws)\n string = string.replace(/^(https?|ftp|wss?)?:+[/\\\\]*/i, '$1://');\n // slashes and backslashes have lost all meaning for scheme relative URLs\n string = string.replace(/^[/\\\\]{2,}/i, '//');\n\n // extract protocol\n if (string.substring(0, 2) === '//') {\n // relative-scheme\n parts.protocol = null;\n string = string.substring(2);\n // extract \"user:pass@host:port\"\n string = URI.parseAuthority(string, parts);\n } else {\n pos = string.indexOf(':');\n if (pos > -1) {\n parts.protocol = string.substring(0, pos) || null;\n if (parts.protocol && !parts.protocol.match(URI.protocol_expression)) {\n // : may be within the path\n parts.protocol = undefined;\n } else if (string.substring(pos + 1, pos + 3).replace(/\\\\/g, '/') === '//') {\n string = string.substring(pos + 3);\n\n // extract \"user:pass@host:port\"\n string = URI.parseAuthority(string, parts);\n } else {\n string = string.substring(pos + 1);\n parts.urn = true;\n }\n }\n }\n\n // what's left must be the path\n parts.path = string;\n\n // and we're done\n return parts;\n };\n URI.parseHost = function(string, parts) {\n if (!string) {\n string = '';\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://github.com/joyent/node/blob/386fd24f49b0e9d1a8a076592a404168faeecc34/lib/url.js#L115-L124\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n // https://github.com/medialize/URI.js/pull/233\n string = string.replace(/\\\\/g, '/');\n\n // extract host:port\n var pos = string.indexOf('/');\n var bracketPos;\n var t;\n\n if (pos === -1) {\n pos = string.length;\n }\n\n if (string.charAt(0) === '[') {\n // IPv6 host - http://tools.ietf.org/html/draft-ietf-6man-text-addr-representation-04#section-6\n // I claim most client software breaks on IPv6 anyways. To simplify things, URI only accepts\n // IPv6+port in the format [2001:db8::1]:80 (for the time being)\n bracketPos = string.indexOf(']');\n parts.hostname = string.substring(1, bracketPos) || null;\n parts.port = string.substring(bracketPos + 2, pos) || null;\n if (parts.port === '/') {\n parts.port = null;\n }\n } else {\n var firstColon = string.indexOf(':');\n var firstSlash = string.indexOf('/');\n var nextColon = string.indexOf(':', firstColon + 1);\n if (nextColon !== -1 && (firstSlash === -1 || nextColon < firstSlash)) {\n // IPv6 host contains multiple colons - but no port\n // this notation is actually not allowed by RFC 3986, but we're a liberal parser\n parts.hostname = string.substring(0, pos) || null;\n parts.port = null;\n } else {\n t = string.substring(0, pos).split(':');\n parts.hostname = t[0] || null;\n parts.port = t[1] || null;\n }\n }\n\n if (parts.hostname && string.substring(pos).charAt(0) !== '/') {\n pos++;\n string = '/' + string;\n }\n\n if (parts.preventInvalidHostname) {\n URI.ensureValidHostname(parts.hostname, parts.protocol);\n }\n\n if (parts.port) {\n URI.ensureValidPort(parts.port);\n }\n\n return string.substring(pos) || '/';\n };\n URI.parseAuthority = function(string, parts) {\n string = URI.parseUserinfo(string, parts);\n return URI.parseHost(string, parts);\n };\n URI.parseUserinfo = function(string, parts) {\n // extract username:password\n var _string = string\n var firstBackSlash = string.indexOf('\\\\');\n if (firstBackSlash !== -1) {\n string = string.replace(/\\\\/g, '/')\n }\n var firstSlash = string.indexOf('/');\n var pos = string.lastIndexOf('@', firstSlash > -1 ? firstSlash : string.length - 1);\n var t;\n\n // authority@ must come before /path or \\path\n if (pos > -1 && (firstSlash === -1 || pos < firstSlash)) {\n t = string.substring(0, pos).split(':');\n parts.username = t[0] ? URI.decode(t[0]) : null;\n t.shift();\n parts.password = t[0] ? URI.decode(t.join(':')) : null;\n string = _string.substring(pos + 1);\n } else {\n parts.username = null;\n parts.password = null;\n }\n\n return string;\n };\n URI.parseQuery = function(string, escapeQuerySpace) {\n if (!string) {\n return {};\n }\n\n // throw out the funky business - \"?\"[name\"=\"value\"&\"]+\n string = string.replace(/&+/g, '&').replace(/^\\?*&*|&+$/g, '');\n\n if (!string) {\n return {};\n }\n\n var items = {};\n var splits = string.split('&');\n var length = splits.length;\n var v, name, value;\n\n for (var i = 0; i < length; i++) {\n v = splits[i].split('=');\n name = URI.decodeQuery(v.shift(), escapeQuerySpace);\n // no \"=\" is null according to http://dvcs.w3.org/hg/url/raw-file/tip/Overview.html#collect-url-parameters\n value = v.length ? URI.decodeQuery(v.join('='), escapeQuerySpace) : null;\n\n if (name === '__proto__') {\n // ignore attempt at exploiting JavaScript internals\n continue;\n } else if (hasOwn.call(items, name)) {\n if (typeof items[name] === 'string' || items[name] === null) {\n items[name] = [items[name]];\n }\n\n items[name].push(value);\n } else {\n items[name] = value;\n }\n }\n\n return items;\n };\n\n URI.build = function(parts) {\n var t = '';\n var requireAbsolutePath = false\n\n if (parts.protocol) {\n t += parts.protocol + ':';\n }\n\n if (!parts.urn && (t || parts.hostname)) {\n t += '//';\n requireAbsolutePath = true\n }\n\n t += (URI.buildAuthority(parts) || '');\n\n if (typeof parts.path === 'string') {\n if (parts.path.charAt(0) !== '/' && requireAbsolutePath) {\n t += '/';\n }\n\n t += parts.path;\n }\n\n if (typeof parts.query === 'string' && parts.query) {\n t += '?' + parts.query;\n }\n\n if (typeof parts.fragment === 'string' && parts.fragment) {\n t += '#' + parts.fragment;\n }\n return t;\n };\n URI.buildHost = function(parts) {\n var t = '';\n\n if (!parts.hostname) {\n return '';\n } else if (URI.ip6_expression.test(parts.hostname)) {\n t += '[' + parts.hostname + ']';\n } else {\n t += parts.hostname;\n }\n\n if (parts.port) {\n t += ':' + parts.port;\n }\n\n return t;\n };\n URI.buildAuthority = function(parts) {\n return URI.buildUserinfo(parts) + URI.buildHost(parts);\n };\n URI.buildUserinfo = function(parts) {\n var t = '';\n\n if (parts.username) {\n t += URI.encode(parts.username);\n }\n\n if (parts.password) {\n t += ':' + URI.encode(parts.password);\n }\n\n if (t) {\n t += '@';\n }\n\n return t;\n };\n URI.buildQuery = function(data, duplicateQueryParameters, escapeQuerySpace) {\n // according to http://tools.ietf.org/html/rfc3986 or http://labs.apache.org/webarch/uri/rfc/rfc3986.html\n // being »-._~!$&'()*+,;=:@/?« %HEX and alnum are allowed\n // the RFC explicitly states ?/foo being a valid use case, no mention of parameter syntax!\n // URI.js treats the query string as being application/x-www-form-urlencoded\n // see http://www.w3.org/TR/REC-html40/interact/forms.html#form-content-type\n\n var t = '';\n var unique, key, i, length;\n for (key in data) {\n if (key === '__proto__') {\n // ignore attempt at exploiting JavaScript internals\n continue;\n } else if (hasOwn.call(data, key)) {\n if (isArray(data[key])) {\n unique = {};\n for (i = 0, length = data[key].length; i < length; i++) {\n if (data[key][i] !== undefined && unique[data[key][i] + ''] === undefined) {\n t += '&' + URI.buildQueryParameter(key, data[key][i], escapeQuerySpace);\n if (duplicateQueryParameters !== true) {\n unique[data[key][i] + ''] = true;\n }\n }\n }\n } else if (data[key] !== undefined) {\n t += '&' + URI.buildQueryParameter(key, data[key], escapeQuerySpace);\n }\n }\n }\n\n return t.substring(1);\n };\n URI.buildQueryParameter = function(name, value, escapeQuerySpace) {\n // http://www.w3.org/TR/REC-html40/interact/forms.html#form-content-type -- application/x-www-form-urlencoded\n // don't append \"=\" for null values, according to http://dvcs.w3.org/hg/url/raw-file/tip/Overview.html#url-parameter-serialization\n return URI.encodeQuery(name, escapeQuerySpace) + (value !== null ? '=' + URI.encodeQuery(value, escapeQuerySpace) : '');\n };\n\n URI.addQuery = function(data, name, value) {\n if (typeof name === 'object') {\n for (var key in name) {\n if (hasOwn.call(name, key)) {\n URI.addQuery(data, key, name[key]);\n }\n }\n } else if (typeof name === 'string') {\n if (data[name] === undefined) {\n data[name] = value;\n return;\n } else if (typeof data[name] === 'string') {\n data[name] = [data[name]];\n }\n\n if (!isArray(value)) {\n value = [value];\n }\n\n data[name] = (data[name] || []).concat(value);\n } else {\n throw new TypeError('URI.addQuery() accepts an object, string as the name parameter');\n }\n };\n\n URI.setQuery = function(data, name, value) {\n if (typeof name === 'object') {\n for (var key in name) {\n if (hasOwn.call(name, key)) {\n URI.setQuery(data, key, name[key]);\n }\n }\n } else if (typeof name === 'string') {\n data[name] = value === undefined ? null : value;\n } else {\n throw new TypeError('URI.setQuery() accepts an object, string as the name parameter');\n }\n };\n\n URI.removeQuery = function(data, name, value) {\n var i, length, key;\n\n if (isArray(name)) {\n for (i = 0, length = name.length; i < length; i++) {\n data[name[i]] = undefined;\n }\n } else if (getType(name) === 'RegExp') {\n for (key in data) {\n if (name.test(key)) {\n data[key] = undefined;\n }\n }\n } else if (typeof name === 'object') {\n for (key in name) {\n if (hasOwn.call(name, key)) {\n URI.removeQuery(data, key, name[key]);\n }\n }\n } else if (typeof name === 'string') {\n if (value !== undefined) {\n if (getType(value) === 'RegExp') {\n if (!isArray(data[name]) && value.test(data[name])) {\n data[name] = undefined;\n } else {\n data[name] = filterArrayValues(data[name], value);\n }\n } else if (data[name] === String(value) && (!isArray(value) || value.length === 1)) {\n data[name] = undefined;\n } else if (isArray(data[name])) {\n data[name] = filterArrayValues(data[name], value);\n }\n } else {\n data[name] = undefined;\n }\n } else {\n throw new TypeError('URI.removeQuery() accepts an object, string, RegExp as the first parameter');\n }\n };\n URI.hasQuery = function(data, name, value, withinArray) {\n switch (getType(name)) {\n case 'String':\n // Nothing to do here\n break;\n\n case 'RegExp':\n for (var key in data) {\n if (hasOwn.call(data, key)) {\n if (name.test(key) && (value === undefined || URI.hasQuery(data, key, value))) {\n return true;\n }\n }\n }\n\n return false;\n\n case 'Object':\n for (var _key in name) {\n if (hasOwn.call(name, _key)) {\n if (!URI.hasQuery(data, _key, name[_key])) {\n return false;\n }\n }\n }\n\n return true;\n\n default:\n throw new TypeError('URI.hasQuery() accepts a string, regular expression or object as the name parameter');\n }\n\n switch (getType(value)) {\n case 'Undefined':\n // true if exists (but may be empty)\n return name in data; // data[name] !== undefined;\n\n case 'Boolean':\n // true if exists and non-empty\n var _booly = Boolean(isArray(data[name]) ? data[name].length : data[name]);\n return value === _booly;\n\n case 'Function':\n // allow complex comparison\n return !!value(data[name], name, data);\n\n case 'Array':\n if (!isArray(data[name])) {\n return false;\n }\n\n var op = withinArray ? arrayContains : arraysEqual;\n return op(data[name], value);\n\n case 'RegExp':\n if (!isArray(data[name])) {\n return Boolean(data[name] && data[name].match(value));\n }\n\n if (!withinArray) {\n return false;\n }\n\n return arrayContains(data[name], value);\n\n case 'Number':\n value = String(value);\n /* falls through */\n case 'String':\n if (!isArray(data[name])) {\n return data[name] === value;\n }\n\n if (!withinArray) {\n return false;\n }\n\n return arrayContains(data[name], value);\n\n default:\n throw new TypeError('URI.hasQuery() accepts undefined, boolean, string, number, RegExp, Function as the value parameter');\n }\n };\n\n\n URI.joinPaths = function() {\n var input = [];\n var segments = [];\n var nonEmptySegments = 0;\n\n for (var i = 0; i < arguments.length; i++) {\n var url = new URI(arguments[i]);\n input.push(url);\n var _segments = url.segment();\n for (var s = 0; s < _segments.length; s++) {\n if (typeof _segments[s] === 'string') {\n segments.push(_segments[s]);\n }\n\n if (_segments[s]) {\n nonEmptySegments++;\n }\n }\n }\n\n if (!segments.length || !nonEmptySegments) {\n return new URI('');\n }\n\n var uri = new URI('').segment(segments);\n\n if (input[0].path() === '' || input[0].path().slice(0, 1) === '/') {\n uri.path('/' + uri.path());\n }\n\n return uri.normalize();\n };\n\n URI.commonPath = function(one, two) {\n var length = Math.min(one.length, two.length);\n var pos;\n\n // find first non-matching character\n for (pos = 0; pos < length; pos++) {\n if (one.charAt(pos) !== two.charAt(pos)) {\n pos--;\n break;\n }\n }\n\n if (pos < 1) {\n return one.charAt(0) === two.charAt(0) && one.charAt(0) === '/' ? '/' : '';\n }\n\n // revert to last /\n if (one.charAt(pos) !== '/' || two.charAt(pos) !== '/') {\n pos = one.substring(0, pos).lastIndexOf('/');\n }\n\n return one.substring(0, pos + 1);\n };\n\n URI.withinString = function(string, callback, options) {\n options || (options = {});\n var _start = options.start || URI.findUri.start;\n var _end = options.end || URI.findUri.end;\n var _trim = options.trim || URI.findUri.trim;\n var _parens = options.parens || URI.findUri.parens;\n var _attributeOpen = /[a-z0-9-]=[\"']?$/i;\n\n _start.lastIndex = 0;\n while (true) {\n var match = _start.exec(string);\n if (!match) {\n break;\n }\n\n var start = match.index;\n if (options.ignoreHtml) {\n // attribut(e=[\"']?$)\n var attributeOpen = string.slice(Math.max(start - 3, 0), start);\n if (attributeOpen && _attributeOpen.test(attributeOpen)) {\n continue;\n }\n }\n\n var end = start + string.slice(start).search(_end);\n var slice = string.slice(start, end);\n // make sure we include well balanced parens\n var parensEnd = -1;\n while (true) {\n var parensMatch = _parens.exec(slice);\n if (!parensMatch) {\n break;\n }\n\n var parensMatchEnd = parensMatch.index + parensMatch[0].length;\n parensEnd = Math.max(parensEnd, parensMatchEnd);\n }\n\n if (parensEnd > -1) {\n slice = slice.slice(0, parensEnd) + slice.slice(parensEnd).replace(_trim, '');\n } else {\n slice = slice.replace(_trim, '');\n }\n\n if (slice.length <= match[0].length) {\n // the extract only contains the starting marker of a URI,\n // e.g. \"www\" or \"http://\"\n continue;\n }\n\n if (options.ignore && options.ignore.test(slice)) {\n continue;\n }\n\n end = start + slice.length;\n var result = callback(slice, start, end, string);\n if (result === undefined) {\n _start.lastIndex = end;\n continue;\n }\n\n result = String(result);\n string = string.slice(0, start) + result + string.slice(end);\n _start.lastIndex = start + result.length;\n }\n\n _start.lastIndex = 0;\n return string;\n };\n\n URI.ensureValidHostname = function(v, protocol) {\n // Theoretically URIs allow percent-encoding in Hostnames (according to RFC 3986)\n // they are not part of DNS and therefore ignored by URI.js\n\n var hasHostname = !!v; // not null and not an empty string\n var hasProtocol = !!protocol;\n var rejectEmptyHostname = false;\n\n if (hasProtocol) {\n rejectEmptyHostname = arrayContains(URI.hostProtocols, protocol);\n }\n\n if (rejectEmptyHostname && !hasHostname) {\n throw new TypeError('Hostname cannot be empty, if protocol is ' + protocol);\n } else if (v && v.match(URI.invalid_hostname_characters)) {\n // test punycode\n if (!punycode) {\n throw new TypeError('Hostname \"' + v + '\" contains characters other than [A-Z0-9.-:_] and Punycode.js is not available');\n }\n if (punycode.toASCII(v).match(URI.invalid_hostname_characters)) {\n throw new TypeError('Hostname \"' + v + '\" contains characters other than [A-Z0-9.-:_]');\n }\n }\n };\n\n URI.ensureValidPort = function (v) {\n if (!v) {\n return;\n }\n\n var port = Number(v);\n if (isInteger(port) && (port > 0) && (port < 65536)) {\n return;\n }\n\n throw new TypeError('Port \"' + v + '\" is not a valid port');\n };\n\n // noConflict\n URI.noConflict = function(removeAll) {\n if (removeAll) {\n var unconflicted = {\n URI: this.noConflict()\n };\n\n if (root.URITemplate && typeof root.URITemplate.noConflict === 'function') {\n unconflicted.URITemplate = root.URITemplate.noConflict();\n }\n\n if (root.IPv6 && typeof root.IPv6.noConflict === 'function') {\n unconflicted.IPv6 = root.IPv6.noConflict();\n }\n\n if (root.SecondLevelDomains && typeof root.SecondLevelDomains.noConflict === 'function') {\n unconflicted.SecondLevelDomains = root.SecondLevelDomains.noConflict();\n }\n\n return unconflicted;\n } else if (root.URI === this) {\n root.URI = _URI;\n }\n\n return this;\n };\n\n p.build = function(deferBuild) {\n if (deferBuild === true) {\n this._deferred_build = true;\n } else if (deferBuild === undefined || this._deferred_build) {\n this._string = URI.build(this._parts);\n this._deferred_build = false;\n }\n\n return this;\n };\n\n p.clone = function() {\n return new URI(this);\n };\n\n p.valueOf = p.toString = function() {\n return this.build(false)._string;\n };\n\n\n function generateSimpleAccessor(_part){\n return function(v, build) {\n if (v === undefined) {\n return this._parts[_part] || '';\n } else {\n this._parts[_part] = v || null;\n this.build(!build);\n return this;\n }\n };\n }\n\n function generatePrefixAccessor(_part, _key){\n return function(v, build) {\n if (v === undefined) {\n return this._parts[_part] || '';\n } else {\n if (v !== null) {\n v = v + '';\n if (v.charAt(0) === _key) {\n v = v.substring(1);\n }\n }\n\n this._parts[_part] = v;\n this.build(!build);\n return this;\n }\n };\n }\n\n p.protocol = generateSimpleAccessor('protocol');\n p.username = generateSimpleAccessor('username');\n p.password = generateSimpleAccessor('password');\n p.hostname = generateSimpleAccessor('hostname');\n p.port = generateSimpleAccessor('port');\n p.query = generatePrefixAccessor('query', '?');\n p.fragment = generatePrefixAccessor('fragment', '#');\n\n p.search = function(v, build) {\n var t = this.query(v, build);\n return typeof t === 'string' && t.length ? ('?' + t) : t;\n };\n p.hash = function(v, build) {\n var t = this.fragment(v, build);\n return typeof t === 'string' && t.length ? ('#' + t) : t;\n };\n\n p.pathname = function(v, build) {\n if (v === undefined || v === true) {\n var res = this._parts.path || (this._parts.hostname ? '/' : '');\n return v ? (this._parts.urn ? URI.decodeUrnPath : URI.decodePath)(res) : res;\n } else {\n if (this._parts.urn) {\n this._parts.path = v ? URI.recodeUrnPath(v) : '';\n } else {\n this._parts.path = v ? URI.recodePath(v) : '/';\n }\n this.build(!build);\n return this;\n }\n };\n p.path = p.pathname;\n p.href = function(href, build) {\n var key;\n\n if (href === undefined) {\n return this.toString();\n }\n\n this._string = '';\n this._parts = URI._parts();\n\n var _URI = href instanceof URI;\n var _object = typeof href === 'object' && (href.hostname || href.path || href.pathname);\n if (href.nodeName) {\n var attribute = URI.getDomAttribute(href);\n href = href[attribute] || '';\n _object = false;\n }\n\n // window.location is reported to be an object, but it's not the sort\n // of object we're looking for:\n // * location.protocol ends with a colon\n // * location.query != object.search\n // * location.hash != object.fragment\n // simply serializing the unknown object should do the trick\n // (for location, not for everything...)\n if (!_URI && _object && href.pathname !== undefined) {\n href = href.toString();\n }\n\n if (typeof href === 'string' || href instanceof String) {\n this._parts = URI.parse(String(href), this._parts);\n } else if (_URI || _object) {\n var src = _URI ? href._parts : href;\n for (key in src) {\n if (key === 'query') { continue; }\n if (hasOwn.call(this._parts, key)) {\n this._parts[key] = src[key];\n }\n }\n if (src.query) {\n this.query(src.query, false);\n }\n } else {\n throw new TypeError('invalid input');\n }\n\n this.build(!build);\n return this;\n };\n\n // identification accessors\n p.is = function(what) {\n var ip = false;\n var ip4 = false;\n var ip6 = false;\n var name = false;\n var sld = false;\n var idn = false;\n var punycode = false;\n var relative = !this._parts.urn;\n\n if (this._parts.hostname) {\n relative = false;\n ip4 = URI.ip4_expression.test(this._parts.hostname);\n ip6 = URI.ip6_expression.test(this._parts.hostname);\n ip = ip4 || ip6;\n name = !ip;\n sld = name && SLD && SLD.has(this._parts.hostname);\n idn = name && URI.idn_expression.test(this._parts.hostname);\n punycode = name && URI.punycode_expression.test(this._parts.hostname);\n }\n\n switch (what.toLowerCase()) {\n case 'relative':\n return relative;\n\n case 'absolute':\n return !relative;\n\n // hostname identification\n case 'domain':\n case 'name':\n return name;\n\n case 'sld':\n return sld;\n\n case 'ip':\n return ip;\n\n case 'ip4':\n case 'ipv4':\n case 'inet4':\n return ip4;\n\n case 'ip6':\n case 'ipv6':\n case 'inet6':\n return ip6;\n\n case 'idn':\n return idn;\n\n case 'url':\n return !this._parts.urn;\n\n case 'urn':\n return !!this._parts.urn;\n\n case 'punycode':\n return punycode;\n }\n\n return null;\n };\n\n // component specific input validation\n var _protocol = p.protocol;\n var _port = p.port;\n var _hostname = p.hostname;\n\n p.protocol = function(v, build) {\n if (v) {\n // accept trailing ://\n v = v.replace(/:(\\/\\/)?$/, '');\n\n if (!v.match(URI.protocol_expression)) {\n throw new TypeError('Protocol \"' + v + '\" contains characters other than [A-Z0-9.+-] or doesn\\'t start with [A-Z]');\n }\n }\n\n return _protocol.call(this, v, build);\n };\n p.scheme = p.protocol;\n p.port = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v !== undefined) {\n if (v === 0) {\n v = null;\n }\n\n if (v) {\n v += '';\n if (v.charAt(0) === ':') {\n v = v.substring(1);\n }\n\n URI.ensureValidPort(v);\n }\n }\n return _port.call(this, v, build);\n };\n p.hostname = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v !== undefined) {\n var x = { preventInvalidHostname: this._parts.preventInvalidHostname };\n var res = URI.parseHost(v, x);\n if (res !== '/') {\n throw new TypeError('Hostname \"' + v + '\" contains characters other than [A-Z0-9.-]');\n }\n\n v = x.hostname;\n if (this._parts.preventInvalidHostname) {\n URI.ensureValidHostname(v, this._parts.protocol);\n }\n }\n\n return _hostname.call(this, v, build);\n };\n\n // compound accessors\n p.origin = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v === undefined) {\n var protocol = this.protocol();\n var authority = this.authority();\n if (!authority) {\n return '';\n }\n\n return (protocol ? protocol + '://' : '') + this.authority();\n } else {\n var origin = URI(v);\n this\n .protocol(origin.protocol())\n .authority(origin.authority())\n .build(!build);\n return this;\n }\n };\n p.host = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v === undefined) {\n return this._parts.hostname ? URI.buildHost(this._parts) : '';\n } else {\n var res = URI.parseHost(v, this._parts);\n if (res !== '/') {\n throw new TypeError('Hostname \"' + v + '\" contains characters other than [A-Z0-9.-]');\n }\n\n this.build(!build);\n return this;\n }\n };\n p.authority = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v === undefined) {\n return this._parts.hostname ? URI.buildAuthority(this._parts) : '';\n } else {\n var res = URI.parseAuthority(v, this._parts);\n if (res !== '/') {\n throw new TypeError('Hostname \"' + v + '\" contains characters other than [A-Z0-9.-]');\n }\n\n this.build(!build);\n return this;\n }\n };\n p.userinfo = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v === undefined) {\n var t = URI.buildUserinfo(this._parts);\n return t ? t.substring(0, t.length -1) : t;\n } else {\n if (v[v.length-1] !== '@') {\n v += '@';\n }\n\n URI.parseUserinfo(v, this._parts);\n this.build(!build);\n return this;\n }\n };\n p.resource = function(v, build) {\n var parts;\n\n if (v === undefined) {\n return this.path() + this.search() + this.hash();\n }\n\n parts = URI.parse(v);\n this._parts.path = parts.path;\n this._parts.query = parts.query;\n this._parts.fragment = parts.fragment;\n this.build(!build);\n return this;\n };\n\n // fraction accessors\n p.subdomain = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n // convenience, return \"www\" from \"www.example.org\"\n if (v === undefined) {\n if (!this._parts.hostname || this.is('IP')) {\n return '';\n }\n\n // grab domain and add another segment\n var end = this._parts.hostname.length - this.domain().length - 1;\n return this._parts.hostname.substring(0, end) || '';\n } else {\n var e = this._parts.hostname.length - this.domain().length;\n var sub = this._parts.hostname.substring(0, e);\n var replace = new RegExp('^' + escapeRegEx(sub));\n\n if (v && v.charAt(v.length - 1) !== '.') {\n v += '.';\n }\n\n if (v.indexOf(':') !== -1) {\n throw new TypeError('Domains cannot contain colons');\n }\n\n if (v) {\n URI.ensureValidHostname(v, this._parts.protocol);\n }\n\n this._parts.hostname = this._parts.hostname.replace(replace, v);\n this.build(!build);\n return this;\n }\n };\n p.domain = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (typeof v === 'boolean') {\n build = v;\n v = undefined;\n }\n\n // convenience, return \"example.org\" from \"www.example.org\"\n if (v === undefined) {\n if (!this._parts.hostname || this.is('IP')) {\n return '';\n }\n\n // if hostname consists of 1 or 2 segments, it must be the domain\n var t = this._parts.hostname.match(/\\./g);\n if (t && t.length < 2) {\n return this._parts.hostname;\n }\n\n // grab tld and add another segment\n var end = this._parts.hostname.length - this.tld(build).length - 1;\n end = this._parts.hostname.lastIndexOf('.', end -1) + 1;\n return this._parts.hostname.substring(end) || '';\n } else {\n if (!v) {\n throw new TypeError('cannot set domain empty');\n }\n\n if (v.indexOf(':') !== -1) {\n throw new TypeError('Domains cannot contain colons');\n }\n\n URI.ensureValidHostname(v, this._parts.protocol);\n\n if (!this._parts.hostname || this.is('IP')) {\n this._parts.hostname = v;\n } else {\n var replace = new RegExp(escapeRegEx(this.domain()) + '$');\n this._parts.hostname = this._parts.hostname.replace(replace, v);\n }\n\n this.build(!build);\n return this;\n }\n };\n p.tld = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (typeof v === 'boolean') {\n build = v;\n v = undefined;\n }\n\n // return \"org\" from \"www.example.org\"\n if (v === undefined) {\n if (!this._parts.hostname || this.is('IP')) {\n return '';\n }\n\n var pos = this._parts.hostname.lastIndexOf('.');\n var tld = this._parts.hostname.substring(pos + 1);\n\n if (build !== true && SLD && SLD.list[tld.toLowerCase()]) {\n return SLD.get(this._parts.hostname) || tld;\n }\n\n return tld;\n } else {\n var replace;\n\n if (!v) {\n throw new TypeError('cannot set TLD empty');\n } else if (v.match(/[^a-zA-Z0-9-]/)) {\n if (SLD && SLD.is(v)) {\n replace = new RegExp(escapeRegEx(this.tld()) + '$');\n this._parts.hostname = this._parts.hostname.replace(replace, v);\n } else {\n throw new TypeError('TLD \"' + v + '\" contains characters other than [A-Z0-9]');\n }\n } else if (!this._parts.hostname || this.is('IP')) {\n throw new ReferenceError('cannot set TLD on non-domain host');\n } else {\n replace = new RegExp(escapeRegEx(this.tld()) + '$');\n this._parts.hostname = this._parts.hostname.replace(replace, v);\n }\n\n this.build(!build);\n return this;\n }\n };\n p.directory = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v === undefined || v === true) {\n if (!this._parts.path && !this._parts.hostname) {\n return '';\n }\n\n if (this._parts.path === '/') {\n return '/';\n }\n\n var end = this._parts.path.length - this.filename().length - 1;\n var res = this._parts.path.substring(0, end) || (this._parts.hostname ? '/' : '');\n\n return v ? URI.decodePath(res) : res;\n\n } else {\n var e = this._parts.path.length - this.filename().length;\n var directory = this._parts.path.substring(0, e);\n var replace = new RegExp('^' + escapeRegEx(directory));\n\n // fully qualifier directories begin with a slash\n if (!this.is('relative')) {\n if (!v) {\n v = '/';\n }\n\n if (v.charAt(0) !== '/') {\n v = '/' + v;\n }\n }\n\n // directories always end with a slash\n if (v && v.charAt(v.length - 1) !== '/') {\n v += '/';\n }\n\n v = URI.recodePath(v);\n this._parts.path = this._parts.path.replace(replace, v);\n this.build(!build);\n return this;\n }\n };\n p.filename = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (typeof v !== 'string') {\n if (!this._parts.path || this._parts.path === '/') {\n return '';\n }\n\n var pos = this._parts.path.lastIndexOf('/');\n var res = this._parts.path.substring(pos+1);\n\n return v ? URI.decodePathSegment(res) : res;\n } else {\n var mutatedDirectory = false;\n\n if (v.charAt(0) === '/') {\n v = v.substring(1);\n }\n\n if (v.match(/\\.?\\//)) {\n mutatedDirectory = true;\n }\n\n var replace = new RegExp(escapeRegEx(this.filename()) + '$');\n v = URI.recodePath(v);\n this._parts.path = this._parts.path.replace(replace, v);\n\n if (mutatedDirectory) {\n this.normalizePath(build);\n } else {\n this.build(!build);\n }\n\n return this;\n }\n };\n p.suffix = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v === undefined || v === true) {\n if (!this._parts.path || this._parts.path === '/') {\n return '';\n }\n\n var filename = this.filename();\n var pos = filename.lastIndexOf('.');\n var s, res;\n\n if (pos === -1) {\n return '';\n }\n\n // suffix may only contain alnum characters (yup, I made this up.)\n s = filename.substring(pos+1);\n res = (/^[a-z0-9%]+$/i).test(s) ? s : '';\n return v ? URI.decodePathSegment(res) : res;\n } else {\n if (v.charAt(0) === '.') {\n v = v.substring(1);\n }\n\n var suffix = this.suffix();\n var replace;\n\n if (!suffix) {\n if (!v) {\n return this;\n }\n\n this._parts.path += '.' + URI.recodePath(v);\n } else if (!v) {\n replace = new RegExp(escapeRegEx('.' + suffix) + '$');\n } else {\n replace = new RegExp(escapeRegEx(suffix) + '$');\n }\n\n if (replace) {\n v = URI.recodePath(v);\n this._parts.path = this._parts.path.replace(replace, v);\n }\n\n this.build(!build);\n return this;\n }\n };\n p.segment = function(segment, v, build) {\n var separator = this._parts.urn ? ':' : '/';\n var path = this.path();\n var absolute = path.substring(0, 1) === '/';\n var segments = path.split(separator);\n\n if (segment !== undefined && typeof segment !== 'number') {\n build = v;\n v = segment;\n segment = undefined;\n }\n\n if (segment !== undefined && typeof segment !== 'number') {\n throw new Error('Bad segment \"' + segment + '\", must be 0-based integer');\n }\n\n if (absolute) {\n segments.shift();\n }\n\n if (segment < 0) {\n // allow negative indexes to address from the end\n segment = Math.max(segments.length + segment, 0);\n }\n\n if (v === undefined) {\n /*jshint laxbreak: true */\n return segment === undefined\n ? segments\n : segments[segment];\n /*jshint laxbreak: false */\n } else if (segment === null || segments[segment] === undefined) {\n if (isArray(v)) {\n segments = [];\n // collapse empty elements within array\n for (var i=0, l=v.length; i < l; i++) {\n if (!v[i].length && (!segments.length || !segments[segments.length -1].length)) {\n continue;\n }\n\n if (segments.length && !segments[segments.length -1].length) {\n segments.pop();\n }\n\n segments.push(trimSlashes(v[i]));\n }\n } else if (v || typeof v === 'string') {\n v = trimSlashes(v);\n if (segments[segments.length -1] === '') {\n // empty trailing elements have to be overwritten\n // to prevent results such as /foo//bar\n segments[segments.length -1] = v;\n } else {\n segments.push(v);\n }\n }\n } else {\n if (v) {\n segments[segment] = trimSlashes(v);\n } else {\n segments.splice(segment, 1);\n }\n }\n\n if (absolute) {\n segments.unshift('');\n }\n\n return this.path(segments.join(separator), build);\n };\n p.segmentCoded = function(segment, v, build) {\n var segments, i, l;\n\n if (typeof segment !== 'number') {\n build = v;\n v = segment;\n segment = undefined;\n }\n\n if (v === undefined) {\n segments = this.segment(segment, v, build);\n if (!isArray(segments)) {\n segments = segments !== undefined ? URI.decode(segments) : undefined;\n } else {\n for (i = 0, l = segments.length; i < l; i++) {\n segments[i] = URI.decode(segments[i]);\n }\n }\n\n return segments;\n }\n\n if (!isArray(v)) {\n v = (typeof v === 'string' || v instanceof String) ? URI.encode(v) : v;\n } else {\n for (i = 0, l = v.length; i < l; i++) {\n v[i] = URI.encode(v[i]);\n }\n }\n\n return this.segment(segment, v, build);\n };\n\n // mutating query string\n var q = p.query;\n p.query = function(v, build) {\n if (v === true) {\n return URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n } else if (typeof v === 'function') {\n var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n var result = v.call(this, data);\n this._parts.query = URI.buildQuery(result || data, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace);\n this.build(!build);\n return this;\n } else if (v !== undefined && typeof v !== 'string') {\n this._parts.query = URI.buildQuery(v, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace);\n this.build(!build);\n return this;\n } else {\n return q.call(this, v, build);\n }\n };\n p.setQuery = function(name, value, build) {\n var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n\n if (typeof name === 'string' || name instanceof String) {\n data[name] = value !== undefined ? value : null;\n } else if (typeof name === 'object') {\n for (var key in name) {\n if (hasOwn.call(name, key)) {\n data[key] = name[key];\n }\n }\n } else {\n throw new TypeError('URI.addQuery() accepts an object, string as the name parameter');\n }\n\n this._parts.query = URI.buildQuery(data, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace);\n if (typeof name !== 'string') {\n build = value;\n }\n\n this.build(!build);\n return this;\n };\n p.addQuery = function(name, value, build) {\n var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n URI.addQuery(data, name, value === undefined ? null : value);\n this._parts.query = URI.buildQuery(data, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace);\n if (typeof name !== 'string') {\n build = value;\n }\n\n this.build(!build);\n return this;\n };\n p.removeQuery = function(name, value, build) {\n var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n URI.removeQuery(data, name, value);\n this._parts.query = URI.buildQuery(data, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace);\n if (typeof name !== 'string') {\n build = value;\n }\n\n this.build(!build);\n return this;\n };\n p.hasQuery = function(name, value, withinArray) {\n var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n return URI.hasQuery(data, name, value, withinArray);\n };\n p.setSearch = p.setQuery;\n p.addSearch = p.addQuery;\n p.removeSearch = p.removeQuery;\n p.hasSearch = p.hasQuery;\n\n // sanitizing URLs\n p.normalize = function() {\n if (this._parts.urn) {\n return this\n .normalizeProtocol(false)\n .normalizePath(false)\n .normalizeQuery(false)\n .normalizeFragment(false)\n .build();\n }\n\n return this\n .normalizeProtocol(false)\n .normalizeHostname(false)\n .normalizePort(false)\n .normalizePath(false)\n .normalizeQuery(false)\n .normalizeFragment(false)\n .build();\n };\n p.normalizeProtocol = function(build) {\n if (typeof this._parts.protocol === 'string') {\n this._parts.protocol = this._parts.protocol.toLowerCase();\n this.build(!build);\n }\n\n return this;\n };\n p.normalizeHostname = function(build) {\n if (this._parts.hostname) {\n if (this.is('IDN') && punycode) {\n this._parts.hostname = punycode.toASCII(this._parts.hostname);\n } else if (this.is('IPv6') && IPv6) {\n this._parts.hostname = IPv6.best(this._parts.hostname);\n }\n\n this._parts.hostname = this._parts.hostname.toLowerCase();\n this.build(!build);\n }\n\n return this;\n };\n p.normalizePort = function(build) {\n // remove port of it's the protocol's default\n if (typeof this._parts.protocol === 'string' && this._parts.port === URI.defaultPorts[this._parts.protocol]) {\n this._parts.port = null;\n this.build(!build);\n }\n\n return this;\n };\n p.normalizePath = function(build) {\n var _path = this._parts.path;\n if (!_path) {\n return this;\n }\n\n if (this._parts.urn) {\n this._parts.path = URI.recodeUrnPath(this._parts.path);\n this.build(!build);\n return this;\n }\n\n if (this._parts.path === '/') {\n return this;\n }\n\n _path = URI.recodePath(_path);\n\n var _was_relative;\n var _leadingParents = '';\n var _parent, _pos;\n\n // handle relative paths\n if (_path.charAt(0) !== '/') {\n _was_relative = true;\n _path = '/' + _path;\n }\n\n // handle relative files (as opposed to directories)\n if (_path.slice(-3) === '/..' || _path.slice(-2) === '/.') {\n _path += '/';\n }\n\n // resolve simples\n _path = _path\n .replace(/(\\/(\\.\\/)+)|(\\/\\.$)/g, '/')\n .replace(/\\/{2,}/g, '/');\n\n // remember leading parents\n if (_was_relative) {\n _leadingParents = _path.substring(1).match(/^(\\.\\.\\/)+/) || '';\n if (_leadingParents) {\n _leadingParents = _leadingParents[0];\n }\n }\n\n // resolve parents\n while (true) {\n _parent = _path.search(/\\/\\.\\.(\\/|$)/);\n if (_parent === -1) {\n // no more ../ to resolve\n break;\n } else if (_parent === 0) {\n // top level cannot be relative, skip it\n _path = _path.substring(3);\n continue;\n }\n\n _pos = _path.substring(0, _parent).lastIndexOf('/');\n if (_pos === -1) {\n _pos = _parent;\n }\n _path = _path.substring(0, _pos) + _path.substring(_parent + 3);\n }\n\n // revert to relative\n if (_was_relative && this.is('relative')) {\n _path = _leadingParents + _path.substring(1);\n }\n\n this._parts.path = _path;\n this.build(!build);\n return this;\n };\n p.normalizePathname = p.normalizePath;\n p.normalizeQuery = function(build) {\n if (typeof this._parts.query === 'string') {\n if (!this._parts.query.length) {\n this._parts.query = null;\n } else {\n this.query(URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace));\n }\n\n this.build(!build);\n }\n\n return this;\n };\n p.normalizeFragment = function(build) {\n if (!this._parts.fragment) {\n this._parts.fragment = null;\n this.build(!build);\n }\n\n return this;\n };\n p.normalizeSearch = p.normalizeQuery;\n p.normalizeHash = p.normalizeFragment;\n\n p.iso8859 = function() {\n // expect unicode input, iso8859 output\n var e = URI.encode;\n var d = URI.decode;\n\n URI.encode = escape;\n URI.decode = decodeURIComponent;\n try {\n this.normalize();\n } finally {\n URI.encode = e;\n URI.decode = d;\n }\n return this;\n };\n\n p.unicode = function() {\n // expect iso8859 input, unicode output\n var e = URI.encode;\n var d = URI.decode;\n\n URI.encode = strictEncodeURIComponent;\n URI.decode = unescape;\n try {\n this.normalize();\n } finally {\n URI.encode = e;\n URI.decode = d;\n }\n return this;\n };\n\n p.readable = function() {\n var uri = this.clone();\n // removing username, password, because they shouldn't be displayed according to RFC 3986\n uri.username('').password('').normalize();\n var t = '';\n if (uri._parts.protocol) {\n t += uri._parts.protocol + '://';\n }\n\n if (uri._parts.hostname) {\n if (uri.is('punycode') && punycode) {\n t += punycode.toUnicode(uri._parts.hostname);\n if (uri._parts.port) {\n t += ':' + uri._parts.port;\n }\n } else {\n t += uri.host();\n }\n }\n\n if (uri._parts.hostname && uri._parts.path && uri._parts.path.charAt(0) !== '/') {\n t += '/';\n }\n\n t += uri.path(true);\n if (uri._parts.query) {\n var q = '';\n for (var i = 0, qp = uri._parts.query.split('&'), l = qp.length; i < l; i++) {\n var kv = (qp[i] || '').split('=');\n q += '&' + URI.decodeQuery(kv[0], this._parts.escapeQuerySpace)\n .replace(/&/g, '%26');\n\n if (kv[1] !== undefined) {\n q += '=' + URI.decodeQuery(kv[1], this._parts.escapeQuerySpace)\n .replace(/&/g, '%26');\n }\n }\n t += '?' + q.substring(1);\n }\n\n t += URI.decodeQuery(uri.hash(), true);\n return t;\n };\n\n // resolving relative and absolute URLs\n p.absoluteTo = function(base) {\n var resolved = this.clone();\n var properties = ['protocol', 'username', 'password', 'hostname', 'port'];\n var basedir, i, p;\n\n if (this._parts.urn) {\n throw new Error('URNs do not have any generally defined hierarchical components');\n }\n\n if (!(base instanceof URI)) {\n base = new URI(base);\n }\n\n if (resolved._parts.protocol) {\n // Directly returns even if this._parts.hostname is empty.\n return resolved;\n } else {\n resolved._parts.protocol = base._parts.protocol;\n }\n\n if (this._parts.hostname) {\n return resolved;\n }\n\n for (i = 0; (p = properties[i]); i++) {\n resolved._parts[p] = base._parts[p];\n }\n\n if (!resolved._parts.path) {\n resolved._parts.path = base._parts.path;\n if (!resolved._parts.query) {\n resolved._parts.query = base._parts.query;\n }\n } else {\n if (resolved._parts.path.substring(-2) === '..') {\n resolved._parts.path += '/';\n }\n\n if (resolved.path().charAt(0) !== '/') {\n basedir = base.directory();\n basedir = basedir ? basedir : base.path().indexOf('/') === 0 ? '/' : '';\n resolved._parts.path = (basedir ? (basedir + '/') : '') + resolved._parts.path;\n resolved.normalizePath();\n }\n }\n\n resolved.build();\n return resolved;\n };\n p.relativeTo = function(base) {\n var relative = this.clone().normalize();\n var relativeParts, baseParts, common, relativePath, basePath;\n\n if (relative._parts.urn) {\n throw new Error('URNs do not have any generally defined hierarchical components');\n }\n\n base = new URI(base).normalize();\n relativeParts = relative._parts;\n baseParts = base._parts;\n relativePath = relative.path();\n basePath = base.path();\n\n if (relativePath.charAt(0) !== '/') {\n throw new Error('URI is already relative');\n }\n\n if (basePath.charAt(0) !== '/') {\n throw new Error('Cannot calculate a URI relative to another relative URI');\n }\n\n if (relativeParts.protocol === baseParts.protocol) {\n relativeParts.protocol = null;\n }\n\n if (relativeParts.username !== baseParts.username || relativeParts.password !== baseParts.password) {\n return relative.build();\n }\n\n if (relativeParts.protocol !== null || relativeParts.username !== null || relativeParts.password !== null) {\n return relative.build();\n }\n\n if (relativeParts.hostname === baseParts.hostname && relativeParts.port === baseParts.port) {\n relativeParts.hostname = null;\n relativeParts.port = null;\n } else {\n return relative.build();\n }\n\n if (relativePath === basePath) {\n relativeParts.path = '';\n return relative.build();\n }\n\n // determine common sub path\n common = URI.commonPath(relativePath, basePath);\n\n // If the paths have nothing in common, return a relative URL with the absolute path.\n if (!common) {\n return relative.build();\n }\n\n var parents = baseParts.path\n .substring(common.length)\n .replace(/[^\\/]*$/, '')\n .replace(/.*?\\//g, '../');\n\n relativeParts.path = (parents + relativeParts.path.substring(common.length)) || './';\n\n return relative.build();\n };\n\n // comparing URIs\n p.equals = function(uri) {\n var one = this.clone();\n var two = new URI(uri);\n var one_map = {};\n var two_map = {};\n var checked = {};\n var one_query, two_query, key;\n\n one.normalize();\n two.normalize();\n\n // exact match\n if (one.toString() === two.toString()) {\n return true;\n }\n\n // extract query string\n one_query = one.query();\n two_query = two.query();\n one.query('');\n two.query('');\n\n // definitely not equal if not even non-query parts match\n if (one.toString() !== two.toString()) {\n return false;\n }\n\n // query parameters have the same length, even if they're permuted\n if (one_query.length !== two_query.length) {\n return false;\n }\n\n one_map = URI.parseQuery(one_query, this._parts.escapeQuerySpace);\n two_map = URI.parseQuery(two_query, this._parts.escapeQuerySpace);\n\n for (key in one_map) {\n if (hasOwn.call(one_map, key)) {\n if (!isArray(one_map[key])) {\n if (one_map[key] !== two_map[key]) {\n return false;\n }\n } else if (!arraysEqual(one_map[key], two_map[key])) {\n return false;\n }\n\n checked[key] = true;\n }\n }\n\n for (key in two_map) {\n if (hasOwn.call(two_map, key)) {\n if (!checked[key]) {\n // two contains a parameter not present in one\n return false;\n }\n }\n }\n\n return true;\n };\n\n // state\n p.preventInvalidHostname = function(v) {\n this._parts.preventInvalidHostname = !!v;\n return this;\n };\n\n p.duplicateQueryParameters = function(v) {\n this._parts.duplicateQueryParameters = !!v;\n return this;\n };\n\n p.escapeQuerySpace = function(v) {\n this._parts.escapeQuerySpace = !!v;\n return this;\n };\n\n return URI;\n}));\n","/*! https://mths.be/punycode v1.4.0 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","import { useLayoutEffect, useMemo, useRef } from 'react';\r\nconst useEventCallback = (fn) => {\r\n let ref = useRef(fn);\r\n useLayoutEffect(() => {\r\n ref.current = fn;\r\n });\r\n return useMemo(() => (...args) => {\r\n const { current } = ref;\r\n return current(...args);\r\n }, []);\r\n};\r\nexport default useEventCallback;\r\n//# sourceMappingURL=index.js.map","var __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\n/**\n * Interprets an encoded string and returns either the string or null/undefined if not available.\n * Ignores array inputs (takes just first element in array)\n * @param input encoded string\n */\nfunction getEncodedValue(input, allowEmptyString) {\n if (input == null) {\n return input;\n }\n // '' or []\n if (input.length === 0 &&\n (!allowEmptyString || (allowEmptyString && input !== ''))) {\n return null;\n }\n var str = input instanceof Array ? input[0] : input;\n if (str == null) {\n return str;\n }\n if (!allowEmptyString && str === '') {\n return null;\n }\n return str;\n}\n/**\n * Interprets an encoded string and return null/undefined or an array with\n * the encoded string contents\n * @param input encoded string\n */\nfunction getEncodedValueArray(input) {\n if (input == null) {\n return input;\n }\n return input instanceof Array ? input : input === '' ? [] : [input];\n}\n/**\n * Encodes a date as a string in YYYY-MM-DD format.\n *\n * @param {Date} date\n * @return {String} the encoded date\n */\nexport function encodeDate(date) {\n if (date == null) {\n return date;\n }\n var year = date.getFullYear();\n var month = date.getMonth() + 1;\n var day = date.getDate();\n return year + \"-\" + (month < 10 ? \"0\" + month : month) + \"-\" + (day < 10 ? \"0\" + day : day);\n}\n/**\n * Converts a date in the format 'YYYY-mm-dd...' into a proper date, because\n * new Date() does not do that correctly. The date can be as complete or incomplete\n * as necessary (aka, '2015', '2015-10', '2015-10-01').\n * It will not work for dates that have times included in them.\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input String date form like '2015-10-01'\n * @return {Date} parsed date\n */\nexport function decodeDate(input) {\n var dateString = getEncodedValue(input);\n if (dateString == null)\n return dateString;\n var parts = dateString.split('-');\n // may only be a year so won't even have a month\n if (parts[1] != null) {\n parts[1] -= 1; // Note: months are 0-based\n }\n else {\n // just a year, set the month and day to the first\n parts[1] = 0;\n parts[2] = 1;\n }\n var decoded = new (Date.bind.apply(Date, __spreadArrays([void 0], parts)))();\n if (isNaN(decoded.getTime())) {\n return null;\n }\n return decoded;\n}\n/**\n * Encodes a date as a string in ISO 8601 (\"2019-05-28T10:58:40Z\") format.\n *\n * @param {Date} date\n * @return {String} the encoded date\n */\nexport function encodeDateTime(date) {\n if (date == null) {\n return date;\n }\n return date.toISOString();\n}\n/**\n * Converts a date in the https://en.wikipedia.org/wiki/ISO_8601 format.\n * For allowed inputs see specs:\n * - https://tools.ietf.org/html/rfc2822#page-14\n * - http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input String date form like '1995-12-17T03:24:00'\n * @return {Date} parsed date\n */\nexport function decodeDateTime(input) {\n var dateString = getEncodedValue(input);\n if (dateString == null)\n return dateString;\n var decoded = new Date(dateString);\n if (isNaN(decoded.getTime())) {\n return null;\n }\n return decoded;\n}\n/**\n * Encodes a boolean as a string. true -> \"1\", false -> \"0\".\n *\n * @param {Boolean} bool\n * @return {String} the encoded boolean\n */\nexport function encodeBoolean(bool) {\n if (bool == null) {\n return bool;\n }\n return bool ? '1' : '0';\n}\n/**\n * Decodes a boolean from a string. \"1\" -> true, \"0\" -> false.\n * Everything else maps to undefined.\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input the encoded boolean string\n * @return {Boolean} the boolean value\n */\nexport function decodeBoolean(input) {\n var boolStr = getEncodedValue(input);\n if (boolStr == null)\n return boolStr;\n if (boolStr === '1') {\n return true;\n }\n else if (boolStr === '0') {\n return false;\n }\n return null;\n}\n/**\n * Encodes a number as a string.\n *\n * @param {Number} num\n * @return {String} the encoded number\n */\nexport function encodeNumber(num) {\n if (num == null) {\n return num;\n }\n return String(num);\n}\n/**\n * Decodes a number from a string. If the number is invalid,\n * it returns undefined.\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input the encoded number string\n * @return {Number} the number value\n */\nexport function decodeNumber(input) {\n var numStr = getEncodedValue(input);\n if (numStr == null)\n return numStr;\n if (numStr === '')\n return null;\n var result = +numStr;\n return result;\n}\n/**\n * Encodes a string while safely handling null and undefined values.\n *\n * @param {String} str a string to encode\n * @return {String} the encoded string\n */\nexport function encodeString(str) {\n if (str == null) {\n return str;\n }\n return String(str);\n}\n/**\n * Decodes a string while safely handling null and undefined values.\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input the encoded string\n * @return {String} the string value\n */\nexport function decodeString(input) {\n var str = getEncodedValue(input, true);\n if (str == null)\n return str;\n return String(str);\n}\n/**\n * Encodes anything as a JSON string.\n *\n * @param {Any} any The thing to be encoded\n * @return {String} The JSON string representation of any\n */\nexport function encodeJson(any) {\n if (any == null) {\n return any;\n }\n return JSON.stringify(any);\n}\n/**\n * Decodes a JSON string into javascript\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input The JSON string representation\n * @return {Any} The javascript representation\n */\nexport function decodeJson(input) {\n var jsonStr = getEncodedValue(input);\n if (jsonStr == null)\n return jsonStr;\n var result = null;\n try {\n result = JSON.parse(jsonStr);\n }\n catch (e) {\n /* ignore errors, returning undefined */\n }\n return result;\n}\n/**\n * Encodes an array as a JSON string.\n *\n * @param {Array} array The array to be encoded\n * @return {String[]} The array of strings to be put in the URL\n * as repeated query parameters\n */\nexport function encodeArray(array) {\n if (array == null) {\n return array;\n }\n return array;\n}\n/**\n * Decodes an array or singular value and returns it as an array\n * or undefined if falsy. Filters out undefined values.\n *\n * @param {String | Array} input The input value\n * @return {Array} The javascript representation\n */\nexport function decodeArray(input) {\n var arr = getEncodedValueArray(input);\n if (arr == null)\n return arr;\n return arr;\n}\n/**\n * Encodes a numeric array as a JSON string.\n *\n * @param {Array} array The array to be encoded\n * @return {String[]} The array of strings to be put in the URL\n * as repeated query parameters\n */\nexport function encodeNumericArray(array) {\n if (array == null) {\n return array;\n }\n return array.map(String);\n}\n/**\n * Decodes an array or singular value and returns it as an array\n * or undefined if falsy. Filters out undefined and NaN values.\n *\n * @param {String | Array} input The input value\n * @return {Array} The javascript representation\n */\nexport function decodeNumericArray(input) {\n var arr = decodeArray(input);\n if (arr == null)\n return arr;\n return arr.map(function (d) { return (d === '' || d == null ? null : +d); });\n}\n/**\n * Encodes an array as a delimited string. For example,\n * ['a', 'b'] -> 'a_b' with entrySeparator='_'\n *\n * @param array The array to be encoded\n * @param entrySeparator The string used to delimit entries\n * @return The array as a string with elements joined by the\n * entry separator\n */\nexport function encodeDelimitedArray(array, entrySeparator) {\n if (entrySeparator === void 0) { entrySeparator = '_'; }\n if (array == null) {\n return array;\n }\n return array.join(entrySeparator);\n}\n/**\n * Decodes a delimited string into javascript array. For example,\n * 'a_b' -> ['a', 'b'] with entrySeparator='_'\n *\n * If an array is provided as input, only the first entry is used.\n *\n * @param {String} input The JSON string representation\n * @param entrySeparator The array as a string with elements joined by the\n * entry separator\n * @return {Array} The javascript representation\n */\nexport function decodeDelimitedArray(input, entrySeparator) {\n if (entrySeparator === void 0) { entrySeparator = '_'; }\n var arrayStr = getEncodedValue(input, true);\n if (arrayStr == null)\n return arrayStr;\n if (arrayStr === '')\n return [];\n return arrayStr.split(entrySeparator);\n}\n/**\n * Encodes a numeric array as a delimited string. (alias of encodeDelimitedArray)\n * For example, [1, 2] -> '1_2' with entrySeparator='_'\n *\n * @param {Array} array The array to be encoded\n * @return {String} The JSON string representation of array\n */\nexport var encodeDelimitedNumericArray = encodeDelimitedArray;\n/**\n * Decodes a delimited string into javascript array where all entries are numbers\n * For example, '1_2' -> [1, 2] with entrySeparator='_'\n *\n * If an array is provided as input, only the first entry is used.\n *\n * @param {String} jsonStr The JSON string representation\n * @return {Array} The javascript representation\n */\nexport function decodeDelimitedNumericArray(arrayStr, entrySeparator) {\n if (entrySeparator === void 0) { entrySeparator = '_'; }\n var decoded = decodeDelimitedArray(arrayStr, entrySeparator);\n if (decoded == null)\n return decoded;\n return decoded.map(function (d) { return (d === '' || d == null ? null : +d); });\n}\n/**\n * Encode simple objects as readable strings. Works only for simple,\n * flat objects where values are numbers, strings.\n *\n * For example { foo: bar, boo: baz } -> \"foo-bar_boo-baz\"\n *\n * @param {Object} object The object to encode\n * @param {String} keyValSeparator=\"-\" The separator between keys and values\n * @param {String} entrySeparator=\"_\" The separator between entries\n * @return {String} The encoded object\n */\nexport function encodeObject(obj, keyValSeparator, entrySeparator) {\n if (keyValSeparator === void 0) { keyValSeparator = '-'; }\n if (entrySeparator === void 0) { entrySeparator = '_'; }\n if (obj == null)\n return obj; // null or undefined\n if (!Object.keys(obj).length)\n return ''; // {} case\n return Object.keys(obj)\n .map(function (key) { return \"\" + key + keyValSeparator + obj[key]; })\n .join(entrySeparator);\n}\n/**\n * Decodes a simple object to javascript. Currently works only for simple,\n * flat objects where values are strings.\n *\n * For example \"foo-bar_boo-baz\" -> { foo: bar, boo: baz }\n *\n * If an array is provided as input, only the first entry is used.\n *\n * @param {String} input The object string to decode\n * @param {String} keyValSeparator=\"-\" The separator between keys and values\n * @param {String} entrySeparator=\"_\" The separator between entries\n * @return {Object} The javascript object\n */\nexport function decodeObject(input, keyValSeparator, entrySeparator) {\n if (keyValSeparator === void 0) { keyValSeparator = '-'; }\n if (entrySeparator === void 0) { entrySeparator = '_'; }\n var objStr = getEncodedValue(input, true);\n if (objStr == null)\n return objStr;\n if (objStr === '')\n return {};\n var obj = {};\n var keyValSeparatorRegExp = new RegExp(keyValSeparator + \"(.*)\");\n objStr.split(entrySeparator).forEach(function (entryStr) {\n var _a = entryStr.split(keyValSeparatorRegExp), key = _a[0], value = _a[1];\n obj[key] = value;\n });\n return obj;\n}\n/**\n * Encode simple objects as readable strings. Alias of encodeObject.\n *\n * For example { foo: 123, boo: 521 } -> \"foo-123_boo-521\"\n *\n * @param {Object} object The object to encode\n * @param {String} keyValSeparator=\"-\" The separator between keys and values\n * @param {String} entrySeparator=\"_\" The separator between entries\n * @return {String} The encoded object\n */\nexport var encodeNumericObject = encodeObject;\n/**\n * Decodes a simple object to javascript where all values are numbers.\n * Currently works only for simple, flat objects.\n *\n * For example \"foo-123_boo-521\" -> { foo: 123, boo: 521 }\n *\n * If an array is provided as input, only the first entry is used.\n *\n * @param {String} input The object string to decode\n * @param {String} keyValSeparator=\"-\" The separator between keys and values\n * @param {String} entrySeparator=\"_\" The separator between entries\n * @return {Object} The javascript object\n */\nexport function decodeNumericObject(input, keyValSeparator, entrySeparator) {\n if (keyValSeparator === void 0) { keyValSeparator = '-'; }\n if (entrySeparator === void 0) { entrySeparator = '_'; }\n var decoded = decodeObject(input, keyValSeparator, entrySeparator);\n if (decoded == null)\n return decoded;\n // convert to numbers\n var decodedNumberObj = {};\n for (var _i = 0, _a = Object.keys(decoded); _i < _a.length; _i++) {\n var key = _a[_i];\n decodedNumberObj[key] = decodeNumber(decoded[key]);\n }\n return decodedNumberObj;\n}\n","import * as Serialize from './serialize';\n/**\n * String values\n */\nexport var StringParam = {\n encode: Serialize.encodeString,\n decode: Serialize.decodeString,\n};\n/**\n * Numbers (integers or floats)\n */\nexport var NumberParam = {\n encode: Serialize.encodeNumber,\n decode: Serialize.decodeNumber,\n};\n/**\n * For flat objects where values are strings\n */\nexport var ObjectParam = {\n encode: Serialize.encodeObject,\n decode: Serialize.decodeObject,\n};\n/**\n * For flat arrays of strings, filters out undefined values during decode\n */\nexport var ArrayParam = {\n encode: Serialize.encodeArray,\n decode: Serialize.decodeArray,\n};\n/**\n * For flat arrays of strings, filters out undefined values during decode\n */\nexport var NumericArrayParam = {\n encode: Serialize.encodeNumericArray,\n decode: Serialize.decodeNumericArray,\n};\n/**\n * For any type of data, encoded via JSON.stringify\n */\nexport var JsonParam = {\n encode: Serialize.encodeJson,\n decode: Serialize.decodeJson,\n};\n/**\n * For simple dates (YYYY-MM-DD)\n */\nexport var DateParam = {\n encode: Serialize.encodeDate,\n decode: Serialize.decodeDate,\n equals: function (valueA, valueB) {\n if (valueA === valueB)\n return true;\n if (valueA == null || valueB == null)\n return valueA === valueB;\n // ignore time of day\n return (valueA.getFullYear() === valueB.getFullYear() &&\n valueA.getMonth() === valueB.getMonth() &&\n valueA.getDate() === valueB.getDate());\n },\n};\n/**\n * For dates in simplified extended ISO format (YYYY-MM-DDTHH:mm:ss.sssZ or ±YYYYYY-MM-DDTHH:mm:ss.sssZ)\n */\nexport var DateTimeParam = {\n encode: Serialize.encodeDateTime,\n decode: Serialize.decodeDateTime,\n equals: function (valueA, valueB) {\n if (valueA === valueB)\n return true;\n if (valueA == null || valueB == null)\n return valueA === valueB;\n return valueA.valueOf() === valueB.valueOf();\n },\n};\n/**\n * For boolean values: 1 = true, 0 = false\n */\nexport var BooleanParam = {\n encode: Serialize.encodeBoolean,\n decode: Serialize.decodeBoolean,\n};\n/**\n * For flat objects where the values are numbers\n */\nexport var NumericObjectParam = {\n encode: Serialize.encodeNumericObject,\n decode: Serialize.decodeNumericObject,\n};\n/**\n * For flat arrays of strings, filters out undefined values during decode\n */\nexport var DelimitedArrayParam = {\n encode: Serialize.encodeDelimitedArray,\n decode: Serialize.decodeDelimitedArray,\n};\n/**\n * For flat arrays where the values are numbers, filters out undefined values during decode\n */\nexport var DelimitedNumericArrayParam = {\n encode: Serialize.encodeDelimitedNumericArray,\n decode: Serialize.decodeDelimitedNumericArray,\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { stringify, parse as parseQueryString, parseUrl, } from 'query-string';\n/**\n * An example of a transformSearchString function that undoes encoding of\n * common JSON characters that are technically allowed in URLs.\n */\nvar JSON_SAFE_CHARS = \"{}[],\\\":\"\n .split('')\n .map(function (d) { return [d, encodeURIComponent(d)]; });\nexport function transformSearchStringJsonSafe(searchString) {\n var str = searchString;\n for (var _i = 0, JSON_SAFE_CHARS_1 = JSON_SAFE_CHARS; _i < JSON_SAFE_CHARS_1.length; _i++) {\n var _a = JSON_SAFE_CHARS_1[_i], char = _a[0], code = _a[1];\n str = str.replace(new RegExp('\\\\' + code, 'g'), char);\n }\n return str;\n}\n/**\n * Update a location, wiping out parameters not included in encodedQuery\n * If a param is set to undefined it will be removed from the URL.\n */\nexport function updateLocation(encodedQuery, location, stringifyOptions) {\n var encodedSearchString = stringify(encodedQuery, stringifyOptions);\n if (stringifyOptions && stringifyOptions.transformSearchString) {\n encodedSearchString = stringifyOptions.transformSearchString(encodedSearchString);\n }\n var search = encodedSearchString.length ? \"?\" + encodedSearchString : '';\n var href = parseUrl(location.href || '').url + search;\n var newLocation = __assign(__assign({}, location), { key: \"\" + Date.now(), // needed for some routers (e.g. react-router)\n href: href,\n search: search, query: encodedQuery });\n return newLocation;\n}\n/**\n * Update a location while retaining existing parameters.\n * If a param is set to undefined it will be removed from the URL.\n */\nexport function updateInLocation(encodedQueryReplacements, location, stringifyOptions) {\n // if a query is there, use it, otherwise parse the search string\n var currQuery = location.query || parseQueryString(location.search);\n var newQuery = __assign(__assign({}, currQuery), encodedQueryReplacements);\n return updateLocation(newQuery, location, stringifyOptions);\n}\n","/**\n * Convert the values in query to strings via the encode functions configured\n * in paramConfigMap\n *\n * @param paramConfigMap Map from query name to { encode, decode } config\n * @param query Query updates mapping param name to decoded value\n */\nexport function encodeQueryParams(paramConfigMap, query) {\n var encodedQuery = {};\n var paramNames = Object.keys(query);\n for (var _i = 0, paramNames_1 = paramNames; _i < paramNames_1.length; _i++) {\n var paramName = paramNames_1[_i];\n var decodedValue = query[paramName];\n if (!paramConfigMap[paramName]) {\n if (process.env.NODE_ENV === 'development') {\n console.warn(\"Encoding parameter \" + paramName + \" as string since it was not configured.\");\n }\n // NOTE: we could just not encode it, but it is probably convenient to have\n // it be included by default as a string type.\n encodedQuery[paramName] =\n decodedValue == null ? decodedValue : String(decodedValue);\n }\n else {\n encodedQuery[paramName] = paramConfigMap[paramName].encode(query[paramName]);\n }\n }\n return encodedQuery;\n}\nexport default encodeQueryParams;\n","export { withDefault } from './withDefault';\nexport { encodeDate, decodeDate, encodeBoolean, decodeBoolean, encodeNumber, decodeNumber, encodeString, decodeString, encodeJson, decodeJson, encodeArray, decodeArray, encodeNumericArray, decodeNumericArray, encodeDelimitedArray, decodeDelimitedArray, encodeDelimitedNumericArray, decodeDelimitedNumericArray, encodeObject, decodeObject, encodeNumericObject, decodeNumericObject, } from './serialize';\nexport { StringParam, NumberParam, ObjectParam, ArrayParam, NumericArrayParam, JsonParam, DateParam, DateTimeParam, BooleanParam, NumericObjectParam, DelimitedArrayParam, DelimitedNumericArrayParam, } from './params';\nexport { updateLocation, updateInLocation, transformSearchStringJsonSafe, } from './updateLocation';\nexport { encodeQueryParams } from './encodeQueryParams';\nexport { decodeQueryParams } from './decodeQueryParams';\nif (process.env.NODE_ENV !== 'production' && typeof require === 'function') {\n /*\n * run checks to ensure a valid version of query-string is installed\n * see https://github.com/pbeshai/use-query-params/issues/127 for discussion\n */\n var queryStringVersion = require('query-string/package.json').version;\n // simple check of versions since we don't anticipate any new minor v5s and\n // don't want to require the semver package as a dependency for just a simple\n // dev check.\n var validQueryStringInstalled = /^5.1.[1-9][0-9]*/.test(queryStringVersion) ||\n /^6\\./.test(queryStringVersion);\n if (!validQueryStringInstalled) {\n throw new Error(\"serialize-query-params requires query-string ^5.1.1 || ^6, \" +\n (\"but \" + queryStringVersion + \" is installed. Note: you may also \") +\n \"see this message if you're using use-query-params.\");\n }\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license at\n * https://github.com/facebook/fbjs/blob/master/LICENSE\n */\n/*eslint-disable no-self-compare */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n }\n else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n\n * @pbeshai modification of shallowEqual to take into consideration a map providing\n * equals functions\n */\nexport default function shallowEqual(objA, objB, equalMap) {\n var _a, _b;\n if (is(objA, objB)) {\n return true;\n }\n if (typeof objA !== 'object' ||\n objA === null ||\n typeof objB !== 'object' ||\n objB === null) {\n return false;\n }\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) {\n return false;\n }\n // Test for A's keys different from B.\n for (var i = 0; i < keysA.length; i++) {\n var isEqual = (_b = (_a = equalMap === null || equalMap === void 0 ? void 0 : equalMap[keysA[i]]) === null || _a === void 0 ? void 0 : _a.equals) !== null && _b !== void 0 ? _b : is;\n if (!hasOwnProperty.call(objB, keysA[i]) ||\n !isEqual(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n return true;\n}\n","import * as React from 'react';\nimport { extract } from 'query-string';\nimport shallowEqual from './shallowEqual';\nexport function useUpdateRefIfShallowNew(ref, newValue, isEqual) {\n if (isEqual === void 0) { isEqual = shallowEqual; }\n var hasNew = ((ref.current == null || newValue == null) && ref.current === newValue) ||\n !isEqual(ref.current, newValue);\n React.useEffect(function () {\n if (hasNew) {\n ref.current = newValue;\n }\n }, [ref, newValue, hasNew]);\n}\nexport function getSSRSafeSearchString(location) {\n // handle checking SSR (#13)\n if (typeof location === 'object') {\n // in browser\n if (typeof window !== 'undefined') {\n return location.search;\n }\n else {\n return extract(\"\" + location.pathname + (location.search ? location.search : ''));\n }\n }\n return '';\n}\n","import * as React from 'react';\nimport { updateUrlQuery, createLocationWithChanges } from './updateUrlQuery';\nvar providerlessContextValue = {\n location: {},\n getLocation: function () { return ({}); },\n setLocation: function () { },\n};\nexport var LocationContext = React.createContext(providerlessContextValue);\nexport function useLocationContext() {\n var context = React.useContext(LocationContext);\n if (process.env.NODE_ENV !== 'production' &&\n (context === undefined || context === providerlessContextValue)) {\n throw new Error('useQueryParams must be used within a QueryParamProvider');\n }\n return context;\n}\n/**\n * An internal-only context provider which provides down the most\n * recent location object and a callback to update the history.\n */\nexport function LocationProvider(_a) {\n var history = _a.history, location = _a.location, children = _a.children, stringifyOptions = _a.stringifyOptions;\n var locationRef = React.useRef(location);\n React.useEffect(function () {\n locationRef.current = location;\n }, [location]);\n // TODO: we can probably simplify this now that we are reading location from history\n var getLocation = React.useCallback(function () { return locationRef.current; }, [\n locationRef,\n ]);\n var setLocation = React.useCallback(function (queryReplacements, updateType) {\n // A ref is needed here to stop setLocation updating constantly (see #46)\n locationRef.current = createLocationWithChanges(queryReplacements, history == null || history.location == null\n ? locationRef.current\n : history.location, updateType, stringifyOptions);\n if (history) {\n updateUrlQuery(history, locationRef.current, updateType);\n }\n }, [history, stringifyOptions]);\n return (React.createElement(LocationContext.Provider, { value: { location: location, getLocation: getLocation, setLocation: setLocation } }, children));\n}\n","import { updateLocation, updateInLocation, } from 'serialize-query-params';\n/**\n * Creates a new location object containing the specified query changes.\n * If replaceIn or pushIn are used as the updateType, then parameters\n * not specified in queryReplacements are retained. If replace or push\n * are used, only the values in queryReplacements will be available.\n * The default is pushIn.\n */\nexport function createLocationWithChanges(queryReplacements, location, updateType, stringifyOptions) {\n if (updateType === void 0) { updateType = 'pushIn'; }\n switch (updateType) {\n case 'replace':\n case 'push':\n return updateLocation(queryReplacements, location, stringifyOptions);\n case 'replaceIn':\n case 'pushIn':\n default:\n return updateInLocation(queryReplacements, location, stringifyOptions);\n }\n}\n/**\n * Updates the URL to the new location.\n */\nexport function updateUrlQuery(history, location, updateType) {\n if (updateType === void 0) { updateType = 'pushIn'; }\n switch (updateType) {\n case 'pushIn':\n case 'push':\n history.push(location);\n break;\n case 'replaceIn':\n case 'replace':\n default:\n history.replace(location);\n break;\n }\n}\n","import { parse as parseQueryString } from 'query-string';\nexport var makeMemoizedQueryParser = function (initialSearchString) {\n var cachedSearchString = initialSearchString;\n var cachedParsedQuery = parseQueryString(cachedSearchString || '');\n return function (newSearchString) {\n if (cachedSearchString !== newSearchString) {\n cachedSearchString = newSearchString;\n cachedParsedQuery = parseQueryString(cachedSearchString);\n }\n return cachedParsedQuery;\n };\n};\nexport var sharedMemoizedQueryParser = makeMemoizedQueryParser();\n","import * as React from 'react';\nimport { StringParam } from 'serialize-query-params';\nimport { getSSRSafeSearchString, useUpdateRefIfShallowNew } from './helpers';\nimport { useLocationContext } from './LocationProvider';\nimport { sharedMemoizedQueryParser } from './memoizedQueryParser';\nimport shallowEqual from './shallowEqual';\n/**\n * Helper to get the latest decoded value with smart caching.\n * Abstracted into its own function to allow re-use in a functional setter (#26)\n */\nfunction getLatestDecodedValue(location, name, paramConfig, paramConfigRef, encodedValueCacheRef, decodedValueCacheRef) {\n var _a;\n // check if we have a new param config\n var hasNewParamConfig = !shallowEqual(paramConfigRef.current, paramConfig);\n var isValueEqual = (_a = paramConfig.equals) !== null && _a !== void 0 ? _a : shallowEqual;\n // read in the parsed query\n var parsedQuery = sharedMemoizedQueryParser(getSSRSafeSearchString(location) // get the latest location object\n );\n // read in the encoded string value (we have to check cache if available because\n // sometimes the query string changes so we get a new parsedQuery but this value\n // didn't change, so we should avoid generating a new array or whatever value)\n var hasNewEncodedValue = !shallowEqual(encodedValueCacheRef.current, parsedQuery[name]);\n var encodedValue = hasNewEncodedValue\n ? parsedQuery[name]\n : encodedValueCacheRef.current;\n // only decode if we have changes to encoded value or the config.\n // check for undefined to handle initial case\n if (!hasNewEncodedValue &&\n !hasNewParamConfig &&\n decodedValueCacheRef.current !== undefined) {\n return decodedValueCacheRef.current;\n }\n var newDecodedValue = paramConfig.decode(encodedValue);\n var hasNewDecodedValue = ((decodedValueCacheRef.current == null || newDecodedValue == null) &&\n decodedValueCacheRef.current === newDecodedValue) ||\n !isValueEqual(decodedValueCacheRef.current, newDecodedValue);\n // if we have a new decoded value use it, otherwise use cached\n return hasNewDecodedValue\n ? newDecodedValue\n : decodedValueCacheRef.current;\n}\n/**\n * Given a query param name and query parameter configuration ({ encode, decode })\n * return the decoded value and a setter for updating it.\n *\n * The setter takes two arguments (newValue, updateType) where updateType\n * is one of 'replace' | 'replaceIn' | 'push' | 'pushIn', defaulting to\n * 'pushIn'.\n *\n * You may optionally pass in a rawQuery object, otherwise the query is derived\n * from the location available in the context.\n *\n * D = decoded type\n * D2 = return value from decode (typically same as D)\n */\nexport var useQueryParam = function (name, paramConfig) {\n if (paramConfig === void 0) { paramConfig = StringParam; }\n var _a = useLocationContext(), location = _a.location, getLocation = _a.getLocation, setLocation = _a.setLocation;\n // read in the raw query\n var parsedQuery = sharedMemoizedQueryParser(getSSRSafeSearchString(location));\n // make caches\n var encodedValueCacheRef = React.useRef();\n var paramConfigRef = React.useRef(paramConfig);\n var decodedValueCacheRef = React.useRef();\n var decodedValue = getLatestDecodedValue(location, name, paramConfig, paramConfigRef, encodedValueCacheRef, decodedValueCacheRef);\n // update cached values in a useEffect\n useUpdateRefIfShallowNew(encodedValueCacheRef, parsedQuery[name]);\n useUpdateRefIfShallowNew(paramConfigRef, paramConfig);\n useUpdateRefIfShallowNew(decodedValueCacheRef, decodedValue, paramConfig.equals);\n // create the setter, memoizing via useCallback\n var setValueDeps = {\n paramConfig: paramConfig,\n name: name,\n setLocation: setLocation,\n getLocation: getLocation,\n };\n var setValueDepsRef = React.useRef(setValueDeps);\n setValueDepsRef.current = setValueDeps;\n var setValue = React.useCallback(function setValueCallback(newValue, updateType) {\n var _a;\n var deps = setValueDepsRef.current;\n var newEncodedValue;\n // allow functional updates #26\n if (typeof newValue === 'function') {\n // get latest decoded value to pass as a fresh arg to the setter fn\n var latestValue = getLatestDecodedValue(deps.getLocation(), deps.name, deps.paramConfig, paramConfigRef, encodedValueCacheRef, decodedValueCacheRef);\n decodedValueCacheRef.current = latestValue; // keep cache in sync\n newEncodedValue = deps.paramConfig.encode(newValue(latestValue));\n }\n else {\n newEncodedValue = deps.paramConfig.encode(newValue);\n }\n // update the URL\n deps.setLocation((_a = {}, _a[deps.name] = newEncodedValue, _a), updateType);\n }, []);\n return [decodedValue, setValue];\n};\n","import * as React from 'react';\nimport { encodeQueryParams, } from 'serialize-query-params';\nimport { getSSRSafeSearchString, useUpdateRefIfShallowNew } from './helpers';\nimport { useLocationContext } from './LocationProvider';\nimport { sharedMemoizedQueryParser } from './memoizedQueryParser';\nimport shallowEqual from './shallowEqual';\n/**\n * Helper to get the latest decoded values with smart caching.\n * Abstracted into its own function to allow re-use in a functional setter (#26)\n */\nfunction getLatestDecodedValues(location, paramConfigMap, paramConfigMapRef, parsedQueryRef, encodedValuesCacheRef, decodedValuesCacheRef) {\n // check if we have a new param config\n var hasNewParamConfigMap = !shallowEqual(paramConfigMapRef.current, paramConfigMap);\n // read in the parsed query\n var parsedQuery = sharedMemoizedQueryParser(getSSRSafeSearchString(location) // get the latest location object\n );\n // check if new encoded values are around (new parsed query).\n // can use triple equals since we already cache this value\n var hasNewParsedQuery = parsedQueryRef.current !== parsedQuery;\n // if nothing has changed, use existing.. so long as we have existing.\n if (!hasNewParsedQuery &&\n !hasNewParamConfigMap &&\n encodedValuesCacheRef.current !== undefined) {\n return {\n encodedValues: encodedValuesCacheRef.current,\n decodedValues: decodedValuesCacheRef.current,\n };\n }\n var encodedValuesCache = encodedValuesCacheRef.current || {};\n var decodedValuesCache = decodedValuesCacheRef.current || {};\n var encodedValues = {};\n // we have new encoded values, so let's get new decoded values.\n // recompute new values but only for those that changed\n var paramNames = Object.keys(paramConfigMap);\n var decodedValues = {};\n for (var _i = 0, paramNames_1 = paramNames; _i < paramNames_1.length; _i++) {\n var paramName = paramNames_1[_i];\n // do we have a new encoded value?\n var paramConfig = paramConfigMap[paramName];\n var hasNewEncodedValue = !shallowEqual(encodedValuesCache[paramName], parsedQuery[paramName]);\n // if we have a new encoded value, re-decode. otherwise reuse cache\n var encodedValue = void 0;\n var decodedValue = void 0;\n if (hasNewEncodedValue ||\n (encodedValuesCache[paramName] === undefined &&\n decodedValuesCache[paramName] === undefined)) {\n encodedValue = parsedQuery[paramName];\n decodedValue = paramConfig.decode(encodedValue);\n }\n else {\n encodedValue = encodedValuesCache[paramName];\n decodedValue = decodedValuesCache[paramName];\n }\n encodedValues[paramName] = encodedValue;\n decodedValues[paramName] = decodedValue;\n }\n // keep referential equality for decoded valus if we didn't actually change anything\n var hasNewDecodedValues = !shallowEqual(decodedValuesCacheRef.current, decodedValues, paramConfigMap);\n return {\n encodedValues: encodedValues,\n decodedValues: hasNewDecodedValues\n ? decodedValues\n : decodedValuesCacheRef.current,\n };\n}\n/**\n * Given a query parameter configuration (mapping query param name to { encode, decode }),\n * return an object with the decoded values and a setter for updating them.\n */\nexport var useQueryParams = function (paramConfigMap) {\n var _a = useLocationContext(), location = _a.location, getLocation = _a.getLocation, setLocation = _a.setLocation;\n // read in the raw query\n var parsedQuery = sharedMemoizedQueryParser(getSSRSafeSearchString(location));\n // make caches\n var paramConfigMapRef = React.useRef(paramConfigMap);\n var parsedQueryRef = React.useRef(parsedQuery);\n var encodedValuesCacheRef = React.useRef(undefined); // undefined for initial check\n var decodedValuesCacheRef = React.useRef({});\n // memoize paramConfigMap to make the API nicer for consumers.\n // otherwise we'd have to useQueryParams(useMemo(() => { foo: NumberParam }, []))\n paramConfigMap = shallowEqual(paramConfigMap, paramConfigMapRef.current)\n ? paramConfigMapRef.current\n : paramConfigMap;\n // decode all the values if we have changes\n var _b = getLatestDecodedValues(location, paramConfigMap, paramConfigMapRef, parsedQueryRef, encodedValuesCacheRef, decodedValuesCacheRef), encodedValues = _b.encodedValues, decodedValues = _b.decodedValues;\n // update cached values in useEffects\n useUpdateRefIfShallowNew(parsedQueryRef, parsedQuery);\n useUpdateRefIfShallowNew(paramConfigMapRef, paramConfigMap);\n useUpdateRefIfShallowNew(encodedValuesCacheRef, encodedValues);\n useUpdateRefIfShallowNew(decodedValuesCacheRef, decodedValues, function (a, b) {\n return shallowEqual(a, b, paramConfigMap);\n });\n // create a setter for updating multiple query params at once\n var setQueryDeps = {\n paramConfigMap: paramConfigMap,\n setLocation: setLocation,\n getLocation: getLocation,\n };\n var setQueryDepsRef = React.useRef(setQueryDeps);\n setQueryDepsRef.current = setQueryDeps;\n var setQuery = React.useCallback(function (changes, updateType) {\n var deps = setQueryDepsRef.current;\n var encodedChanges;\n if (typeof changes === 'function') {\n // get latest decoded value to pass as a fresh arg to the setter fn\n var latestValues = getLatestDecodedValues(deps.getLocation(), deps.paramConfigMap, paramConfigMapRef, parsedQueryRef, encodedValuesCacheRef, decodedValuesCacheRef).decodedValues;\n decodedValuesCacheRef.current = latestValues; // keep cache in sync\n encodedChanges = encodeQueryParams(deps.paramConfigMap, changes(latestValues));\n }\n else {\n // encode as strings for the URL\n encodedChanges = encodeQueryParams(deps.paramConfigMap, changes);\n }\n // update the URL\n deps.setLocation(encodedChanges, updateType);\n }, []);\n // no longer Partial\n return [decodedValues, setQuery];\n};\nexport default useQueryParams;\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { LocationProvider } from './LocationProvider';\nimport shallowEqual from './shallowEqual';\n// we use a lazy caching solution to prevent #46 from happening\nvar cachedWindowHistory;\nvar cachedAdaptedWindowHistory;\n/**\n * Adapts standard DOM window history to work with our\n * { replace, push } interface.\n *\n * @param history Standard history provided by DOM\n */\nfunction adaptWindowHistory(history) {\n if (history === cachedWindowHistory && cachedAdaptedWindowHistory != null) {\n return cachedAdaptedWindowHistory;\n }\n var adaptedWindowHistory = {\n replace: function (location) {\n history.replaceState(location.state, '', location.protocol + \"//\" + location.host + location.pathname + location.search);\n },\n push: function (location) {\n history.pushState(location.state, '', location.protocol + \"//\" + location.host + location.pathname + location.search);\n },\n get location() {\n return window.location;\n },\n };\n cachedWindowHistory = history;\n cachedAdaptedWindowHistory = adaptedWindowHistory;\n return adaptedWindowHistory;\n}\n// we use a lazy caching solution to prevent #46 from happening\nvar cachedReachHistory;\nvar cachedAdaptedReachHistory;\n/**\n * Adapts @reach/router history to work with our\n * { replace, push } interface.\n *\n * @param history globalHistory from @reach/router\n */\nfunction adaptReachHistory(history) {\n if (history === cachedReachHistory && cachedAdaptedReachHistory != null) {\n return cachedAdaptedReachHistory;\n }\n var adaptedReachHistory = {\n replace: function (location) {\n history.navigate(location.protocol + \"//\" + location.host + location.pathname + location.search, { replace: true });\n },\n push: function (location) {\n history.navigate(location.protocol + \"//\" + location.host + location.pathname + location.search, { replace: false });\n },\n get location() {\n return history.location;\n },\n };\n cachedReachHistory = history;\n cachedAdaptedReachHistory = adaptedReachHistory;\n return adaptedReachHistory;\n}\n/**\n * Helper to produce the context value falling back to\n * window history and location if not provided.\n */\nexport function getLocationProps(_a) {\n var _b = _a === void 0 ? {} : _a, history = _b.history, location = _b.location;\n var hasWindow = typeof window !== 'undefined';\n if (hasWindow) {\n if (!history) {\n history = adaptWindowHistory(window.history);\n }\n if (!location) {\n location = window.location;\n }\n }\n if (!location) {\n throw new Error(\"\\n Could not read the location. Is the router wired up correctly?\\n \");\n }\n return { history: history, location: location };\n}\n/**\n * Context provider for query params to have access to the\n * active routing system, enabling updates to the URL.\n */\nexport function QueryParamProvider(_a) {\n var children = _a.children, ReactRouterRoute = _a.ReactRouterRoute, reachHistory = _a.reachHistory, history = _a.history, location = _a.location, stringifyOptions = _a.stringifyOptions;\n // cache the stringify options object so we users can just do\n // \n var stringifyOptionsRef = React.useRef(stringifyOptions);\n var hasNewStringifyOptions = !shallowEqual(stringifyOptionsRef.current, stringifyOptions);\n var stringifyOptionsCached = hasNewStringifyOptions\n ? stringifyOptions\n : stringifyOptionsRef.current;\n React.useEffect(function () {\n stringifyOptionsRef.current = stringifyOptionsCached;\n }, [stringifyOptionsCached]);\n // if we have React Router, use it to get the context value\n if (ReactRouterRoute) {\n return (React.createElement(ReactRouterRoute, null, function (routeProps) {\n return (React.createElement(LocationProvider, __assign({ stringifyOptions: stringifyOptionsCached }, getLocationProps(routeProps)), children));\n }));\n }\n // if we are using reach router, use its history\n if (reachHistory) {\n return (React.createElement(LocationProvider, __assign({ stringifyOptions: stringifyOptionsCached }, getLocationProps({\n history: adaptReachHistory(reachHistory),\n location: location,\n })), children));\n }\n // neither reach nor react-router, so allow manual overrides\n return (React.createElement(LocationProvider, __assign({ stringifyOptions: stringifyOptionsCached }, getLocationProps({ history: history, location: location })), children));\n}\nexport default QueryParamProvider;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n return obj != null && obj.constructor != null &&\n typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n","/**\n * default settings\n *\n * @author Zongmin Lei\n */\n\nvar FilterCSS = require(\"cssfilter\").FilterCSS;\nvar getDefaultCSSWhiteList = require(\"cssfilter\").getDefaultWhiteList;\nvar _ = require(\"./util\");\n\nfunction getDefaultWhiteList() {\n return {\n a: [\"target\", \"href\", \"title\"],\n abbr: [\"title\"],\n address: [],\n area: [\"shape\", \"coords\", \"href\", \"alt\"],\n article: [],\n aside: [],\n audio: [\n \"autoplay\",\n \"controls\",\n \"crossorigin\",\n \"loop\",\n \"muted\",\n \"preload\",\n \"src\",\n ],\n b: [],\n bdi: [\"dir\"],\n bdo: [\"dir\"],\n big: [],\n blockquote: [\"cite\"],\n br: [],\n caption: [],\n center: [],\n cite: [],\n code: [],\n col: [\"align\", \"valign\", \"span\", \"width\"],\n colgroup: [\"align\", \"valign\", \"span\", \"width\"],\n dd: [],\n del: [\"datetime\"],\n details: [\"open\"],\n div: [],\n dl: [],\n dt: [],\n em: [],\n figcaption: [],\n figure: [],\n font: [\"color\", \"size\", \"face\"],\n footer: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n header: [],\n hr: [],\n i: [],\n img: [\"src\", \"alt\", \"title\", \"width\", \"height\"],\n ins: [\"datetime\"],\n li: [],\n mark: [],\n nav: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n section: [],\n small: [],\n span: [],\n sub: [],\n summary: [],\n sup: [],\n strong: [],\n strike: [],\n table: [\"width\", \"border\", \"align\", \"valign\"],\n tbody: [\"align\", \"valign\"],\n td: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\"],\n tfoot: [\"align\", \"valign\"],\n th: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\"],\n thead: [\"align\", \"valign\"],\n tr: [\"rowspan\", \"align\", \"valign\"],\n tt: [],\n u: [],\n ul: [],\n video: [\n \"autoplay\",\n \"controls\",\n \"crossorigin\",\n \"loop\",\n \"muted\",\n \"playsinline\",\n \"poster\",\n \"preload\",\n \"src\",\n \"height\",\n \"width\",\n ],\n };\n}\n\nvar defaultCSSFilter = new FilterCSS();\n\n/**\n * default onTag function\n *\n * @param {String} tag\n * @param {String} html\n * @param {Object} options\n * @return {String}\n */\nfunction onTag(tag, html, options) {\n // do nothing\n}\n\n/**\n * default onIgnoreTag function\n *\n * @param {String} tag\n * @param {String} html\n * @param {Object} options\n * @return {String}\n */\nfunction onIgnoreTag(tag, html, options) {\n // do nothing\n}\n\n/**\n * default onTagAttr function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction onTagAttr(tag, name, value) {\n // do nothing\n}\n\n/**\n * default onIgnoreTagAttr function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction onIgnoreTagAttr(tag, name, value) {\n // do nothing\n}\n\n/**\n * default escapeHtml function\n *\n * @param {String} html\n */\nfunction escapeHtml(html) {\n return html.replace(REGEXP_LT, \"<\").replace(REGEXP_GT, \">\");\n}\n\n/**\n * default safeAttrValue function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @param {Object} cssFilter\n * @return {String}\n */\nfunction safeAttrValue(tag, name, value, cssFilter) {\n // unescape attribute value firstly\n value = friendlyAttrValue(value);\n\n if (name === \"href\" || name === \"src\") {\n // filter `href` and `src` attribute\n // only allow the value that starts with `http://` | `https://` | `mailto:` | `/` | `#`\n value = _.trim(value);\n if (value === \"#\") return \"#\";\n if (\n !(\n value.substr(0, 7) === \"http://\" ||\n value.substr(0, 8) === \"https://\" ||\n value.substr(0, 7) === \"mailto:\" ||\n value.substr(0, 4) === \"tel:\" ||\n value.substr(0, 11) === \"data:image/\" ||\n value.substr(0, 6) === \"ftp://\" ||\n value.substr(0, 2) === \"./\" ||\n value.substr(0, 3) === \"../\" ||\n value[0] === \"#\" ||\n value[0] === \"/\"\n )\n ) {\n return \"\";\n }\n } else if (name === \"background\") {\n // filter `background` attribute (maybe no use)\n // `javascript:`\n REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {\n return \"\";\n }\n } else if (name === \"style\") {\n // `expression()`\n REGEXP_DEFAULT_ON_TAG_ATTR_7.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_7.test(value)) {\n return \"\";\n }\n // `url()`\n REGEXP_DEFAULT_ON_TAG_ATTR_8.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_8.test(value)) {\n REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {\n return \"\";\n }\n }\n if (cssFilter !== false) {\n cssFilter = cssFilter || defaultCSSFilter;\n value = cssFilter.process(value);\n }\n }\n\n // escape `<>\"` before returns\n value = escapeAttrValue(value);\n return value;\n}\n\n// RegExp list\nvar REGEXP_LT = //g;\nvar REGEXP_QUOTE = /\"/g;\nvar REGEXP_QUOTE_2 = /"/g;\nvar REGEXP_ATTR_VALUE_1 = /&#([a-zA-Z0-9]*);?/gim;\nvar REGEXP_ATTR_VALUE_COLON = /:?/gim;\nvar REGEXP_ATTR_VALUE_NEWLINE = /&newline;?/gim;\n// var REGEXP_DEFAULT_ON_TAG_ATTR_3 = /\\/\\*|\\*\\//gm;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_4 =\n /((j\\s*a\\s*v\\s*a|v\\s*b|l\\s*i\\s*v\\s*e)\\s*s\\s*c\\s*r\\s*i\\s*p\\s*t\\s*|m\\s*o\\s*c\\s*h\\s*a):/gi;\n// var REGEXP_DEFAULT_ON_TAG_ATTR_5 = /^[\\s\"'`]*(d\\s*a\\s*t\\s*a\\s*)\\:/gi;\n// var REGEXP_DEFAULT_ON_TAG_ATTR_6 = /^[\\s\"'`]*(d\\s*a\\s*t\\s*a\\s*)\\:\\s*image\\//gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_7 =\n /e\\s*x\\s*p\\s*r\\s*e\\s*s\\s*s\\s*i\\s*o\\s*n\\s*\\(.*/gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_8 = /u\\s*r\\s*l\\s*\\(.*/gi;\n\n/**\n * escape double quote\n *\n * @param {String} str\n * @return {String} str\n */\nfunction escapeQuote(str) {\n return str.replace(REGEXP_QUOTE, \""\");\n}\n\n/**\n * unescape double quote\n *\n * @param {String} str\n * @return {String} str\n */\nfunction unescapeQuote(str) {\n return str.replace(REGEXP_QUOTE_2, '\"');\n}\n\n/**\n * escape html entities\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeHtmlEntities(str) {\n return str.replace(REGEXP_ATTR_VALUE_1, function replaceUnicode(str, code) {\n return code[0] === \"x\" || code[0] === \"X\"\n ? String.fromCharCode(parseInt(code.substr(1), 16))\n : String.fromCharCode(parseInt(code, 10));\n });\n}\n\n/**\n * escape html5 new danger entities\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeDangerHtml5Entities(str) {\n return str\n .replace(REGEXP_ATTR_VALUE_COLON, \":\")\n .replace(REGEXP_ATTR_VALUE_NEWLINE, \" \");\n}\n\n/**\n * clear nonprintable characters\n *\n * @param {String} str\n * @return {String}\n */\nfunction clearNonPrintableCharacter(str) {\n var str2 = \"\";\n for (var i = 0, len = str.length; i < len; i++) {\n str2 += str.charCodeAt(i) < 32 ? \" \" : str.charAt(i);\n }\n return _.trim(str2);\n}\n\n/**\n * get friendly attribute value\n *\n * @param {String} str\n * @return {String}\n */\nfunction friendlyAttrValue(str) {\n str = unescapeQuote(str);\n str = escapeHtmlEntities(str);\n str = escapeDangerHtml5Entities(str);\n str = clearNonPrintableCharacter(str);\n return str;\n}\n\n/**\n * unescape attribute value\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeAttrValue(str) {\n str = escapeQuote(str);\n str = escapeHtml(str);\n return str;\n}\n\n/**\n * `onIgnoreTag` function for removing all the tags that are not in whitelist\n */\nfunction onIgnoreTagStripAll() {\n return \"\";\n}\n\n/**\n * remove tag body\n * specify a `tags` list, if the tag is not in the `tags` list then process by the specify function (optional)\n *\n * @param {array} tags\n * @param {function} next\n */\nfunction StripTagBody(tags, next) {\n if (typeof next !== \"function\") {\n next = function () {};\n }\n\n var isRemoveAllTag = !Array.isArray(tags);\n function isRemoveTag(tag) {\n if (isRemoveAllTag) return true;\n return _.indexOf(tags, tag) !== -1;\n }\n\n var removeList = [];\n var posStart = false;\n\n return {\n onIgnoreTag: function (tag, html, options) {\n if (isRemoveTag(tag)) {\n if (options.isClosing) {\n var ret = \"[/removed]\";\n var end = options.position + ret.length;\n removeList.push([\n posStart !== false ? posStart : options.position,\n end,\n ]);\n posStart = false;\n return ret;\n } else {\n if (!posStart) {\n posStart = options.position;\n }\n return \"[removed]\";\n }\n } else {\n return next(tag, html, options);\n }\n },\n remove: function (html) {\n var rethtml = \"\";\n var lastPos = 0;\n _.forEach(removeList, function (pos) {\n rethtml += html.slice(lastPos, pos[0]);\n lastPos = pos[1];\n });\n rethtml += html.slice(lastPos);\n return rethtml;\n },\n };\n}\n\n/**\n * remove html comments\n *\n * @param {String} html\n * @return {String}\n */\nfunction stripCommentTag(html) {\n var retHtml = \"\";\n var lastPos = 0;\n while (lastPos < html.length) {\n var i = html.indexOf(\"\", i);\n if (j === -1) {\n break;\n }\n lastPos = j + 3;\n }\n return retHtml;\n}\n\n/**\n * remove invisible characters\n *\n * @param {String} html\n * @return {String}\n */\nfunction stripBlankChar(html) {\n var chars = html.split(\"\");\n chars = chars.filter(function (char) {\n var c = char.charCodeAt(0);\n if (c === 127) return false;\n if (c <= 31) {\n if (c === 10 || c === 13) return true;\n return false;\n }\n return true;\n });\n return chars.join(\"\");\n}\n\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onTag = onTag;\nexports.onIgnoreTag = onIgnoreTag;\nexports.onTagAttr = onTagAttr;\nexports.onIgnoreTagAttr = onIgnoreTagAttr;\nexports.safeAttrValue = safeAttrValue;\nexports.escapeHtml = escapeHtml;\nexports.escapeQuote = escapeQuote;\nexports.unescapeQuote = unescapeQuote;\nexports.escapeHtmlEntities = escapeHtmlEntities;\nexports.escapeDangerHtml5Entities = escapeDangerHtml5Entities;\nexports.clearNonPrintableCharacter = clearNonPrintableCharacter;\nexports.friendlyAttrValue = friendlyAttrValue;\nexports.escapeAttrValue = escapeAttrValue;\nexports.onIgnoreTagStripAll = onIgnoreTagStripAll;\nexports.StripTagBody = StripTagBody;\nexports.stripCommentTag = stripCommentTag;\nexports.stripBlankChar = stripBlankChar;\nexports.cssFilter = defaultCSSFilter;\nexports.getDefaultCSSWhiteList = getDefaultCSSWhiteList;\n","/**\n * xss\n *\n * @author Zongmin Lei\n */\n\nvar DEFAULT = require(\"./default\");\nvar parser = require(\"./parser\");\nvar FilterXSS = require(\"./xss\");\n\n/**\n * filter xss function\n *\n * @param {String} html\n * @param {Object} options { whiteList, onTag, onTagAttr, onIgnoreTag, onIgnoreTagAttr, safeAttrValue, escapeHtml }\n * @return {String}\n */\nfunction filterXSS(html, options) {\n var xss = new FilterXSS(options);\n return xss.process(html);\n}\n\nexports = module.exports = filterXSS;\nexports.filterXSS = filterXSS;\nexports.FilterXSS = FilterXSS;\n\n(function () {\n for (var i in DEFAULT) {\n exports[i] = DEFAULT[i];\n }\n for (var j in parser) {\n exports[j] = parser[j];\n }\n})();\n\n// using `xss` on the browser, output `filterXSS` to the globals\nif (typeof window !== \"undefined\") {\n window.filterXSS = module.exports;\n}\n\n// using `xss` on the WebWorker, output `filterXSS` to the globals\nfunction isWorkerEnv() {\n return (\n typeof self !== \"undefined\" &&\n typeof DedicatedWorkerGlobalScope !== \"undefined\" &&\n self instanceof DedicatedWorkerGlobalScope\n );\n}\nif (isWorkerEnv()) {\n self.filterXSS = module.exports;\n}\n","/**\n * Simple HTML Parser\n *\n * @author Zongmin Lei\n */\n\nvar _ = require(\"./util\");\n\n/**\n * get tag name\n *\n * @param {String} html e.g. ''\n * @return {String}\n */\nfunction getTagName(html) {\n var i = _.spaceIndex(html);\n var tagName;\n if (i === -1) {\n tagName = html.slice(1, -1);\n } else {\n tagName = html.slice(1, i + 1);\n }\n tagName = _.trim(tagName).toLowerCase();\n if (tagName.slice(0, 1) === \"/\") tagName = tagName.slice(1);\n if (tagName.slice(-1) === \"/\") tagName = tagName.slice(0, -1);\n return tagName;\n}\n\n/**\n * is close tag?\n *\n * @param {String} html 如:''\n * @return {Boolean}\n */\nfunction isClosing(html) {\n return html.slice(0, 2) === \"\" || currentPos === len - 1) {\n rethtml += escapeHtml(html.slice(lastPos, tagStart));\n currentHtml = html.slice(tagStart, currentPos + 1);\n currentTagName = getTagName(currentHtml);\n rethtml += onTag(\n tagStart,\n rethtml.length,\n currentTagName,\n currentHtml,\n isClosing(currentHtml)\n );\n lastPos = currentPos + 1;\n tagStart = false;\n continue;\n }\n if (c === '\"' || c === \"'\") {\n var i = 1;\n var ic = html.charAt(currentPos - i);\n\n while (ic.trim() === \"\" || ic === \"=\") {\n if (ic === \"=\") {\n quoteStart = c;\n continue chariterator;\n }\n ic = html.charAt(currentPos - ++i);\n }\n }\n } else {\n if (c === quoteStart) {\n quoteStart = false;\n continue;\n }\n }\n }\n }\n if (lastPos < len) {\n rethtml += escapeHtml(html.substr(lastPos));\n }\n\n return rethtml;\n}\n\nvar REGEXP_ILLEGAL_ATTR_NAME = /[^a-zA-Z0-9\\\\_:.-]/gim;\n\n/**\n * parse input attributes and returns processed attributes\n *\n * @param {String} html e.g. `href=\"#\" target=\"_blank\"`\n * @param {Function} onAttr e.g. `function (name, value)`\n * @return {String}\n */\nfunction parseAttr(html, onAttr) {\n \"use strict\";\n\n var lastPos = 0;\n var lastMarkPos = 0;\n var retAttrs = [];\n var tmpName = false;\n var len = html.length;\n\n function addAttr(name, value) {\n name = _.trim(name);\n name = name.replace(REGEXP_ILLEGAL_ATTR_NAME, \"\").toLowerCase();\n if (name.length < 1) return;\n var ret = onAttr(name, value || \"\");\n if (ret) retAttrs.push(ret);\n }\n\n // 逐个分析字符\n for (var i = 0; i < len; i++) {\n var c = html.charAt(i);\n var v, j;\n if (tmpName === false && c === \"=\") {\n tmpName = html.slice(lastPos, i);\n lastPos = i + 1;\n lastMarkPos = html.charAt(lastPos) === '\"' || html.charAt(lastPos) === \"'\" ? lastPos : findNextQuotationMark(html, i + 1);\n continue;\n }\n if (tmpName !== false) {\n if (\n i === lastMarkPos\n ) {\n j = html.indexOf(c, i + 1);\n if (j === -1) {\n break;\n } else {\n v = _.trim(html.slice(lastMarkPos + 1, j));\n addAttr(tmpName, v);\n tmpName = false;\n i = j;\n lastPos = i + 1;\n continue;\n }\n }\n }\n if (/\\s|\\n|\\t/.test(c)) {\n html = html.replace(/\\s|\\n|\\t/g, \" \");\n if (tmpName === false) {\n j = findNextEqual(html, i);\n if (j === -1) {\n v = _.trim(html.slice(lastPos, i));\n addAttr(v);\n tmpName = false;\n lastPos = i + 1;\n continue;\n } else {\n i = j - 1;\n continue;\n }\n } else {\n j = findBeforeEqual(html, i - 1);\n if (j === -1) {\n v = _.trim(html.slice(lastPos, i));\n v = stripQuoteWrap(v);\n addAttr(tmpName, v);\n tmpName = false;\n lastPos = i + 1;\n continue;\n } else {\n continue;\n }\n }\n }\n }\n\n if (lastPos < html.length) {\n if (tmpName === false) {\n addAttr(html.slice(lastPos));\n } else {\n addAttr(tmpName, stripQuoteWrap(_.trim(html.slice(lastPos))));\n }\n }\n\n return _.trim(retAttrs.join(\" \"));\n}\n\nfunction findNextEqual(str, i) {\n for (; i < str.length; i++) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"=\") return i;\n return -1;\n }\n}\n\nfunction findNextQuotationMark(str, i) {\n for (; i < str.length; i++) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"'\" || c === '\"') return i;\n return -1;\n }\n}\n\nfunction findBeforeEqual(str, i) {\n for (; i > 0; i--) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"=\") return i;\n return -1;\n }\n}\n\nfunction isQuoteWrapString(text) {\n if (\n (text[0] === '\"' && text[text.length - 1] === '\"') ||\n (text[0] === \"'\" && text[text.length - 1] === \"'\")\n ) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction stripQuoteWrap(text) {\n if (isQuoteWrapString(text)) {\n return text.substr(1, text.length - 2);\n } else {\n return text;\n }\n}\n\nexports.parseTag = parseTag;\nexports.parseAttr = parseAttr;\n","module.exports = {\n indexOf: function (arr, item) {\n var i, j;\n if (Array.prototype.indexOf) {\n return arr.indexOf(item);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n return -1;\n },\n forEach: function (arr, fn, scope) {\n var i, j;\n if (Array.prototype.forEach) {\n return arr.forEach(fn, scope);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n fn.call(scope, arr[i], i, arr);\n }\n },\n trim: function (str) {\n if (String.prototype.trim) {\n return str.trim();\n }\n return str.replace(/(^\\s*)|(\\s*$)/g, \"\");\n },\n spaceIndex: function (str) {\n var reg = /\\s|\\n|\\t/;\n var match = reg.exec(str);\n return match ? match.index : -1;\n },\n};\n","/**\n * filter xss\n *\n * @author Zongmin Lei\n */\n\nvar FilterCSS = require(\"cssfilter\").FilterCSS;\nvar DEFAULT = require(\"./default\");\nvar parser = require(\"./parser\");\nvar parseTag = parser.parseTag;\nvar parseAttr = parser.parseAttr;\nvar _ = require(\"./util\");\n\n/**\n * returns `true` if the input value is `undefined` or `null`\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull(obj) {\n return obj === undefined || obj === null;\n}\n\n/**\n * get attributes for a tag\n *\n * @param {String} html\n * @return {Object}\n * - {String} html\n * - {Boolean} closing\n */\nfunction getAttrs(html) {\n var i = _.spaceIndex(html);\n if (i === -1) {\n return {\n html: \"\",\n closing: html[html.length - 2] === \"/\",\n };\n }\n html = _.trim(html.slice(i + 1, -1));\n var isClosing = html[html.length - 1] === \"/\";\n if (isClosing) html = _.trim(html.slice(0, -1));\n return {\n html: html,\n closing: isClosing,\n };\n}\n\n/**\n * shallow copy\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject(obj) {\n var ret = {};\n for (var i in obj) {\n ret[i] = obj[i];\n }\n return ret;\n}\n\nfunction keysToLowerCase(obj) {\n var ret = {};\n for (var i in obj) {\n if (Array.isArray(obj[i])) {\n ret[i.toLowerCase()] = obj[i].map(function (item) {\n return item.toLowerCase();\n });\n } else {\n ret[i.toLowerCase()] = obj[i];\n }\n }\n return ret;\n}\n\n/**\n * FilterXSS class\n *\n * @param {Object} options\n * whiteList (or allowList), onTag, onTagAttr, onIgnoreTag,\n * onIgnoreTagAttr, safeAttrValue, escapeHtml\n * stripIgnoreTagBody, allowCommentTag, stripBlankChar\n * css{whiteList, onAttr, onIgnoreAttr} `css=false` means don't use `cssfilter`\n */\nfunction FilterXSS(options) {\n options = shallowCopyObject(options || {});\n\n if (options.stripIgnoreTag) {\n if (options.onIgnoreTag) {\n console.error(\n 'Notes: cannot use these two options \"stripIgnoreTag\" and \"onIgnoreTag\" at the same time'\n );\n }\n options.onIgnoreTag = DEFAULT.onIgnoreTagStripAll;\n }\n if (options.whiteList || options.allowList) {\n options.whiteList = keysToLowerCase(options.whiteList || options.allowList);\n } else {\n options.whiteList = DEFAULT.whiteList;\n }\n\n options.onTag = options.onTag || DEFAULT.onTag;\n options.onTagAttr = options.onTagAttr || DEFAULT.onTagAttr;\n options.onIgnoreTag = options.onIgnoreTag || DEFAULT.onIgnoreTag;\n options.onIgnoreTagAttr = options.onIgnoreTagAttr || DEFAULT.onIgnoreTagAttr;\n options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n options.escapeHtml = options.escapeHtml || DEFAULT.escapeHtml;\n this.options = options;\n\n if (options.css === false) {\n this.cssFilter = false;\n } else {\n options.css = options.css || {};\n this.cssFilter = new FilterCSS(options.css);\n }\n}\n\n/**\n * start process and returns result\n *\n * @param {String} html\n * @return {String}\n */\nFilterXSS.prototype.process = function (html) {\n // compatible with the input\n html = html || \"\";\n html = html.toString();\n if (!html) return \"\";\n\n var me = this;\n var options = me.options;\n var whiteList = options.whiteList;\n var onTag = options.onTag;\n var onIgnoreTag = options.onIgnoreTag;\n var onTagAttr = options.onTagAttr;\n var onIgnoreTagAttr = options.onIgnoreTagAttr;\n var safeAttrValue = options.safeAttrValue;\n var escapeHtml = options.escapeHtml;\n var cssFilter = me.cssFilter;\n\n // remove invisible characters\n if (options.stripBlankChar) {\n html = DEFAULT.stripBlankChar(html);\n }\n\n // remove html comments\n if (!options.allowCommentTag) {\n html = DEFAULT.stripCommentTag(html);\n }\n\n // if enable stripIgnoreTagBody\n var stripIgnoreTagBody = false;\n if (options.stripIgnoreTagBody) {\n stripIgnoreTagBody = DEFAULT.StripTagBody(\n options.stripIgnoreTagBody,\n onIgnoreTag\n );\n onIgnoreTag = stripIgnoreTagBody.onIgnoreTag;\n }\n\n var retHtml = parseTag(\n html,\n function (sourcePosition, position, tag, html, isClosing) {\n var info = {\n sourcePosition: sourcePosition,\n position: position,\n isClosing: isClosing,\n isWhite: Object.prototype.hasOwnProperty.call(whiteList, tag),\n };\n\n // call `onTag()`\n var ret = onTag(tag, html, info);\n if (!isNull(ret)) return ret;\n\n if (info.isWhite) {\n if (info.isClosing) {\n return \"\";\n }\n\n var attrs = getAttrs(html);\n var whiteAttrList = whiteList[tag];\n var attrsHtml = parseAttr(attrs.html, function (name, value) {\n // call `onTagAttr()`\n var isWhiteAttr = _.indexOf(whiteAttrList, name) !== -1;\n var ret = onTagAttr(tag, name, value, isWhiteAttr);\n if (!isNull(ret)) return ret;\n\n if (isWhiteAttr) {\n // call `safeAttrValue()`\n value = safeAttrValue(tag, name, value, cssFilter);\n if (value) {\n return name + '=\"' + value + '\"';\n } else {\n return name;\n }\n } else {\n // call `onIgnoreTagAttr()`\n ret = onIgnoreTagAttr(tag, name, value, isWhiteAttr);\n if (!isNull(ret)) return ret;\n return;\n }\n });\n\n // build new tag html\n html = \"<\" + tag;\n if (attrsHtml) html += \" \" + attrsHtml;\n if (attrs.closing) html += \" /\";\n html += \">\";\n return html;\n } else {\n // call `onIgnoreTag()`\n ret = onIgnoreTag(tag, html, info);\n if (!isNull(ret)) return ret;\n return escapeHtml(html);\n }\n },\n escapeHtml\n );\n\n // if enable stripIgnoreTagBody\n if (stripIgnoreTagBody) {\n retHtml = stripIgnoreTagBody.remove(retHtml);\n }\n\n return retHtml;\n};\n\nmodule.exports = FilterXSS;\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","export const VOID = -1;\nexport const PRIMITIVE = 0;\nexport const ARRAY = 1;\nexport const OBJECT = 2;\nexport const DATE = 3;\nexport const REGEXP = 4;\nexport const MAP = 5;\nexport const SET = 6;\nexport const ERROR = 7;\nexport const BIGINT = 8;\n// export const SYMBOL = 9;\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n const as = (out, index) => {\n $.set(index, out);\n return out;\n };\n\n const unpair = index => {\n if ($.has(index))\n return $.get(index);\n\n const [type, value] = _[index];\n switch (type) {\n case PRIMITIVE:\n case VOID:\n return as(value, index);\n case ARRAY: {\n const arr = as([], index);\n for (const index of value)\n arr.push(unpair(index));\n return arr;\n }\n case OBJECT: {\n const object = as({}, index);\n for (const [key, index] of value)\n object[unpair(key)] = unpair(index);\n return object;\n }\n case DATE:\n return as(new Date(value), index);\n case REGEXP: {\n const {source, flags} = value;\n return as(new RegExp(source, flags), index);\n }\n case MAP: {\n const map = as(new Map, index);\n for (const [key, index] of value)\n map.set(unpair(key), unpair(index));\n return map;\n }\n case SET: {\n const set = as(new Set, index);\n for (const index of value)\n set.add(unpair(index));\n return set;\n }\n case ERROR: {\n const {name, message} = value;\n return as(new env[name](message), index);\n }\n case BIGINT:\n return as(BigInt(value), index);\n case 'BigInt':\n return as(Object(BigInt(value)), index);\n }\n return as(new env[type](value), index);\n };\n\n return unpair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n const type = typeof value;\n if (type !== 'object' || !value)\n return [PRIMITIVE, type];\n\n const asString = toString.call(value).slice(8, -1);\n switch (asString) {\n case 'Array':\n return [ARRAY, EMPTY];\n case 'Object':\n return [OBJECT, EMPTY];\n case 'Date':\n return [DATE, EMPTY];\n case 'RegExp':\n return [REGEXP, EMPTY];\n case 'Map':\n return [MAP, EMPTY];\n case 'Set':\n return [SET, EMPTY];\n }\n\n if (asString.includes('Array'))\n return [ARRAY, asString];\n\n if (asString.includes('Error'))\n return [ERROR, asString];\n\n return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n TYPE === PRIMITIVE &&\n (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n const as = (out, value) => {\n const index = _.push(out) - 1;\n $.set(value, index);\n return index;\n };\n\n const pair = value => {\n if ($.has(value))\n return $.get(value);\n\n let [TYPE, type] = typeOf(value);\n switch (TYPE) {\n case PRIMITIVE: {\n let entry = value;\n switch (type) {\n case 'bigint':\n TYPE = BIGINT;\n entry = value.toString();\n break;\n case 'function':\n case 'symbol':\n if (strict)\n throw new TypeError('unable to serialize ' + type);\n entry = null;\n break;\n case 'undefined':\n return as([VOID], value);\n }\n return as([TYPE, entry], value);\n }\n case ARRAY: {\n if (type)\n return as([type, [...value]], value);\n \n const arr = [];\n const index = as([TYPE, arr], value);\n for (const entry of value)\n arr.push(pair(entry));\n return index;\n }\n case OBJECT: {\n if (type) {\n switch (type) {\n case 'BigInt':\n return as([type, value.toString()], value);\n case 'Boolean':\n case 'Number':\n case 'String':\n return as([type, value.valueOf()], value);\n }\n }\n\n if (json && ('toJSON' in value))\n return pair(value.toJSON());\n\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const key of keys(value)) {\n if (strict || !shouldSkip(typeOf(value[key])))\n entries.push([pair(key), pair(value[key])]);\n }\n return index;\n }\n case DATE:\n return as([TYPE, value.toISOString()], value);\n case REGEXP: {\n const {source, flags} = value;\n return as([TYPE, {source, flags}], value);\n }\n case MAP: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const [key, entry] of value) {\n if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n entries.push([pair(key), pair(entry)]);\n }\n return index;\n }\n case SET: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const entry of value) {\n if (strict || !shouldSkip(typeOf(entry)))\n entries.push(pair(entry));\n }\n return index;\n }\n }\n\n const {message} = value;\n return as([TYPE, {name: type, message}], value);\n };\n\n return pair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n * if `true`, will not throw errors on incompatible types, and behave more\n * like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n const _ = [];\n return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n","import {deserialize} from './deserialize.js';\nimport {serialize} from './serialize.js';\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nexport default typeof structuredClone === \"function\" ?\n /* c8 ignore start */\n (any, options) => (\n options && ('json' in options || 'lossy' in options) ?\n deserialize(serialize(any, options)) : structuredClone(any)\n ) :\n (any, options) => deserialize(serialize(any, options));\n /* c8 ignore stop */\n\nexport {deserialize, serialize};\n","/// \n\n/* eslint-env browser */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nexport function decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const char = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `¬it;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n return char === characterReference ? false : char\n}\n","// Couple of ARIA attributes allowed in several, but not all, places.\nconst aria = ['ariaDescribedBy', 'ariaLabel', 'ariaLabelledBy']\n\n/**\n * Default schema.\n *\n * Follows GitHub style sanitation.\n *\n * @type {import('./index.js').Schema}\n */\nexport const defaultSchema = {\n ancestors: {\n tbody: ['table'],\n td: ['table'],\n th: ['table'],\n thead: ['table'],\n tfoot: ['table'],\n tr: ['table']\n },\n attributes: {\n a: [\n ...aria,\n // Note: these 3 are used by GFM footnotes, they do work on all links.\n 'dataFootnoteBackref',\n 'dataFootnoteRef',\n ['className', 'data-footnote-backref'],\n 'href'\n ],\n blockquote: ['cite'],\n // Note: this class is not normally allowed by GH, when manually writing\n // `code` as HTML in markdown, they adds it some other way.\n // We can’t do that, so we have to allow it.\n code: [['className', /^language-./]],\n del: ['cite'],\n div: ['itemScope', 'itemType'],\n dl: [...aria],\n // Note: this is used by GFM footnotes.\n h2: [['className', 'sr-only']],\n img: [...aria, 'longDesc', 'src'],\n // Note: `input` is not normally allowed by GH, when manually writing\n // it in markdown, they add it from tasklists some other way.\n // We can’t do that, so we have to allow it.\n input: [\n ['disabled', true],\n ['type', 'checkbox']\n ],\n ins: ['cite'],\n // Note: this class is not normally allowed by GH, when manually writing\n // `li` as HTML in markdown, they adds it some other way.\n // We can’t do that, so we have to allow it.\n li: [['className', 'task-list-item']],\n // Note: this class is not normally allowed by GH, when manually writing\n // `ol` as HTML in markdown, they adds it some other way.\n // We can’t do that, so we have to allow it.\n ol: [...aria, ['className', 'contains-task-list']],\n q: ['cite'],\n section: ['dataFootnotes', ['className', 'footnotes']],\n source: ['srcSet'],\n summary: [...aria],\n table: [...aria],\n // Note: this class is not normally allowed by GH, when manually writing\n // `ol` as HTML in markdown, they adds it some other way.\n // We can’t do that, so we have to allow it.\n ul: [...aria, ['className', 'contains-task-list']],\n '*': [\n 'abbr',\n 'accept',\n 'acceptCharset',\n 'accessKey',\n 'action',\n 'align',\n 'alt',\n 'axis',\n 'border',\n 'cellPadding',\n 'cellSpacing',\n 'char',\n 'charOff',\n 'charSet',\n 'checked',\n 'clear',\n 'colSpan',\n 'color',\n 'cols',\n 'compact',\n 'coords',\n 'dateTime',\n 'dir',\n // Note: `disabled` is technically allowed on all elements by GH.\n // But it is useless on everything except `input`.\n // Because `input`s are normally not allowed, but we allow them for\n // checkboxes due to tasklists, we allow `disabled` only there.\n 'encType',\n 'frame',\n 'hSpace',\n 'headers',\n 'height',\n 'hrefLang',\n 'htmlFor',\n 'id',\n 'isMap',\n 'itemProp',\n 'label',\n 'lang',\n 'maxLength',\n 'media',\n 'method',\n 'multiple',\n 'name',\n 'noHref',\n 'noShade',\n 'noWrap',\n 'open',\n 'prompt',\n 'readOnly',\n 'rev',\n 'rowSpan',\n 'rows',\n 'rules',\n 'scope',\n 'selected',\n 'shape',\n 'size',\n 'span',\n 'start',\n 'summary',\n 'tabIndex',\n 'title',\n 'useMap',\n 'vAlign',\n 'value',\n 'width'\n ]\n },\n clobber: ['ariaDescribedBy', 'ariaLabelledBy', 'id', 'name'],\n clobberPrefix: 'user-content-',\n protocols: {\n cite: ['http', 'https'],\n href: ['http', 'https', 'irc', 'ircs', 'mailto', 'xmpp'],\n longDesc: ['http', 'https'],\n src: ['http', 'https']\n },\n required: {\n input: {disabled: true, type: 'checkbox'}\n },\n strip: ['script'],\n tagNames: [\n 'a',\n 'b',\n 'blockquote',\n 'br',\n 'code',\n 'dd',\n 'del',\n 'details',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'hr',\n 'i',\n 'img',\n // Note: `input` is not normally allowed by GH, when manually writing\n // it in markdown, they add it from tasklists some other way.\n // We can’t do that, so we have to allow it.\n 'input',\n 'ins',\n 'kbd',\n 'li',\n 'ol',\n 'p',\n 'picture',\n 'pre',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'section',\n 'source',\n 'span',\n 'strike',\n 'strong',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'tr',\n 'tt',\n 'ul',\n 'var'\n ]\n}\n","function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?n.add(t):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0)),n}function h(){n(2)}function y(n){return null==n||\"object\"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return\"production\"===process.env.NODE_ENV||U||n(0),U}function j(n,r){r&&(b(\"Patches\"),n.u=[],n.s=[],n.v=r)}function O(n){g(n),n.p.forEach(S),n.p=null}function g(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.O=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.g||b(\"ES5\").S(e,r,o),o?(i[Q].P&&(O(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b(\"Patches\").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),O(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o,u=o,a=!1;3===e.i&&(u=new Set(o),o.clear(),a=!0),i(u,(function(r,i){return A(n,e,o,r,i,t,a)})),x(n,o,!1),t&&n.u&&b(\"Patches\").N(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s,v){if(\"production\"!==process.env.NODE_ENV&&c===o&&n(5),r(c)){var p=M(e,c,s&&i&&3!==i.i&&!u(i.R,a)?s.concat(a):void 0);if(f(o,a,p),!r(p))return;e.m=!1}else v&&o.add(c);if(t(c)&&!y(c)){if(!e.h.D&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),!n.l&&n.h.D&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function N(n,r,t){var e=s(r)?b(\"MapSet\").F(r,t):v(r)?b(\"MapSet\").T(r,t):n.g?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,R:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b(\"ES5\").J(r,t);return(t?t.A:_()).p.push(e),e}function R(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b(\"ES5\").K(u)))return u.t;u.I=!0,e=D(r,c),u.I=!1}else e=D(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function D(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function F(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return\"production\"!==process.env.NODE_ENV&&f(r),en.get(r,n)},set:function(r){var t=this[Q];\"production\"!==process.env.NODE_ENV&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e1?t-1:0),o=1;o1?t-1:0),o=1;o=0;e--){var i=t[e];if(0===i.path.length&&\"replace\"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b(\"Patches\").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);export default fn;export{un as Immer,pn as applyPatches,K as castDraft,$ as castImmutable,ln as createDraft,R as current,J as enableAllPlugins,F as enableES5,C as enableMapSet,T as enablePatches,dn as finishDraft,d as freeze,L as immerable,r as isDraft,t as isDraftable,H as nothing,e as original,fn as produce,cn as produceWithPatches,sn as setAutoFreeze,vn as setUseProxies};\n//# sourceMappingURL=immer.esm.js.map\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const blankLine = {\n tokenize: tokenizeBlankLine,\n partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlankLine(effects, ok, nok) {\n return factorySpace(effects, afterWhitespace, 'linePrefix')\n /** @type {State} */\n\n function afterWhitespace(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownSpace} from 'micromark-util-character'\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {string} type\n * @param {number} [max=Infinity]\n * @returns {State}\n */\n\nexport function factorySpace(effects, ok, type, max) {\n const limit = max ? max - 1 : Number.POSITIVE_INFINITY\n let size = 0\n return start\n /** @type {State} */\n\n function start(code) {\n if (markdownSpace(code)) {\n effects.enter(type)\n return prefix(code)\n }\n\n return ok(code)\n }\n /** @type {State} */\n\n function prefix(code) {\n if (markdownSpace(code) && size++ < limit) {\n effects.consume(code)\n return prefix\n }\n\n effects.exit(type)\n return ok(code)\n }\n}\n","// This module is generated by `script/`.\n//\n// CommonMark handles attention (emphasis, strong) markers based on what comes\n// before or after them.\n// One such difference is if those characters are Unicode punctuation.\n// This script is generated from the Unicode data.\nexport const unicodePunctuationRegex =\n /[!-/:-@[-`{-~\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {unicodePunctuationRegex} from './lib/unicode-punctuation-regex.js'\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n */\n\nexport const asciiAlpha = regexCheck(/[A-Za-z]/)\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n */\n\nexport const asciiDigit = regexCheck(/\\d/)\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n */\n\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/)\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n */\n\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n */\n\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n */\n\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/)\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code !== null && (code < 32 || code === 127)\n )\n}\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function markdownLineEndingOrSpace(code) {\n return code !== null && (code < 0 || code === 32)\n}\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function markdownLineEnding(code) {\n return code !== null && code < -2\n}\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function markdownSpace(code) {\n return code === -2 || code === -1 || code === 32\n}\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n */\n\nexport const unicodeWhitespace = regexCheck(/\\s/)\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n */\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n\nexport const unicodePunctuation = regexCheck(unicodePunctuationRegex)\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * @returns {(code: Code) => code is number}\n */\n\nfunction regexCheck(regex) {\n return check\n /**\n * Check whether a code matches the bound regex.\n *\n * @param {Code} code Character code\n * @returns {code is number} Whether the character code matches the bound regex\n */\n\n function check(code) {\n return code !== null && regex.test(String.fromCharCode(code))\n }\n}\n","/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n * @param {T[]} list\n * @param {number} start\n * @param {number} remove\n * @param {T[]} items\n * @returns {void}\n */\nexport function splice(list, start, remove, items) {\n const end = list.length\n let chunkStart = 0\n /** @type {unknown[]} */\n\n let parameters // Make start between zero and `end` (included).\n\n if (start < 0) {\n start = -start > end ? 0 : end + start\n } else {\n start = start > end ? end : start\n }\n\n remove = remove > 0 ? remove : 0 // No need to chunk the items if there’s only a couple (10k) items.\n\n if (items.length < 10000) {\n parameters = Array.from(items)\n parameters.unshift(start, remove) // @ts-expect-error Hush, it’s fine.\n ;[].splice.apply(list, parameters)\n } else {\n // Delete `remove` items starting from `start`\n if (remove) [].splice.apply(list, [start, remove]) // Insert the items in chunks to not cause stack overflows.\n\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 10000)\n parameters.unshift(start, 0) // @ts-expect-error Hush, it’s fine.\n ;[].splice.apply(list, parameters)\n chunkStart += 10000\n start += 10000\n }\n }\n}\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n * @param {T[]} list\n * @param {T[]} items\n * @returns {T[]}\n */\n\nexport function push(list, items) {\n if (list.length > 0) {\n splice(list, list.length, 0, items)\n return list\n }\n\n return items\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\n\n/**\n * Classify whether a character code represents whitespace, punctuation, or\n * something else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * Note that eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * @returns {number|undefined}\n */\nexport function classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n","/**\n * @typedef {import('micromark-util-types').NormalizedExtension} NormalizedExtension\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine several syntax extensions into one.\n *\n * @param {Extension[]} extensions List of syntax extensions.\n * @returns {NormalizedExtension} A single combined extension.\n */\nexport function combineExtensions(extensions) {\n /** @type {NormalizedExtension} */\n const all = {}\n let index = -1\n\n while (++index < extensions.length) {\n syntaxExtension(all, extensions[index])\n }\n\n return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all Extension to merge into.\n * @param {Extension} extension Extension to merge.\n * @returns {void}\n */\nfunction syntaxExtension(all, extension) {\n /** @type {string} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n const left = maybe || (all[hook] = {})\n const right = extension[hook]\n /** @type {string} */\n let code\n\n for (code in right) {\n if (!hasOwnProperty.call(left, code)) left[code] = []\n const value = right[code]\n constructs(\n // @ts-expect-error Looks like a list.\n left[code],\n Array.isArray(value) ? value : value ? [value] : []\n )\n }\n }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {unknown[]} existing\n * @param {unknown[]} list\n * @returns {void}\n */\nfunction constructs(existing, list) {\n let index = -1\n /** @type {unknown[]} */\n const before = []\n\n while (++index < list.length) {\n // @ts-expect-error Looks like an object.\n ;(list[index].add === 'after' ? existing : before).push(list[index])\n }\n\n splice(existing, 0, 0, before)\n}\n\n/**\n * Combine several HTML extensions into one.\n *\n * @param {HtmlExtension[]} htmlExtensions List of HTML extensions.\n * @returns {HtmlExtension} A single combined extension.\n */\nexport function combineHtmlExtensions(htmlExtensions) {\n /** @type {HtmlExtension} */\n const handlers = {}\n let index = -1\n\n while (++index < htmlExtensions.length) {\n htmlExtension(handlers, htmlExtensions[index])\n }\n\n return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all Extension to merge into.\n * @param {HtmlExtension} extension Extension to merge.\n * @returns {void}\n */\nfunction htmlExtension(all, extension) {\n /** @type {string} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n const left = maybe || (all[hook] = {})\n const right = extension[hook]\n /** @type {string} */\n let type\n\n if (right) {\n for (type in right) {\n left[type] = right[type]\n }\n }\n }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base)\n\n if (\n // C0 except for HT, LF, FF, CR, space\n code < 9 ||\n code === 11 ||\n (code > 13 && code < 32) || // Control character (DEL) of the basic block and C1 controls.\n (code > 126 && code < 160) || // Lone high surrogates and low surrogates.\n (code > 55295 && code < 57344) || // Noncharacters.\n (code > 64975 && code < 65008) ||\n (code & 65535) === 65535 ||\n (code & 65535) === 65534 || // Out of range\n code > 1114111\n ) {\n return '\\uFFFD'\n }\n\n return String.fromCharCode(code)\n}\n","import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n/**\n * Utility to decode markdown strings (which occur in places such as fenced\n * code info strings, destinations, labels, and titles).\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * @returns {string}\n */\n\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\n\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n } // Reference.\n\n const head = $2.charCodeAt(0)\n\n if (head === 35) {\n const head = $2.charCodeAt(1)\n const hex = head === 120 || head === 88\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n }\n\n return decodeNamedCharacterReference($2) || $0\n}\n","/**\n * Normalize an identifier (such as used in definitions).\n *\n * @param {string} value\n * @returns {string}\n */\nexport function normalizeIdentifier(value) {\n return (\n value // Collapse Markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, ' ') // Trim.\n .replace(/^ | $/g, '') // Some characters are considered “uppercase”, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no method is uppercase.\n .toLowerCase()\n .toUpperCase()\n )\n}\n","/**\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {{resolveAll?: Resolver}[]} constructs\n * @param {Event[]} events\n * @param {TokenizeContext} context\n * @returns {Event[]}\n */\nexport function resolveAll(constructs, events, context) {\n /** @type {Resolver[]} */\n const called = []\n let index = -1\n\n while (++index < constructs.length) {\n const resolve = constructs[index].resolveAll\n\n if (resolve && !called.includes(resolve)) {\n events = resolve(events, context)\n called.push(resolve)\n }\n }\n\n return events\n}\n","import { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size, random)\nexport let nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array(size))\n while (size--) {\n id += scopedUrlAlphabet[bytes[size] & 63]\n }\n return id\n}\n","export const urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n","/**\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {object & {type: string, position?: Position|undefined}} NodeLike\n */\n\n/**\n * Stringify one point, a position (start and end points), or a node’s\n * positional information.\n *\n * @param {Node|NodeLike|Position|Point|null} [value]\n * @returns {string}\n */\nexport function stringifyPosition(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if ('position' in value || 'type' in value) {\n return position(value.position)\n }\n\n // Position.\n if ('start' in value || 'end' in value) {\n return position(value)\n }\n\n // Point.\n if ('line' in value || 'column' in value) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\n/**\n * @param {Point|undefined} point\n * @returns {string}\n */\nfunction point(point) {\n return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position|undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number|undefined} value\n * @returns {number}\n */\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {object & {type: string, position?: Position|undefined}} NodeLike\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\nexport class VFileMessage extends Error {\n /**\n * Constructor of a message for `reason` at `place` from `origin`.\n * When an error is passed in as `reason`, copies the `stack`.\n *\n * @param {string|Error} reason Reason for message (`string` or `Error`). Uses the stack and message of the error if given.\n * @param {Node|NodeLike|Position|Point} [place] Place at which the message occurred in a file (`Node`, `Position`, or `Point`, optional).\n * @param {string} [origin] Place in code the message originates from (`string`, optional).\n */\n constructor(reason, place, origin) {\n /** @type {[string|null, string|null]} */\n const parts = [null, null]\n /** @type {Position} */\n let position = {\n // @ts-expect-error: we always follows the structure of `position`.\n start: {line: null, column: null},\n // @ts-expect-error: \"\n end: {line: null, column: null}\n }\n\n super()\n\n if (typeof place === 'string') {\n origin = place\n place = undefined\n }\n\n if (typeof origin === 'string') {\n const index = origin.indexOf(':')\n\n if (index === -1) {\n parts[1] = origin\n } else {\n parts[0] = origin.slice(0, index)\n parts[1] = origin.slice(index + 1)\n }\n }\n\n if (place) {\n // Node.\n if ('type' in place || 'position' in place) {\n if (place.position) {\n position = place.position\n }\n }\n // Position.\n else if ('start' in place || 'end' in place) {\n position = place\n }\n // Point.\n else if ('line' in place || 'column' in place) {\n position.start = place\n }\n }\n\n // Fields from `Error`\n this.name = stringifyPosition(place) || '1:1'\n this.message = typeof reason === 'object' ? reason.message : reason\n this.stack = typeof reason === 'object' ? reason.stack : ''\n\n /**\n * Reason for message.\n * @type {string}\n */\n this.reason = this.message\n /**\n * If true, marks associated file as no longer processable.\n * @type {boolean?}\n */\n // eslint-disable-next-line no-unused-expressions\n this.fatal\n /**\n * Starting line of error.\n * @type {number?}\n */\n this.line = position.start.line\n /**\n * Starting column of error.\n * @type {number?}\n */\n this.column = position.start.column\n /**\n * Namespace of warning.\n * @type {string?}\n */\n this.source = parts[0]\n /**\n * Category of message.\n * @type {string?}\n */\n this.ruleId = parts[1]\n /**\n * Full range information, when available.\n * Has start and end properties, both set to an object with line and column, set to number?.\n * @type {Position?}\n */\n this.position = position\n\n // The following fields are “well known”.\n // Not standard.\n // Feel free to add other non-standard fields to your messages.\n\n /* eslint-disable no-unused-expressions */\n /**\n * You can use this to specify the source value that’s being reported, which\n * is deemed incorrect.\n * @type {string?}\n */\n this.actual\n /**\n * You can use this to suggest values that should be used instead of\n * `actual`, one or more values that are deemed as acceptable.\n * @type {Array?}\n */\n this.expected\n /**\n * You may add a file property with a path of a file (used throughout the VFile ecosystem).\n * @type {string?}\n */\n this.file\n /**\n * You may add a url property with a link to documentation for the message.\n * @type {string?}\n */\n this.url\n /**\n * You may add a note property with a long form description of the message (supported by vfile-reporter).\n * @type {string?}\n */\n this.note\n /* eslint-enable no-unused-expressions */\n }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.fatal = null\nVFileMessage.prototype.column = null\nVFileMessage.prototype.line = null\nVFileMessage.prototype.source = null\nVFileMessage.prototype.ruleId = null\nVFileMessage.prototype.position = null\n","// A derivative work based on:\n// .\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// .\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const path = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * @param {string} path\n * @param {string} [ext]\n * @returns {string}\n */\nfunction basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean|undefined} */\n let seenNonSlash\n\n if (ext === undefined || ext.length === 0 || ext.length > path.length) {\n while (index--) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (ext === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extIndex = ext.length - 1\n\n while (index--) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extIndex > -1) {\n // Try to match the explicit extension.\n if (path.charCodeAt(index) === ext.charCodeAt(extIndex--)) {\n if (extIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\n/**\n * @param {string} path\n * @returns {string}\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean|undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.charCodeAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.charCodeAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * @param {string} path\n * @returns {string}\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean|undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.charCodeAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * @param {Array} segments\n * @returns {string}\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string|undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Note: `normalize` is not exposed as `path.normalize`, so some code is\n * manually removed from it.\n *\n * @param {string} path\n * @returns {string}\n */\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.charCodeAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.charCodeAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * @param {boolean} allowAboveRoot\n * @returns {string}\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number|undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.charCodeAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.charCodeAt(result.length - 1) !== 46 /* `.` */ ||\n result.charCodeAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * @param {string} path\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// .\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const proc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n","/**\n * @typedef URL\n * @property {string} hash\n * @property {string} host\n * @property {string} hostname\n * @property {string} href\n * @property {string} origin\n * @property {string} password\n * @property {string} pathname\n * @property {string} port\n * @property {string} protocol\n * @property {string} search\n * @property {any} searchParams\n * @property {string} username\n * @property {() => string} toString\n * @property {() => string} toJSON\n */\n\n/**\n * @param {unknown} fileURLOrPath\n * @returns {fileURLOrPath is URL}\n */\n// From: \nexport function isUrl(fileURLOrPath) {\n return (\n fileURLOrPath !== null &&\n typeof fileURLOrPath === 'object' &&\n // @ts-expect-error: indexable.\n fileURLOrPath.href &&\n // @ts-expect-error: indexable.\n fileURLOrPath.origin\n )\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {Record & {type: string, position?: Position|undefined}} NodeLike\n * @typedef {import('./minurl.shared.js').URL} URL\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n *\n * @typedef {'ascii'|'utf8'|'utf-8'|'utf16le'|'ucs2'|'ucs-2'|'base64'|'base64url'|'latin1'|'binary'|'hex'} BufferEncoding\n * Encodings supported by the buffer class.\n * This is a copy of the typing from Node, copied to prevent Node globals from\n * being needed.\n * Copied from: \n *\n * @typedef {Value|Options|VFile|URL} Compatible\n * Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n * @property {Value} [value]\n * @property {string} [cwd]\n * @property {Array} [history]\n * @property {string|URL} [path]\n * @property {string} [basename]\n * @property {string} [stem]\n * @property {string} [extname]\n * @property {string} [dirname]\n * @property {Data} [data]\n *\n * @typedef Map\n * Raw source map, see:\n * .\n * @property {number} version\n * @property {Array} sources\n * @property {Array} names\n * @property {string|undefined} [sourceRoot]\n * @property {Array|undefined} [sourcesContent]\n * @property {string} mappings\n * @property {string} file\n *\n * @typedef {{[key: string]: unknown} & VFileCoreOptions} Options\n * Configuration: a bunch of keys that will be shallow copied over to the new\n * file.\n *\n * @typedef {Record} ReporterSettings\n * @typedef {(files: Array, options: T) => string} Reporter\n */\n\nimport buffer from 'is-buffer'\nimport {VFileMessage} from 'vfile-message'\nimport {path} from './minpath.js'\nimport {proc} from './minproc.js'\nimport {urlToPath, isUrl} from './minurl.js'\n\n// Order of setting (least specific to most), we need this because otherwise\n// `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n// stem can be set.\nconst order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname']\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * If `options` is `string` or `Buffer`, it’s treated as `{value: options}`.\n * If `options` is a `URL`, it’s treated as `{path: options}`.\n * If `options` is a `VFile`, shallow copies its data over to the new file.\n * All fields in `options` are set on the newly created `VFile`.\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * It’s not possible to set either `dirname` or `extname` without setting\n * either `history`, `path`, `basename`, or `stem` as well.\n *\n * @param {Compatible} [value]\n */\n constructor(value) {\n /** @type {Options} */\n let options\n\n if (!value) {\n options = {}\n } else if (typeof value === 'string' || buffer(value)) {\n // @ts-expect-error Looks like a buffer.\n options = {value}\n } else if (isUrl(value)) {\n options = {path: value}\n } else {\n // @ts-expect-error Looks like file or options.\n options = value\n }\n\n /**\n * Place to store custom information (default: `{}`).\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of messages associated with the file.\n * @type {Array}\n */\n this.messages = []\n\n /**\n * List of filepaths the file moved between.\n * The first is the original path and the last is the current path.\n * @type {Array}\n */\n this.history = []\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n * @type {string}\n */\n this.cwd = proc.cwd()\n\n /* eslint-disable no-unused-expressions */\n /**\n * Raw value.\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n\n /**\n * Whether a file was saved to disk.\n * This is used by vfile reporters.\n * @type {boolean}\n */\n this.stored\n\n /**\n * Sometimes files have a non-string, compiled, representation.\n * This can be stored in the `result` field.\n * One example is when turning markdown into React nodes.\n * This is used by unified to store non-string results.\n * @type {unknown}\n */\n this.result\n\n /**\n * Sometimes files have a source map associated with them.\n * This can be stored in the `map` field.\n * This should be a `Map` type, which is equivalent to the `RawSourceMap`\n * type from the `source-map` module.\n * @type {Map|undefined}\n */\n this.map\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const prop = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (prop in options && options[prop] !== undefined) {\n // @ts-expect-error: TS is confused by the different types for `history`.\n this[prop] = prop === 'history' ? [...options[prop]] : options[prop]\n }\n }\n\n /** @type {string} */\n let prop\n\n // Set non-path related properties.\n for (prop in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(prop)) this[prop] = options[prop]\n }\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n * @returns {string}\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n * @param {string|URL} path\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the parent path (example: `'~'`).\n */\n get dirname() {\n return typeof this.path === 'string' ? path.dirname(this.path) : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n * Cannot be set if there’s no `path` yet.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = path.join(dirname || '', this.basename)\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n */\n get basename() {\n return typeof this.path === 'string' ? path.basename(this.path) : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = path.join(this.dirname || '', basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n */\n get extname() {\n return typeof this.path === 'string' ? path.extname(this.path) : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.charCodeAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = path.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n */\n get stem() {\n return typeof this.path === 'string'\n ? path.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = path.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n /**\n * Serialize the file.\n *\n * @param {BufferEncoding} [encoding='utf8']\n * When `value` is a `Buffer`, `encoding` is a character encoding to\n * understand it as (default: `'utf8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n return (this.value || '').toString(encoding)\n }\n\n /**\n * Constructs a new `VFileMessage`, where `fatal` is set to `false`, and\n * associates it with the file by adding it to `vfile.messages` and setting\n * `message.file` to the current filepath.\n *\n * @param {string|Error} reason\n * Human readable reason for the message, uses the stack and message of the error if given.\n * @param {Node|NodeLike|Position|Point} [place]\n * Place where the message occurred in the file.\n * @param {string} [origin]\n * Computer readable reason for the message\n * @returns {VFileMessage}\n * Message.\n */\n message(reason, place, origin) {\n const message = new VFileMessage(reason, place, origin)\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Like `VFile#message()`, but associates an informational message where\n * `fatal` is set to `null`.\n *\n * @param {string|Error} reason\n * Human readable reason for the message, uses the stack and message of the error if given.\n * @param {Node|NodeLike|Position|Point} [place]\n * Place where the message occurred in the file.\n * @param {string} [origin]\n * Computer readable reason for the message\n * @returns {VFileMessage}\n * Message.\n */\n info(reason, place, origin) {\n const message = this.message(reason, place, origin)\n\n message.fatal = null\n\n return message\n }\n\n /**\n * Like `VFile#message()`, but associates a fatal message where `fatal` is\n * set to `true`, and then immediately throws it.\n *\n * > 👉 **Note**: a fatal error means that a file is no longer processable.\n *\n * @param {string|Error} reason\n * Human readable reason for the message, uses the stack and message of the error if given.\n * @param {Node|NodeLike|Position|Point} [place]\n * Place where the message occurred in the file.\n * @param {string} [origin]\n * Computer readable reason for the message\n * @returns {never}\n * Message.\n */\n fail(reason, place, origin) {\n const message = this.message(reason, place, origin)\n\n message.fatal = true\n\n throw message\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string|undefined} part\n * @param {string} name\n * @returns {void}\n */\nfunction assertPart(part, name) {\n if (part && part.includes(path.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + path.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string|undefined} part\n * @param {string} name\n * @returns {asserts part is string}\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string|undefined} path\n * @param {string} name\n * @returns {asserts path is string}\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n","/// \n\nimport {isUrl} from './minurl.shared.js'\n\n// See: \n\n/**\n * @param {string|URL} path\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * @param {URL} url\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.charCodeAt(index) === 37 /* `%` */ &&\n pathname.charCodeAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.charCodeAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n\nexport {isUrl} from './minurl.shared.js'\n","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('vfile').VFileCompatible} VFileCompatible\n * @typedef {import('vfile').VFileValue} VFileValue\n * @typedef {import('..').Processor} Processor\n * @typedef {import('..').Plugin} Plugin\n * @typedef {import('..').Preset} Preset\n * @typedef {import('..').Pluggable} Pluggable\n * @typedef {import('..').PluggableList} PluggableList\n * @typedef {import('..').Transformer} Transformer\n * @typedef {import('..').Parser} Parser\n * @typedef {import('..').Compiler} Compiler\n * @typedef {import('..').RunCallback} RunCallback\n * @typedef {import('..').ProcessCallback} ProcessCallback\n *\n * @typedef Context\n * @property {Node} tree\n * @property {VFile} file\n */\n\nimport {bail} from 'bail'\nimport isBuffer from 'is-buffer'\nimport extend from 'extend'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\n\n// Expose a frozen processor.\nexport const unified = base().freeze()\n\nconst own = {}.hasOwnProperty\n\n// Function to create the first processor.\n/**\n * @returns {Processor}\n */\nfunction base() {\n const transformers = trough()\n /** @type {Processor['attachers']} */\n const attachers = []\n /** @type {Record} */\n let namespace = {}\n /** @type {boolean|undefined} */\n let frozen\n let freezeIndex = -1\n\n // Data management.\n // @ts-expect-error: overloads are handled.\n processor.data = data\n processor.Parser = undefined\n processor.Compiler = undefined\n\n // Lock.\n processor.freeze = freeze\n\n // Plugins.\n processor.attachers = attachers\n // @ts-expect-error: overloads are handled.\n processor.use = use\n\n // API.\n processor.parse = parse\n processor.stringify = stringify\n // @ts-expect-error: overloads are handled.\n processor.run = run\n processor.runSync = runSync\n // @ts-expect-error: overloads are handled.\n processor.process = process\n processor.processSync = processSync\n\n // Expose.\n return processor\n\n // Create a new processor based on the processor in the current scope.\n /** @type {Processor} */\n function processor() {\n const destination = base()\n let index = -1\n\n while (++index < attachers.length) {\n destination.use(...attachers[index])\n }\n\n destination.data(extend(true, {}, namespace))\n\n return destination\n }\n\n /**\n * @param {string|Record} [key]\n * @param {unknown} [value]\n * @returns {unknown}\n */\n function data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', frozen)\n namespace[key] = value\n return processor\n }\n\n // Get `key`.\n return (own.call(namespace, key) && namespace[key]) || null\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', frozen)\n namespace = key\n return processor\n }\n\n // Get space.\n return namespace\n }\n\n /** @type {Processor['freeze']} */\n function freeze() {\n if (frozen) {\n return processor\n }\n\n while (++freezeIndex < attachers.length) {\n const [attacher, ...options] = attachers[freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n /** @type {Transformer|void} */\n const transformer = attacher.call(processor, ...options)\n\n if (typeof transformer === 'function') {\n transformers.use(transformer)\n }\n }\n\n frozen = true\n freezeIndex = Number.POSITIVE_INFINITY\n\n return processor\n }\n\n /**\n * @param {Pluggable|null|undefined} [value]\n * @param {...unknown} options\n * @returns {Processor}\n */\n function use(value, ...options) {\n /** @type {Record|undefined} */\n let settings\n\n assertUnfrozen('use', frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, ...options)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n if (settings) {\n namespace.settings = Object.assign(namespace.settings || {}, settings)\n }\n\n return processor\n\n /**\n * @param {import('..').Pluggable} value\n * @returns {void}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...options] = value\n addPlugin(plugin, ...options)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {void}\n */\n function addPreset(result) {\n addList(result.plugins)\n\n if (result.settings) {\n settings = Object.assign(settings || {}, result.settings)\n }\n }\n\n /**\n * @param {PluggableList|null|undefined} [plugins]\n * @returns {void}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {...unknown} [value]\n * @returns {void}\n */\n function addPlugin(plugin, value) {\n let index = -1\n /** @type {Processor['attachers'][number]|undefined} */\n let entry\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entry = attachers[index]\n break\n }\n }\n\n if (entry) {\n if (isPlainObj(entry[1]) && isPlainObj(value)) {\n value = extend(true, entry[1], value)\n }\n\n entry[1] = value\n } else {\n // @ts-expect-error: fine.\n attachers.push([...arguments])\n }\n }\n }\n\n /** @type {Processor['parse']} */\n function parse(doc) {\n processor.freeze()\n const file = vfile(doc)\n const Parser = processor.Parser\n assertParser('parse', Parser)\n\n if (newable(Parser, 'parse')) {\n // @ts-expect-error: `newable` checks this.\n return new Parser(String(file), file).parse()\n }\n\n // @ts-expect-error: `newable` checks this.\n return Parser(String(file), file) // eslint-disable-line new-cap\n }\n\n /** @type {Processor['stringify']} */\n function stringify(node, doc) {\n processor.freeze()\n const file = vfile(doc)\n const Compiler = processor.Compiler\n assertCompiler('stringify', Compiler)\n assertNode(node)\n\n if (newable(Compiler, 'compile')) {\n // @ts-expect-error: `newable` checks this.\n return new Compiler(node, file).compile()\n }\n\n // @ts-expect-error: `newable` checks this.\n return Compiler(node, file) // eslint-disable-line new-cap\n }\n\n /**\n * @param {Node} node\n * @param {VFileCompatible|RunCallback} [doc]\n * @param {RunCallback} [callback]\n * @returns {Promise|void}\n */\n function run(node, doc, callback) {\n assertNode(node)\n processor.freeze()\n\n if (!callback && typeof doc === 'function') {\n callback = doc\n doc = undefined\n }\n\n if (!callback) {\n return new Promise(executor)\n }\n\n executor(null, callback)\n\n /**\n * @param {null|((node: Node) => void)} resolve\n * @param {(error: Error) => void} reject\n * @returns {void}\n */\n function executor(resolve, reject) {\n // @ts-expect-error: `doc` can’t be a callback anymore, we checked.\n transformers.run(node, vfile(doc), done)\n\n /**\n * @param {Error|null} error\n * @param {Node} tree\n * @param {VFile} file\n * @returns {void}\n */\n function done(error, tree, file) {\n tree = tree || node\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(tree)\n } else {\n // @ts-expect-error: `callback` is defined if `resolve` is not.\n callback(null, tree, file)\n }\n }\n }\n }\n\n /** @type {Processor['runSync']} */\n function runSync(node, file) {\n /** @type {Node|undefined} */\n let result\n /** @type {boolean|undefined} */\n let complete\n\n processor.run(node, file, done)\n\n assertDone('runSync', 'run', complete)\n\n // @ts-expect-error: we either bailed on an error or have a tree.\n return result\n\n /**\n * @param {Error|null} [error]\n * @param {Node} [tree]\n * @returns {void}\n */\n function done(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * @param {VFileCompatible} doc\n * @param {ProcessCallback} [callback]\n * @returns {Promise|undefined}\n */\n function process(doc, callback) {\n processor.freeze()\n assertParser('process', processor.Parser)\n assertCompiler('process', processor.Compiler)\n\n if (!callback) {\n return new Promise(executor)\n }\n\n executor(null, callback)\n\n /**\n * @param {null|((file: VFile) => void)} resolve\n * @param {(error?: Error|null|undefined) => void} reject\n * @returns {void}\n */\n function executor(resolve, reject) {\n const file = vfile(doc)\n\n processor.run(processor.parse(file), file, (error, tree, file) => {\n if (error || !tree || !file) {\n done(error)\n } else {\n /** @type {unknown} */\n const result = processor.stringify(tree, file)\n\n if (result === undefined || result === null) {\n // Empty.\n } else if (looksLikeAVFileValue(result)) {\n file.value = result\n } else {\n file.result = result\n }\n\n done(error, file)\n }\n })\n\n /**\n * @param {Error|null|undefined} [error]\n * @param {VFile|undefined} [file]\n * @returns {void}\n */\n function done(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n // @ts-expect-error: `callback` is defined if `resolve` is not.\n callback(null, file)\n }\n }\n }\n }\n\n /** @type {Processor['processSync']} */\n function processSync(doc) {\n /** @type {boolean|undefined} */\n let complete\n\n processor.freeze()\n assertParser('processSync', processor.Parser)\n assertCompiler('processSync', processor.Compiler)\n\n const file = vfile(doc)\n\n processor.process(file, done)\n\n assertDone('processSync', 'process', complete)\n\n return file\n\n /**\n * @param {Error|null|undefined} [error]\n * @returns {void}\n */\n function done(error) {\n complete = true\n bail(error)\n }\n }\n}\n\n/**\n * Check if `value` is a constructor.\n *\n * @param {unknown} value\n * @param {string} name\n * @returns {boolean}\n */\nfunction newable(value, name) {\n return (\n typeof value === 'function' &&\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n value.prototype &&\n // A function with keys in its prototype is probably a constructor.\n // Classes’ prototype methods are not enumerable, so we check if some value\n // exists in the prototype.\n // type-coverage:ignore-next-line\n (keys(value.prototype) || name in value.prototype)\n )\n}\n\n/**\n * Check if `value` is an object with keys.\n *\n * @param {Record} value\n * @returns {boolean}\n */\nfunction keys(value) {\n /** @type {string} */\n let key\n\n for (key in value) {\n if (own.call(value, key)) {\n return true\n }\n }\n\n return false\n}\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `Parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `Compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {VFileCompatible} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {VFileCompatible} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is VFileValue}\n */\nfunction looksLikeAVFileValue(value) {\n return typeof value === 'string' || isBuffer(value)\n}\n","// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array) => void} Callback\n * Callback.\n *\n * @typedef {(...input: Array) => any} Middleware\n * Ware.\n *\n * @typedef Pipeline\n * Pipeline.\n * @property {Run} run\n * Run the pipeline.\n * @property {Use} use\n * Add middleware.\n *\n * @typedef {(...input: Array) => void} Run\n * Call all middleware.\n *\n * Calls `done` on completion with either an error or the output of the\n * last middleware.\n *\n * > 👉 **Note**: as the length of input defines whether async functions get a\n * > `next` function,\n * > it’s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n * Pipeline.\n */\nexport function trough() {\n /** @type {Array} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we’re done.\n *\n * @param {Error | null | undefined} error\n * @param {Array} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n * returns a promise that is rejected,\n * or calls the given `done` function with an error,\n * `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n * that value is the main output value\n * * if `middleware` calls `done`,\n * all non-nullish values except for the first one (the error) overwrite the\n * output values\n *\n * @param {Middleware} middleware\n * Function to wrap.\n * @param {Callback} callback\n * Callback called with the output of `middleware`.\n * @returns {Run}\n * Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result && result.then && typeof result.then === 'function') {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n *\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n","/**\n * @typedef Options\n * @property {boolean} [includeImageAlt=true]\n */\n\n/**\n * Get the text content of a node.\n * Prefer the node’s plain-text fields, otherwise serialize its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} node\n * @param {Options} [options]\n * @returns {string}\n */\nexport function toString(node, options) {\n var {includeImageAlt = true} = options || {}\n return one(node, includeImageAlt)\n}\n\n/**\n * @param {unknown} node\n * @param {boolean} includeImageAlt\n * @returns {string}\n */\nfunction one(node, includeImageAlt) {\n return (\n (node &&\n typeof node === 'object' &&\n // @ts-ignore looks like a literal.\n (node.value ||\n // @ts-ignore looks like an image.\n (includeImageAlt ? node.alt : '') ||\n // @ts-ignore looks like a parent.\n ('children' in node && all(node.children, includeImageAlt)) ||\n (Array.isArray(node) && all(node, includeImageAlt)))) ||\n ''\n )\n}\n\n/**\n * @param {Array.} values\n * @param {boolean} includeImageAlt\n * @returns {string}\n */\nfunction all(values, includeImageAlt) {\n /** @type {Array.} */\n var result = []\n var index = -1\n\n while (++index < values.length) {\n result[index] = one(values[index], includeImageAlt)\n }\n\n return result.join('')\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {InitialConstruct} */\nexport const content = {\n tokenize: initializeContent\n}\n/** @type {Initializer} */\n\nfunction initializeContent(effects) {\n const contentStart = effects.attempt(\n this.parser.constructs.contentInitial,\n afterContentStartConstruct,\n paragraphInitial\n )\n /** @type {Token} */\n\n let previous\n return contentStart\n /** @type {State} */\n\n function afterContentStartConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, contentStart, 'linePrefix')\n }\n /** @type {State} */\n\n function paragraphInitial(code) {\n effects.enter('paragraph')\n return lineStart(code)\n }\n /** @type {State} */\n\n function lineStart(code) {\n const token = effects.enter('chunkText', {\n contentType: 'text',\n previous\n })\n\n if (previous) {\n previous.next = token\n }\n\n previous = token\n return data(code)\n }\n /** @type {State} */\n\n function data(code) {\n if (code === null) {\n effects.exit('chunkText')\n effects.exit('paragraph')\n effects.consume(code)\n return\n }\n\n if (markdownLineEnding(code)) {\n effects.consume(code)\n effects.exit('chunkText')\n return lineStart\n } // Data.\n\n effects.consume(code)\n return data\n }\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Point} Point\n */\n\n/**\n * @typedef {Record} StackState\n * @typedef {[Construct, StackState]} StackItem\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n/** @type {InitialConstruct} */\n\nexport const document = {\n tokenize: initializeDocument\n}\n/** @type {Construct} */\n\nconst containerConstruct = {\n tokenize: tokenizeContainer\n}\n/** @type {Initializer} */\n\nfunction initializeDocument(effects) {\n const self = this\n /** @type {Array} */\n\n const stack = []\n let continued = 0\n /** @type {TokenizeContext|undefined} */\n\n let childFlow\n /** @type {Token|undefined} */\n\n let childToken\n /** @type {number} */\n\n let lineStartOffset\n return start\n /** @type {State} */\n\n function start(code) {\n // First we iterate through the open blocks, starting with the root\n // document, and descending through last children down to the last open\n // block.\n // Each block imposes a condition that the line must satisfy if the block is\n // to remain open.\n // For example, a block quote requires a `>` character.\n // A paragraph requires a non-blank line.\n // In this phase we may match all or just some of the open blocks.\n // But we cannot close unmatched blocks yet, because we may have a lazy\n // continuation line.\n if (continued < stack.length) {\n const item = stack[continued]\n self.containerState = item[1]\n return effects.attempt(\n item[0].continuation,\n documentContinue,\n checkNewContainers\n )(code)\n } // Done.\n\n return checkNewContainers(code)\n }\n /** @type {State} */\n\n function documentContinue(code) {\n continued++ // Note: this field is called `_closeFlow` but it also closes containers.\n // Perhaps a good idea to rename it but it’s already used in the wild by\n // extensions.\n\n if (self.containerState._closeFlow) {\n self.containerState._closeFlow = undefined\n\n if (childFlow) {\n closeFlow()\n } // Note: this algorithm for moving events around is similar to the\n // algorithm when dealing with lazy lines in `writeToChild`.\n\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {Point|undefined} */\n\n let point // Find the flow chunk.\n\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === 'chunkFlow'\n ) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n }\n\n exitContainers(continued) // Fix positions.\n\n let index = indexBeforeExits\n\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n } // Inject the exits earlier (they’re still also at the end).\n\n splice(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n ) // Discard the duplicate exits.\n\n self.events.length = index\n return checkNewContainers(code)\n }\n\n return start(code)\n }\n /** @type {State} */\n\n function checkNewContainers(code) {\n // Next, after consuming the continuation markers for existing blocks, we\n // look for new block starts (e.g. `>` for a block quote).\n // If we encounter a new block start, we close any blocks unmatched in\n // step 1 before creating the new block as a child of the last matched\n // block.\n if (continued === stack.length) {\n // No need to `check` whether there’s a container, of `exitContainers`\n // would be moot.\n // We can instead immediately `attempt` to parse one.\n if (!childFlow) {\n return documentContinued(code)\n } // If we have concrete content, such as block HTML or fenced code,\n // we can’t have containers “pierce” into them, so we can immediately\n // start.\n\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n return flowStart(code)\n } // If we do have flow, it could still be a blank line,\n // but we’d be interrupting it w/ a new container if there’s a current\n // construct.\n\n self.interrupt = Boolean(\n childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack\n )\n } // Check if there is a new container.\n\n self.containerState = {}\n return effects.check(\n containerConstruct,\n thereIsANewContainer,\n thereIsNoNewContainer\n )(code)\n }\n /** @type {State} */\n\n function thereIsANewContainer(code) {\n if (childFlow) closeFlow()\n exitContainers(continued)\n return documentContinued(code)\n }\n /** @type {State} */\n\n function thereIsNoNewContainer(code) {\n self.parser.lazy[self.now().line] = continued !== stack.length\n lineStartOffset = self.now().offset\n return flowStart(code)\n }\n /** @type {State} */\n\n function documentContinued(code) {\n // Try new containers.\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n containerContinue,\n flowStart\n )(code)\n }\n /** @type {State} */\n\n function containerContinue(code) {\n continued++\n stack.push([self.currentConstruct, self.containerState]) // Try another.\n\n return documentContinued(code)\n }\n /** @type {State} */\n\n function flowStart(code) {\n if (code === null) {\n if (childFlow) closeFlow()\n exitContainers(0)\n effects.consume(code)\n return\n }\n\n childFlow = childFlow || self.parser.flow(self.now())\n effects.enter('chunkFlow', {\n contentType: 'flow',\n previous: childToken,\n _tokenizer: childFlow\n })\n return flowContinue(code)\n }\n /** @type {State} */\n\n function flowContinue(code) {\n if (code === null) {\n writeToChild(effects.exit('chunkFlow'), true)\n exitContainers(0)\n effects.consume(code)\n return\n }\n\n if (markdownLineEnding(code)) {\n effects.consume(code)\n writeToChild(effects.exit('chunkFlow')) // Get ready for the next line.\n\n continued = 0\n self.interrupt = undefined\n return start\n }\n\n effects.consume(code)\n return flowContinue\n }\n /**\n * @param {Token} token\n * @param {boolean} [eof]\n * @returns {void}\n */\n\n function writeToChild(token, eof) {\n const stream = self.sliceStream(token)\n if (eof) stream.push(null)\n token.previous = childToken\n if (childToken) childToken.next = token\n childToken = token\n childFlow.defineSkip(token.start)\n childFlow.write(stream) // Alright, so we just added a lazy line:\n //\n // ```markdown\n // > a\n // b.\n //\n // Or:\n //\n // > ~~~c\n // d\n //\n // Or:\n //\n // > | e |\n // f\n // ```\n //\n // The construct in the second example (fenced code) does not accept lazy\n // lines, so it marked itself as done at the end of its first line, and\n // then the content construct parses `d`.\n // Most constructs in markdown match on the first line: if the first line\n // forms a construct, a non-lazy line can’t “unmake” it.\n //\n // The construct in the third example is potentially a GFM table, and\n // those are *weird*.\n // It *could* be a table, from the first line, if the following line\n // matches a condition.\n // In this case, that second line is lazy, which “unmakes” the first line\n // and turns the whole into one content block.\n //\n // We’ve now parsed the non-lazy and the lazy line, and can figure out\n // whether the lazy line started a new flow block.\n // If it did, we exit the current containers between the two flow blocks.\n\n if (self.parser.lazy[token.start.line]) {\n let index = childFlow.events.length\n\n while (index--) {\n if (\n // The token starts before the line ending…\n childFlow.events[index][1].start.offset < lineStartOffset && // …and either is not ended yet…\n (!childFlow.events[index][1].end || // …or ends after it.\n childFlow.events[index][1].end.offset > lineStartOffset)\n ) {\n // Exit: there’s still something open, which means it’s a lazy line\n // part of something.\n return\n }\n } // Note: this algorithm for moving events around is similar to the\n // algorithm when closing flow in `documentContinue`.\n\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {boolean|undefined} */\n\n let seen\n /** @type {Point|undefined} */\n\n let point // Find the previous chunk (the one before the lazy line).\n\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === 'chunkFlow'\n ) {\n if (seen) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n\n seen = true\n }\n }\n\n exitContainers(continued) // Fix positions.\n\n index = indexBeforeExits\n\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n } // Inject the exits earlier (they’re still also at the end).\n\n splice(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n ) // Discard the duplicate exits.\n\n self.events.length = index\n }\n }\n /**\n * @param {number} size\n * @returns {void}\n */\n\n function exitContainers(size) {\n let index = stack.length // Exit open containers.\n\n while (index-- > size) {\n const entry = stack[index]\n self.containerState = entry[1]\n entry[0].exit.call(self, effects)\n }\n\n stack.length = size\n }\n\n function closeFlow() {\n childFlow.write([null])\n childToken = undefined\n childFlow = undefined\n self.containerState._closeFlow = undefined\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContainer(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.attempt(this.parser.constructs.document, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4\n )\n}\n","/**\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Event} Event\n */\nimport {splice} from 'micromark-util-chunked'\n\n/**\n * Tokenize subcontent.\n *\n * @param {Event[]} events\n * @returns {boolean}\n */\nexport function subtokenize(events) {\n /** @type {Record} */\n const jumps = {}\n let index = -1\n /** @type {Event} */\n\n let event\n /** @type {number|undefined} */\n\n let lineIndex\n /** @type {number} */\n\n let otherIndex\n /** @type {Event} */\n\n let otherEvent\n /** @type {Event[]} */\n\n let parameters\n /** @type {Event[]} */\n\n let subevents\n /** @type {boolean|undefined} */\n\n let more\n\n while (++index < events.length) {\n while (index in jumps) {\n index = jumps[index]\n }\n\n event = events[index] // Add a hook for the GFM tasklist extension, which needs to know if text\n // is in the first content of a list item.\n\n if (\n index &&\n event[1].type === 'chunkFlow' &&\n events[index - 1][1].type === 'listItemPrefix'\n ) {\n subevents = event[1]._tokenizer.events\n otherIndex = 0\n\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'lineEndingBlank'\n ) {\n otherIndex += 2\n }\n\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'content'\n ) {\n while (++otherIndex < subevents.length) {\n if (subevents[otherIndex][1].type === 'content') {\n break\n }\n\n if (subevents[otherIndex][1].type === 'chunkText') {\n subevents[otherIndex][1]._isInFirstContentOfListItem = true\n otherIndex++\n }\n }\n }\n } // Enter.\n\n if (event[0] === 'enter') {\n if (event[1].contentType) {\n Object.assign(jumps, subcontent(events, index))\n index = jumps[index]\n more = true\n }\n } // Exit.\n else if (event[1]._container) {\n otherIndex = index\n lineIndex = undefined\n\n while (otherIndex--) {\n otherEvent = events[otherIndex]\n\n if (\n otherEvent[1].type === 'lineEnding' ||\n otherEvent[1].type === 'lineEndingBlank'\n ) {\n if (otherEvent[0] === 'enter') {\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n }\n\n otherEvent[1].type = 'lineEnding'\n lineIndex = otherIndex\n }\n } else {\n break\n }\n }\n\n if (lineIndex) {\n // Fix position.\n event[1].end = Object.assign({}, events[lineIndex][1].start) // Switch container exit w/ line endings.\n\n parameters = events.slice(lineIndex, index)\n parameters.unshift(event)\n splice(events, lineIndex, index - lineIndex + 1, parameters)\n }\n }\n }\n\n return !more\n}\n/**\n * Tokenize embedded tokens.\n *\n * @param {Event[]} events\n * @param {number} eventIndex\n * @returns {Record}\n */\n\nfunction subcontent(events, eventIndex) {\n const token = events[eventIndex][1]\n const context = events[eventIndex][2]\n let startPosition = eventIndex - 1\n /** @type {number[]} */\n\n const startPositions = []\n const tokenizer =\n token._tokenizer || context.parser[token.contentType](token.start)\n const childEvents = tokenizer.events\n /** @type {[number, number][]} */\n\n const jumps = []\n /** @type {Record} */\n\n const gaps = {}\n /** @type {Chunk[]} */\n\n let stream\n /** @type {Token|undefined} */\n\n let previous\n let index = -1\n /** @type {Token|undefined} */\n\n let current = token\n let adjust = 0\n let start = 0\n const breaks = [start] // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n\n while (current) {\n // Find the position of the event for this token.\n while (events[++startPosition][1] !== current) {\n // Empty.\n }\n\n startPositions.push(startPosition)\n\n if (!current._tokenizer) {\n stream = context.sliceStream(current)\n\n if (!current.next) {\n stream.push(null)\n }\n\n if (previous) {\n tokenizer.defineSkip(current.start)\n }\n\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true\n }\n\n tokenizer.write(stream)\n\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined\n }\n } // Unravel the next token.\n\n previous = current\n current = current.next\n } // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n\n current = token\n\n while (++index < childEvents.length) {\n if (\n // Find a void token that includes a break.\n childEvents[index][0] === 'exit' &&\n childEvents[index - 1][0] === 'enter' &&\n childEvents[index][1].type === childEvents[index - 1][1].type &&\n childEvents[index][1].start.line !== childEvents[index][1].end.line\n ) {\n start = index + 1\n breaks.push(start) // Help GC.\n\n current._tokenizer = undefined\n current.previous = undefined\n current = current.next\n }\n } // Help GC.\n\n tokenizer.events = [] // If there’s one more token (which is the cases for lines that end in an\n // EOF), that’s perfect: the last point we found starts it.\n // If there isn’t then make sure any remaining content is added to it.\n\n if (current) {\n // Help GC.\n current._tokenizer = undefined\n current.previous = undefined\n } else {\n breaks.pop()\n } // Now splice the events from the subtokenizer into the current events,\n // moving back to front so that splice indices aren’t affected.\n\n index = breaks.length\n\n while (index--) {\n const slice = childEvents.slice(breaks[index], breaks[index + 1])\n const start = startPositions.pop()\n jumps.unshift([start, start + slice.length - 1])\n splice(events, start, 2, slice)\n }\n\n index = -1\n\n while (++index < jumps.length) {\n gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]\n adjust += jumps[index][1] - jumps[index][0] - 1\n }\n\n return gaps\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nexport const content = {\n tokenize: tokenizeContent,\n resolve: resolveContent\n}\n/** @type {Construct} */\n\nconst continuationConstruct = {\n tokenize: tokenizeContinuation,\n partial: true\n}\n/**\n * Content is transparent: it’s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\n\nfunction resolveContent(events) {\n subtokenize(events)\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContent(effects, ok) {\n /** @type {Token} */\n let previous\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('content')\n previous = effects.enter('chunkContent', {\n contentType: 'content'\n })\n return data(code)\n }\n /** @type {State} */\n\n function data(code) {\n if (code === null) {\n return contentEnd(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.check(\n continuationConstruct,\n contentContinue,\n contentEnd\n )(code)\n } // Data.\n\n effects.consume(code)\n return data\n }\n /** @type {State} */\n\n function contentEnd(code) {\n effects.exit('chunkContent')\n effects.exit('content')\n return ok(code)\n }\n /** @type {State} */\n\n function contentContinue(code) {\n effects.consume(code)\n effects.exit('chunkContent')\n previous.next = effects.enter('chunkContent', {\n contentType: 'content',\n previous\n })\n previous = previous.next\n return data\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContinuation(effects, ok, nok) {\n const self = this\n return startLookahead\n /** @type {State} */\n\n function startLookahead(code) {\n effects.exit('chunkContent')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, prefixed, 'linePrefix')\n }\n /** @type {State} */\n\n function prefixed(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n const tail = self.events[self.events.length - 1]\n\n if (\n !self.parser.constructs.disable.null.includes('codeIndented') &&\n tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ) {\n return ok(code)\n }\n\n return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {blankLine, content} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {InitialConstruct} */\nexport const flow = {\n tokenize: initializeFlow\n}\n/** @type {Initializer} */\n\nfunction initializeFlow(effects) {\n const self = this\n const initial = effects.attempt(\n // Try to parse a blank line.\n blankLine,\n atBlankEnding, // Try to parse initial flow (essentially, only code).\n effects.attempt(\n this.parser.constructs.flowInitial,\n afterConstruct,\n factorySpace(\n effects,\n effects.attempt(\n this.parser.constructs.flow,\n afterConstruct,\n effects.attempt(content, afterConstruct)\n ),\n 'linePrefix'\n )\n )\n )\n return initial\n /** @type {State} */\n\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n self.currentConstruct = undefined\n return initial\n }\n /** @type {State} */\n\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n self.currentConstruct = undefined\n return initial\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nexport const resolver = {\n resolveAll: createResolver()\n}\nexport const string = initializeFactory('string')\nexport const text = initializeFactory('text')\n/**\n * @param {'string'|'text'} field\n * @returns {InitialConstruct}\n */\n\nfunction initializeFactory(field) {\n return {\n tokenize: initializeText,\n resolveAll: createResolver(\n field === 'text' ? resolveAllLineSuffixes : undefined\n )\n }\n /** @type {Initializer} */\n\n function initializeText(effects) {\n const self = this\n const constructs = this.parser.constructs[field]\n const text = effects.attempt(constructs, start, notText)\n return start\n /** @type {State} */\n\n function start(code) {\n return atBreak(code) ? text(code) : notText(code)\n }\n /** @type {State} */\n\n function notText(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('data')\n effects.consume(code)\n return data\n }\n /** @type {State} */\n\n function data(code) {\n if (atBreak(code)) {\n effects.exit('data')\n return text(code)\n } // Data.\n\n effects.consume(code)\n return data\n }\n /**\n * @param {Code} code\n * @returns {boolean}\n */\n\n function atBreak(code) {\n if (code === null) {\n return true\n }\n\n const list = constructs[code]\n let index = -1\n\n if (list) {\n while (++index < list.length) {\n const item = list[index]\n\n if (!item.previous || item.previous.call(self, self.previous)) {\n return true\n }\n }\n }\n\n return false\n }\n }\n}\n/**\n * @param {Resolver} [extraResolver]\n * @returns {Resolver}\n */\n\nfunction createResolver(extraResolver) {\n return resolveAllText\n /** @type {Resolver} */\n\n function resolveAllText(events, context) {\n let index = -1\n /** @type {number|undefined} */\n\n let enter // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === 'data') {\n enter = index\n index++\n }\n } else if (!events[index] || events[index][1].type !== 'data') {\n // Don’t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n index = enter + 2\n }\n\n enter = undefined\n }\n }\n\n return extraResolver ? extraResolver(events, context) : events\n }\n}\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\n\nfunction resolveAllLineSuffixes(events, context) {\n let eventIndex = 0 // Skip first.\n\n while (++eventIndex <= events.length) {\n if (\n (eventIndex === events.length ||\n events[eventIndex][1].type === 'lineEnding') &&\n events[eventIndex - 1][1].type === 'data'\n ) {\n const data = events[eventIndex - 1][1]\n const chunks = context.sliceStream(data)\n let index = chunks.length\n let bufferIndex = -1\n let size = 0\n /** @type {boolean|undefined} */\n\n let tabs\n\n while (index--) {\n const chunk = chunks[index]\n\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length\n\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++\n bufferIndex--\n }\n\n if (bufferIndex) break\n bufferIndex = -1\n } // Number\n else if (chunk === -2) {\n tabs = true\n size++\n } else if (chunk === -1) {\n // Empty\n } else {\n // Replacement character, exit.\n index++\n break\n }\n }\n\n if (size) {\n const token = {\n type:\n eventIndex === events.length || tabs || size < 2\n ? 'lineSuffix'\n : 'hardBreakTrailing',\n start: {\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size,\n _index: data.start._index + index,\n _bufferIndex: index\n ? bufferIndex\n : data.start._bufferIndex + bufferIndex\n },\n end: Object.assign({}, data.end)\n }\n data.end = Object.assign({}, token.start)\n\n if (data.start.offset === data.end.offset) {\n Object.assign(data, token)\n } else {\n events.splice(\n eventIndex,\n 0,\n ['enter', token, context],\n ['exit', token, context]\n )\n eventIndex += 2\n }\n }\n\n eventIndex++\n }\n }\n\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n */\n\n/**\n * @typedef Info\n * @property {() => void} restore\n * @property {number} from\n *\n * @callback ReturnHandle\n * Handle a successful run.\n * @param {Construct} construct\n * @param {Info} info\n * @returns {void}\n */\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * @param {InitialConstruct} initialize\n * @param {Omit} [from]\n * @returns {TokenizeContext}\n */\nexport function createTokenizer(parser, initialize, from) {\n /** @type {Point} */\n let point = Object.assign(\n from\n ? Object.assign({}, from)\n : {\n line: 1,\n column: 1,\n offset: 0\n },\n {\n _index: 0,\n _bufferIndex: -1\n }\n )\n /** @type {Record} */\n\n const columnStart = {}\n /** @type {Array} */\n\n const resolveAllConstructs = []\n /** @type {Array} */\n\n let chunks = []\n /** @type {Array} */\n\n let stack = []\n /** @type {boolean|undefined} */\n\n let consumed = true\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\n */\n\n const effects = {\n consume,\n enter,\n exit,\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n })\n }\n /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\n */\n\n const context = {\n previous: null,\n code: null,\n containerState: {},\n events: [],\n parser,\n sliceStream,\n sliceSerialize,\n now,\n defineSkip,\n write\n }\n /**\n * The state function.\n *\n * @type {State|void}\n */\n\n let state = initialize.tokenize.call(context, effects)\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n\n let expectedCode\n\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize)\n }\n\n return context\n /** @type {TokenizeContext['write']} */\n\n function write(slice) {\n chunks = push(chunks, slice)\n main() // Exit if we’re not done, resolve might change stuff.\n\n if (chunks[chunks.length - 1] !== null) {\n return []\n }\n\n addResult(initialize, 0) // Otherwise, resolve, and exit.\n\n context.events = resolveAll(resolveAllConstructs, context.events, context)\n return context.events\n } //\n // Tools.\n //\n\n /** @type {TokenizeContext['sliceSerialize']} */\n\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs)\n }\n /** @type {TokenizeContext['sliceStream']} */\n\n function sliceStream(token) {\n return sliceChunks(chunks, token)\n }\n /** @type {TokenizeContext['now']} */\n\n function now() {\n return Object.assign({}, point)\n }\n /** @type {TokenizeContext['defineSkip']} */\n\n function defineSkip(value) {\n columnStart[value.line] = value.column\n accountForPotentialSkip()\n } //\n // State management.\n //\n\n /**\n * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n * `consume`).\n * Here is where we walk through the chunks, which either include strings of\n * several characters, or numerical character codes.\n * The reason to do this in a loop instead of a call is so the stack can\n * drain.\n *\n * @returns {void}\n */\n\n function main() {\n /** @type {number} */\n let chunkIndex\n\n while (point._index < chunks.length) {\n const chunk = chunks[point._index] // If we’re in a buffer chunk, loop through it.\n\n if (typeof chunk === 'string') {\n chunkIndex = point._index\n\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0\n }\n\n while (\n point._index === chunkIndex &&\n point._bufferIndex < chunk.length\n ) {\n go(chunk.charCodeAt(point._bufferIndex))\n }\n } else {\n go(chunk)\n }\n }\n }\n /**\n * Deal with one code.\n *\n * @param {Code} code\n * @returns {void}\n */\n\n function go(code) {\n consumed = undefined\n expectedCode = code\n state = state(code)\n }\n /** @type {Effects['consume']} */\n\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++\n point.column = 1\n point.offset += code === -3 ? 2 : 1\n accountForPotentialSkip()\n } else if (code !== -1) {\n point.column++\n point.offset++\n } // Not in a string chunk.\n\n if (point._bufferIndex < 0) {\n point._index++\n } else {\n point._bufferIndex++ // At end of string chunk.\n // @ts-expect-error Points w/ non-negative `_bufferIndex` reference\n // strings.\n\n if (point._bufferIndex === chunks[point._index].length) {\n point._bufferIndex = -1\n point._index++\n }\n } // Expose the previous character.\n\n context.previous = code // Mark as consumed.\n\n consumed = true\n }\n /** @type {Effects['enter']} */\n\n function enter(type, fields) {\n /** @type {Token} */\n // @ts-expect-error Patch instead of assign required fields to help GC.\n const token = fields || {}\n token.type = type\n token.start = now()\n context.events.push(['enter', token, context])\n stack.push(token)\n return token\n }\n /** @type {Effects['exit']} */\n\n function exit(type) {\n const token = stack.pop()\n token.end = now()\n context.events.push(['exit', token, context])\n return token\n }\n /**\n * Use results.\n *\n * @type {ReturnHandle}\n */\n\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from)\n }\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n\n function onsuccessfulcheck(_, info) {\n info.restore()\n }\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * @param {Record} [fields]\n */\n\n function constructFactory(onreturn, fields) {\n return hook\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Construct|Array|ConstructRecord} constructs\n * @param {State} returnState\n * @param {State} [bogusState]\n * @returns {State}\n */\n\n function hook(constructs, returnState, bogusState) {\n /** @type {Array} */\n let listOfConstructs\n /** @type {number} */\n\n let constructIndex\n /** @type {Construct} */\n\n let currentConstruct\n /** @type {Info} */\n\n let info\n return Array.isArray(constructs)\n ? /* c8 ignore next 1 */\n handleListOfConstructs(constructs)\n : 'tokenize' in constructs // @ts-expect-error Looks like a construct.\n ? handleListOfConstructs([constructs])\n : handleMapOfConstructs(constructs)\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * @returns {State}\n */\n\n function handleMapOfConstructs(map) {\n return start\n /** @type {State} */\n\n function start(code) {\n const def = code !== null && map[code]\n const all = code !== null && map.null\n const list = [\n // To do: add more extension tests.\n\n /* c8 ignore next 2 */\n ...(Array.isArray(def) ? def : def ? [def] : []),\n ...(Array.isArray(all) ? all : all ? [all] : [])\n ]\n return handleListOfConstructs(list)(code)\n }\n }\n /**\n * Handle a list of construct.\n *\n * @param {Array} list\n * @returns {State}\n */\n\n function handleListOfConstructs(list) {\n listOfConstructs = list\n constructIndex = 0\n\n if (list.length === 0) {\n return bogusState\n }\n\n return handleConstruct(list[constructIndex])\n }\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * @returns {State}\n */\n\n function handleConstruct(construct) {\n return start\n /** @type {State} */\n\n function start(code) {\n // To do: not needed to store if there is no bogus state, probably?\n // Currently doesn’t work because `inspect` in document does a check\n // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n // by not storing.\n info = store()\n currentConstruct = construct\n\n if (!construct.partial) {\n context.currentConstruct = construct\n }\n\n if (\n construct.name &&\n context.parser.constructs.disable.null.includes(construct.name)\n ) {\n return nok(code)\n }\n\n return construct.tokenize.call(\n // If we do have fields, create an object w/ `context` as its\n // prototype.\n // This allows a “live binding”, which is needed for `interrupt`.\n fields ? Object.assign(Object.create(context), fields) : context,\n effects,\n ok,\n nok\n )(code)\n }\n }\n /** @type {State} */\n\n function ok(code) {\n consumed = true\n onreturn(currentConstruct, info)\n return returnState\n }\n /** @type {State} */\n\n function nok(code) {\n consumed = true\n info.restore()\n\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex])\n }\n\n return bogusState\n }\n }\n }\n /**\n * @param {Construct} construct\n * @param {number} from\n * @returns {void}\n */\n\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct)\n }\n\n if (construct.resolve) {\n splice(\n context.events,\n from,\n context.events.length - from,\n construct.resolve(context.events.slice(from), context)\n )\n }\n\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context)\n }\n }\n /**\n * Store state.\n *\n * @returns {Info}\n */\n\n function store() {\n const startPoint = now()\n const startPrevious = context.previous\n const startCurrentConstruct = context.currentConstruct\n const startEventsIndex = context.events.length\n const startStack = Array.from(stack)\n return {\n restore,\n from: startEventsIndex\n }\n /**\n * Restore state.\n *\n * @returns {void}\n */\n\n function restore() {\n point = startPoint\n context.previous = startPrevious\n context.currentConstruct = startCurrentConstruct\n context.events.length = startEventsIndex\n stack = startStack\n accountForPotentialSkip()\n }\n }\n /**\n * Move the current point a bit forward in the line when it’s on a column\n * skip.\n *\n * @returns {void}\n */\n\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line]\n point.offset += columnStart[point.line] - 1\n }\n }\n}\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {Array} chunks\n * @param {Pick} token\n * @returns {Array}\n */\n\nfunction sliceChunks(chunks, token) {\n const startIndex = token.start._index\n const startBufferIndex = token.start._bufferIndex\n const endIndex = token.end._index\n const endBufferIndex = token.end._bufferIndex\n /** @type {Array} */\n\n let view\n\n if (startIndex === endIndex) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]\n } else {\n view = chunks.slice(startIndex, endIndex)\n\n if (startBufferIndex > -1) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view[0] = view[0].slice(startBufferIndex)\n }\n\n if (endBufferIndex > 0) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view.push(chunks[endIndex].slice(0, endBufferIndex))\n }\n }\n\n return view\n}\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {Array} chunks\n * @param {boolean} [expandTabs=false]\n * @returns {string}\n */\n\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1\n /** @type {Array} */\n\n const result = []\n /** @type {boolean|undefined} */\n\n let atTab\n\n while (++index < chunks.length) {\n const chunk = chunks[index]\n /** @type {string} */\n\n let value\n\n if (typeof chunk === 'string') {\n value = chunk\n } else\n switch (chunk) {\n case -5: {\n value = '\\r'\n break\n }\n\n case -4: {\n value = '\\n'\n break\n }\n\n case -3: {\n value = '\\r' + '\\n'\n break\n }\n\n case -2: {\n value = expandTabs ? ' ' : '\\t'\n break\n }\n\n case -1: {\n if (!expandTabs && atTab) continue\n value = ' '\n break\n }\n\n default: {\n // Currently only replacement character.\n value = String.fromCharCode(chunk)\n }\n }\n\n atTab = chunk === -2\n result.push(value)\n }\n\n return result.join('')\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeThematicBreak(effects, ok, nok) {\n let size = 0\n /** @type {NonNullable} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('thematicBreak')\n marker = code\n return atBreak(code)\n }\n /** @type {State} */\n\n function atBreak(code) {\n if (code === marker) {\n effects.enter('thematicBreakSequence')\n return sequence(code)\n }\n\n if (markdownSpace(code)) {\n return factorySpace(effects, atBreak, 'whitespace')(code)\n }\n\n if (size < 3 || (code !== null && !markdownLineEnding(code))) {\n return nok(code)\n }\n\n effects.exit('thematicBreak')\n return ok(code)\n }\n /** @type {State} */\n\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return sequence\n }\n\n effects.exit('thematicBreakSequence')\n return atBreak(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n/**\n * @typedef {Record & {marker: Code, type: string, size: number}} ListContainerState\n * @typedef {TokenizeContext & {containerState: ListContainerState}} TokenizeContextWithState\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {asciiDigit, markdownSpace} from 'micromark-util-character'\nimport {blankLine} from './blank-line.js'\nimport {thematicBreak} from './thematic-break.js'\n/** @type {Construct} */\n\nexport const list = {\n name: 'list',\n tokenize: tokenizeListStart,\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd\n}\n/** @type {Construct} */\n\nconst listItemPrefixWhitespaceConstruct = {\n tokenize: tokenizeListItemPrefixWhitespace,\n partial: true\n}\n/** @type {Construct} */\n\nconst indentConstruct = {\n tokenize: tokenizeIndent,\n partial: true\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListStart(effects, ok, nok) {\n const self = this\n const tail = self.events[self.events.length - 1]\n let initialSize =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n let size = 0\n return start\n /** @type {State} */\n\n function start(code) {\n const kind =\n self.containerState.type ||\n (code === 42 || code === 43 || code === 45\n ? 'listUnordered'\n : 'listOrdered')\n\n if (\n kind === 'listUnordered'\n ? !self.containerState.marker || code === self.containerState.marker\n : asciiDigit(code)\n ) {\n if (!self.containerState.type) {\n self.containerState.type = kind\n effects.enter(kind, {\n _container: true\n })\n }\n\n if (kind === 'listUnordered') {\n effects.enter('listItemPrefix')\n return code === 42 || code === 45\n ? effects.check(thematicBreak, nok, atMarker)(code)\n : atMarker(code)\n }\n\n if (!self.interrupt || code === 49) {\n effects.enter('listItemPrefix')\n effects.enter('listItemValue')\n return inside(code)\n }\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function inside(code) {\n if (asciiDigit(code) && ++size < 10) {\n effects.consume(code)\n return inside\n }\n\n if (\n (!self.interrupt || size < 2) &&\n (self.containerState.marker\n ? code === self.containerState.marker\n : code === 41 || code === 46)\n ) {\n effects.exit('listItemValue')\n return atMarker(code)\n }\n\n return nok(code)\n }\n /**\n * @type {State}\n **/\n\n function atMarker(code) {\n effects.enter('listItemMarker')\n effects.consume(code)\n effects.exit('listItemMarker')\n self.containerState.marker = self.containerState.marker || code\n return effects.check(\n blankLine, // Can’t be empty when interrupting.\n self.interrupt ? nok : onBlank,\n effects.attempt(\n listItemPrefixWhitespaceConstruct,\n endOfPrefix,\n otherPrefix\n )\n )\n }\n /** @type {State} */\n\n function onBlank(code) {\n self.containerState.initialBlankLine = true\n initialSize++\n return endOfPrefix(code)\n }\n /** @type {State} */\n\n function otherPrefix(code) {\n if (markdownSpace(code)) {\n effects.enter('listItemPrefixWhitespace')\n effects.consume(code)\n effects.exit('listItemPrefixWhitespace')\n return endOfPrefix\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function endOfPrefix(code) {\n self.containerState.size =\n initialSize +\n self.sliceSerialize(effects.exit('listItemPrefix'), true).length\n return ok(code)\n }\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListContinuation(effects, ok, nok) {\n const self = this\n self.containerState._closeFlow = undefined\n return effects.check(blankLine, onBlank, notBlank)\n /** @type {State} */\n\n function onBlank(code) {\n self.containerState.furtherBlankLines =\n self.containerState.furtherBlankLines ||\n self.containerState.initialBlankLine // We have a blank line.\n // Still, try to consume at most the items size.\n\n return factorySpace(\n effects,\n ok,\n 'listItemIndent',\n self.containerState.size + 1\n )(code)\n }\n /** @type {State} */\n\n function notBlank(code) {\n if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n self.containerState.furtherBlankLines = undefined\n self.containerState.initialBlankLine = undefined\n return notInCurrentItem(code)\n }\n\n self.containerState.furtherBlankLines = undefined\n self.containerState.initialBlankLine = undefined\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n }\n /** @type {State} */\n\n function notInCurrentItem(code) {\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true // As we’re closing flow, we’re no longer interrupting.\n\n self.interrupt = undefined\n return factorySpace(\n effects,\n effects.attempt(list, ok, nok),\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n }\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemIndent',\n self.containerState.size + 1\n )\n /** @type {State} */\n\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'listItemIndent' &&\n tail[2].sliceSerialize(tail[1], true).length === self.containerState.size\n ? ok(code)\n : nok(code)\n }\n}\n/**\n * @type {Exiter}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type)\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n const self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemPrefixWhitespace',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4 + 1\n )\n /** @type {State} */\n\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return !markdownSpace(code) &&\n tail &&\n tail[1].type === 'listItemPrefixWhitespace'\n ? ok(code)\n : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownSpace} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const blockQuote = {\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart,\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n if (code === 62) {\n const state = self.containerState\n\n if (!state.open) {\n effects.enter('blockQuote', {\n _container: true\n })\n state.open = true\n }\n\n effects.enter('blockQuotePrefix')\n effects.enter('blockQuoteMarker')\n effects.consume(code)\n effects.exit('blockQuoteMarker')\n return after\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n if (markdownSpace(code)) {\n effects.enter('blockQuotePrefixWhitespace')\n effects.consume(code)\n effects.exit('blockQuotePrefixWhitespace')\n effects.exit('blockQuotePrefix')\n return ok\n }\n\n effects.exit('blockQuotePrefix')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.attempt(blockQuote, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4\n )\n}\n/** @type {Exiter} */\n\nfunction exit(effects) {\n effects.exit('blockQuote')\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {\n asciiControl,\n markdownLineEndingOrSpace,\n markdownLineEnding\n} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} literalType\n * @param {string} literalMarkerType\n * @param {string} rawType\n * @param {string} stringType\n * @param {number} [max=Infinity]\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryDestination(\n effects,\n ok,\n nok,\n type,\n literalType,\n literalMarkerType,\n rawType,\n stringType,\n max\n) {\n const limit = max || Number.POSITIVE_INFINITY\n let balance = 0\n return start\n /** @type {State} */\n\n function start(code) {\n if (code === 60) {\n effects.enter(type)\n effects.enter(literalType)\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n return destinationEnclosedBefore\n }\n\n if (code === null || code === 41 || asciiControl(code)) {\n return nok(code)\n }\n\n effects.enter(type)\n effects.enter(rawType)\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return destinationRaw(code)\n }\n /** @type {State} */\n\n function destinationEnclosedBefore(code) {\n if (code === 62) {\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n effects.exit(literalType)\n effects.exit(type)\n return ok\n }\n\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return destinationEnclosed(code)\n }\n /** @type {State} */\n\n function destinationEnclosed(code) {\n if (code === 62) {\n effects.exit('chunkString')\n effects.exit(stringType)\n return destinationEnclosedBefore(code)\n }\n\n if (code === null || code === 60 || markdownLineEnding(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return code === 92 ? destinationEnclosedEscape : destinationEnclosed\n }\n /** @type {State} */\n\n function destinationEnclosedEscape(code) {\n if (code === 60 || code === 62 || code === 92) {\n effects.consume(code)\n return destinationEnclosed\n }\n\n return destinationEnclosed(code)\n }\n /** @type {State} */\n\n function destinationRaw(code) {\n if (code === 40) {\n if (++balance > limit) return nok(code)\n effects.consume(code)\n return destinationRaw\n }\n\n if (code === 41) {\n if (!balance--) {\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n\n effects.consume(code)\n return destinationRaw\n }\n\n if (code === null || markdownLineEndingOrSpace(code)) {\n if (balance) return nok(code)\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n\n if (asciiControl(code)) return nok(code)\n effects.consume(code)\n return code === 92 ? destinationRawEscape : destinationRaw\n }\n /** @type {State} */\n\n function destinationRawEscape(code) {\n if (code === 40 || code === 41 || code === 92) {\n effects.consume(code)\n return destinationRaw\n }\n\n return destinationRaw(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/**\n * @this {TokenizeContext}\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} markerType\n * @param {string} stringType\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryLabel(effects, ok, nok, type, markerType, stringType) {\n const self = this\n let size = 0\n /** @type {boolean} */\n\n let data\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.enter(stringType)\n return atBreak\n }\n /** @type {State} */\n\n function atBreak(code) {\n if (\n code === null ||\n code === 91 ||\n (code === 93 && !data) ||\n /* To do: remove in the future once we’ve switched from\n * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n * which doesn’t need this */\n\n /* Hidden footnotes hook */\n\n /* c8 ignore next 3 */\n (code === 94 &&\n !size &&\n '_hiddenFootnoteSupport' in self.parser.constructs) ||\n size > 999\n ) {\n return nok(code)\n }\n\n if (code === 93) {\n effects.exit(stringType)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return atBreak\n }\n\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return label(code)\n }\n /** @type {State} */\n\n function label(code) {\n if (\n code === null ||\n code === 91 ||\n code === 93 ||\n markdownLineEnding(code) ||\n size++ > 999\n ) {\n effects.exit('chunkString')\n return atBreak(code)\n }\n\n effects.consume(code)\n data = data || !markdownSpace(code)\n return code === 92 ? labelEscape : label\n }\n /** @type {State} */\n\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return label\n }\n\n return label(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} markerType\n * @param {string} stringType\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n /** @type {NonNullable} */\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n marker = code === 40 ? 41 : code\n return atFirstTitleBreak\n }\n /** @type {State} */\n\n function atFirstTitleBreak(code) {\n if (code === marker) {\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n effects.enter(stringType)\n return atTitleBreak(code)\n }\n /** @type {State} */\n\n function atTitleBreak(code) {\n if (code === marker) {\n effects.exit(stringType)\n return atFirstTitleBreak(marker)\n }\n\n if (code === null) {\n return nok(code)\n } // Note: blank lines can’t exist in content.\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, atTitleBreak, 'linePrefix')\n }\n\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return title(code)\n }\n /** @type {State} */\n\n function title(code) {\n if (code === marker || code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n return atTitleBreak(code)\n }\n\n effects.consume(code)\n return code === 92 ? titleEscape : title\n }\n /** @type {State} */\n\n function titleEscape(code) {\n if (code === marker || code === 92) {\n effects.consume(code)\n return title\n }\n\n return title(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n */\nexport function factoryWhitespace(effects, ok) {\n /** @type {boolean} */\n let seen\n return start\n /** @type {State} */\n\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n seen = true\n return start\n }\n\n if (markdownSpace(code)) {\n return factorySpace(\n effects,\n start,\n seen ? 'linePrefix' : 'lineSuffix'\n )(code)\n }\n\n return ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factorySpace} from 'micromark-factory-space'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n}\n/** @type {Construct} */\n\nconst titleConstruct = {\n tokenize: tokenizeTitle,\n partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeDefinition(effects, ok, nok) {\n const self = this\n /** @type {string} */\n\n let identifier\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('definition')\n return factoryLabel.call(\n self,\n effects,\n labelAfter,\n nok,\n 'definitionLabel',\n 'definitionLabelMarker',\n 'definitionLabelString'\n )(code)\n }\n /** @type {State} */\n\n function labelAfter(code) {\n identifier = normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n\n if (code === 58) {\n effects.enter('definitionMarker')\n effects.consume(code)\n effects.exit('definitionMarker') // Note: blank lines can’t exist in content.\n\n return factoryWhitespace(\n effects,\n factoryDestination(\n effects,\n effects.attempt(\n titleConstruct,\n factorySpace(effects, after, 'whitespace'),\n factorySpace(effects, after, 'whitespace')\n ),\n nok,\n 'definitionDestination',\n 'definitionDestinationLiteral',\n 'definitionDestinationLiteralMarker',\n 'definitionDestinationRaw',\n 'definitionDestinationString'\n )\n )\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('definition')\n\n if (!self.parser.defined.includes(identifier)) {\n self.parser.defined.push(identifier)\n }\n\n return ok(code)\n }\n\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeTitle(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, before)(code)\n : nok(code)\n }\n /** @type {State} */\n\n function before(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n factorySpace(effects, after, 'whitespace'),\n nok,\n 'definitionTitle',\n 'definitionTitleMarker',\n 'definitionTitleString'\n )(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented\n}\n/** @type {Construct} */\n\nconst indentedContent = {\n tokenize: tokenizeIndentedContent,\n partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeIndented(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('codeIndented')\n return factorySpace(effects, afterStartPrefix, 'linePrefix', 4 + 1)(code)\n }\n /** @type {State} */\n\n function afterStartPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ? afterPrefix(code)\n : nok(code)\n }\n /** @type {State} */\n\n function afterPrefix(code) {\n if (code === null) {\n return after(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(indentedContent, afterPrefix, after)(code)\n }\n\n effects.enter('codeFlowValue')\n return content(code)\n }\n /** @type {State} */\n\n function content(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return afterPrefix(code)\n }\n\n effects.consume(code)\n return content\n }\n /** @type {State} */\n\n function after(code) {\n effects.exit('codeIndented')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeIndentedContent(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n // If this is a lazy line, it can’t be code.\n if (self.parser.lazy[self.now().line]) {\n return nok(code)\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return start\n }\n\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)(code)\n }\n /** @type {State} */\n\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ? ok(code)\n : markdownLineEnding(code)\n ? start(code)\n : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n\n/** @type {Construct} */\nexport const headingAtx = {\n name: 'headingAtx',\n tokenize: tokenizeHeadingAtx,\n resolve: resolveHeadingAtx\n}\n/** @type {Resolver} */\n\nfunction resolveHeadingAtx(events, context) {\n let contentEnd = events.length - 2\n let contentStart = 3\n /** @type {Token} */\n\n let content\n /** @type {Token} */\n\n let text // Prefix whitespace, part of the opening.\n\n if (events[contentStart][1].type === 'whitespace') {\n contentStart += 2\n } // Suffix whitespace, part of the closing.\n\n if (\n contentEnd - 2 > contentStart &&\n events[contentEnd][1].type === 'whitespace'\n ) {\n contentEnd -= 2\n }\n\n if (\n events[contentEnd][1].type === 'atxHeadingSequence' &&\n (contentStart === contentEnd - 1 ||\n (contentEnd - 4 > contentStart &&\n events[contentEnd - 2][1].type === 'whitespace'))\n ) {\n contentEnd -= contentStart + 1 === contentEnd ? 2 : 4\n }\n\n if (contentEnd > contentStart) {\n content = {\n type: 'atxHeadingText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n }\n text = {\n type: 'chunkText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end,\n // @ts-expect-error Constants are fine to assign.\n contentType: 'text'\n }\n splice(events, contentStart, contentEnd - contentStart + 1, [\n ['enter', content, context],\n ['enter', text, context],\n ['exit', text, context],\n ['exit', content, context]\n ])\n }\n\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n const self = this\n let size = 0\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('atxHeading')\n effects.enter('atxHeadingSequence')\n return fenceOpenInside(code)\n }\n /** @type {State} */\n\n function fenceOpenInside(code) {\n if (code === 35 && size++ < 6) {\n effects.consume(code)\n return fenceOpenInside\n }\n\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingSequence')\n return self.interrupt ? ok(code) : headingBreak(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function headingBreak(code) {\n if (code === 35) {\n effects.enter('atxHeadingSequence')\n return sequence(code)\n }\n\n if (code === null || markdownLineEnding(code)) {\n effects.exit('atxHeading')\n return ok(code)\n }\n\n if (markdownSpace(code)) {\n return factorySpace(effects, headingBreak, 'whitespace')(code)\n }\n\n effects.enter('atxHeadingText')\n return data(code)\n }\n /** @type {State} */\n\n function sequence(code) {\n if (code === 35) {\n effects.consume(code)\n return sequence\n }\n\n effects.exit('atxHeadingSequence')\n return headingBreak(code)\n }\n /** @type {State} */\n\n function data(code) {\n if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingText')\n return headingBreak(code)\n }\n\n effects.consume(code)\n return data\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const setextUnderline = {\n name: 'setextUnderline',\n tokenize: tokenizeSetextUnderline,\n resolveTo: resolveToSetextUnderline\n}\n/** @type {Resolver} */\n\nfunction resolveToSetextUnderline(events, context) {\n let index = events.length\n /** @type {number|undefined} */\n\n let content\n /** @type {number|undefined} */\n\n let text\n /** @type {number|undefined} */\n\n let definition // Find the opening of the content.\n // It’ll always exist: we don’t tokenize if it isn’t there.\n\n while (index--) {\n if (events[index][0] === 'enter') {\n if (events[index][1].type === 'content') {\n content = index\n break\n }\n\n if (events[index][1].type === 'paragraph') {\n text = index\n }\n } // Exit\n else {\n if (events[index][1].type === 'content') {\n // Remove the content end (if needed we’ll add it later)\n events.splice(index, 1)\n }\n\n if (!definition && events[index][1].type === 'definition') {\n definition = index\n }\n }\n }\n\n const heading = {\n type: 'setextHeading',\n start: Object.assign({}, events[text][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n } // Change the paragraph to setext heading text.\n\n events[text][1].type = 'setextHeadingText' // If we have definitions in the content, we’ll keep on having content,\n // but we need move it.\n\n if (definition) {\n events.splice(text, 0, ['enter', heading, context])\n events.splice(definition + 1, 0, ['exit', events[content][1], context])\n events[content][1].end = Object.assign({}, events[definition][1].end)\n } else {\n events[content][1] = heading\n } // Add the heading exit at the end.\n\n events.push(['exit', heading, context])\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {NonNullable} */\n\n let marker\n /** @type {boolean} */\n\n let paragraph // Find an opening.\n\n while (index--) {\n // Skip enter/exit of line ending, line prefix, and content.\n // We can now either have a definition or a paragraph.\n if (\n self.events[index][1].type !== 'lineEnding' &&\n self.events[index][1].type !== 'linePrefix' &&\n self.events[index][1].type !== 'content'\n ) {\n paragraph = self.events[index][1].type === 'paragraph'\n break\n }\n }\n\n return start\n /** @type {State} */\n\n function start(code) {\n if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n effects.enter('setextHeadingLine')\n effects.enter('setextHeadingLineSequence')\n marker = code\n return closingSequence(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function closingSequence(code) {\n if (code === marker) {\n effects.consume(code)\n return closingSequence\n }\n\n effects.exit('setextHeadingLineSequence')\n return factorySpace(effects, closingSequenceEnd, 'lineSuffix')(code)\n }\n /** @type {State} */\n\n function closingSequenceEnd(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('setextHeadingLine')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n","/**\n * List of lowercase HTML tag names which when parsing HTML (flow), result\n * in more relaxed rules (condition 6): because they are known blocks, the\n * HTML-like syntax doesn’t have to be strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * .\n */\nexport const htmlBlockNames = [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'section',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n\n/**\n * List of lowercase HTML tag names which when parsing HTML (flow), result in\n * HTML that can include lines w/o exiting, until a closing tag also in this\n * list is found (condition 1).\n *\n * This module is copied from:\n * .\n *\n * Note that `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {htmlBlockNames, htmlRawNames} from 'micromark-util-html-tag-name'\nimport {blankLine} from './blank-line.js'\n/** @type {Construct} */\n\nexport const htmlFlow = {\n name: 'htmlFlow',\n tokenize: tokenizeHtmlFlow,\n resolveTo: resolveToHtmlFlow,\n concrete: true\n}\n/** @type {Construct} */\n\nconst nextBlankConstruct = {\n tokenize: tokenizeNextBlank,\n partial: true\n}\n/** @type {Resolver} */\n\nfunction resolveToHtmlFlow(events) {\n let index = events.length\n\n while (index--) {\n if (events[index][0] === 'enter' && events[index][1].type === 'htmlFlow') {\n break\n }\n }\n\n if (index > 1 && events[index - 2][1].type === 'linePrefix') {\n // Add the prefix start to the HTML token.\n events[index][1].start = events[index - 2][1].start // Add the prefix start to the HTML line token.\n\n events[index + 1][1].start = events[index - 2][1].start // Remove the line prefix.\n\n events.splice(index - 2, 2)\n }\n\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n const self = this\n /** @type {number} */\n\n let kind\n /** @type {boolean} */\n\n let startTag\n /** @type {string} */\n\n let buffer\n /** @type {number} */\n\n let index\n /** @type {Code} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('htmlFlow')\n effects.enter('htmlFlowData')\n effects.consume(code)\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationStart\n }\n\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n\n if (code === 63) {\n effects.consume(code)\n kind = 3 // While we’re in an instruction instead of a declaration, we’re on a `?`\n // right now, so we do need to search for `>`, similar to declarations.\n\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n buffer = String.fromCharCode(code)\n startTag = true\n return tagName\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function declarationStart(code) {\n if (code === 45) {\n effects.consume(code)\n kind = 2\n return commentOpenInside\n }\n\n if (code === 91) {\n effects.consume(code)\n kind = 5\n buffer = 'CDATA['\n index = 0\n return cdataOpenInside\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n kind = 4\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function cdataOpenInside(code) {\n if (code === buffer.charCodeAt(index++)) {\n effects.consume(code)\n return index === buffer.length\n ? self.interrupt\n ? ok\n : continuation\n : cdataOpenInside\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n buffer = String.fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagName(code) {\n if (\n code === null ||\n code === 47 ||\n code === 62 ||\n markdownLineEndingOrSpace(code)\n ) {\n if (\n code !== 47 &&\n startTag &&\n htmlRawNames.includes(buffer.toLowerCase())\n ) {\n kind = 1\n return self.interrupt ? ok(code) : continuation(code)\n }\n\n if (htmlBlockNames.includes(buffer.toLowerCase())) {\n kind = 6\n\n if (code === 47) {\n effects.consume(code)\n return basicSelfClosing\n }\n\n return self.interrupt ? ok(code) : continuation(code)\n }\n\n kind = 7 // Do not support complete HTML when interrupting\n\n return self.interrupt && !self.parser.lazy[self.now().line]\n ? nok(code)\n : startTag\n ? completeAttributeNameBefore(code)\n : completeClosingTagAfter(code)\n }\n\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n buffer += String.fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function basicSelfClosing(code) {\n if (code === 62) {\n effects.consume(code)\n return self.interrupt ? ok : continuation\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function completeClosingTagAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeClosingTagAfter\n }\n\n return completeEnd(code)\n }\n /** @type {State} */\n\n function completeAttributeNameBefore(code) {\n if (code === 47) {\n effects.consume(code)\n return completeEnd\n }\n\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return completeAttributeName\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameBefore\n }\n\n return completeEnd(code)\n }\n /** @type {State} */\n\n function completeAttributeName(code) {\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return completeAttributeName\n }\n\n return completeAttributeNameAfter(code)\n }\n /** @type {State} */\n\n function completeAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameAfter\n }\n\n return completeAttributeNameBefore(code)\n }\n /** @type {State} */\n\n function completeAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return completeAttributeValueQuoted\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n\n marker = null\n return completeAttributeValueUnquoted(code)\n }\n /** @type {State} */\n\n function completeAttributeValueQuoted(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n if (code === marker) {\n effects.consume(code)\n return completeAttributeValueQuotedAfter\n }\n\n effects.consume(code)\n return completeAttributeValueQuoted\n }\n /** @type {State} */\n\n function completeAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96 ||\n markdownLineEndingOrSpace(code)\n ) {\n return completeAttributeNameAfter(code)\n }\n\n effects.consume(code)\n return completeAttributeValueUnquoted\n }\n /** @type {State} */\n\n function completeAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownSpace(code)) {\n return completeAttributeNameBefore(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function completeEnd(code) {\n if (code === 62) {\n effects.consume(code)\n return completeAfter\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function completeAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAfter\n }\n\n return code === null || markdownLineEnding(code)\n ? continuation(code)\n : nok(code)\n }\n /** @type {State} */\n\n function continuation(code) {\n if (code === 45 && kind === 2) {\n effects.consume(code)\n return continuationCommentInside\n }\n\n if (code === 60 && kind === 1) {\n effects.consume(code)\n return continuationRawTagOpen\n }\n\n if (code === 62 && kind === 4) {\n effects.consume(code)\n return continuationClose\n }\n\n if (code === 63 && kind === 3) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n if (code === 93 && kind === 5) {\n effects.consume(code)\n return continuationCharacterDataInside\n }\n\n if (markdownLineEnding(code) && (kind === 6 || kind === 7)) {\n return effects.check(\n nextBlankConstruct,\n continuationClose,\n continuationAtLineEnding\n )(code)\n }\n\n if (code === null || markdownLineEnding(code)) {\n return continuationAtLineEnding(code)\n }\n\n effects.consume(code)\n return continuation\n }\n /** @type {State} */\n\n function continuationAtLineEnding(code) {\n effects.exit('htmlFlowData')\n return htmlContinueStart(code)\n }\n /** @type {State} */\n\n function htmlContinueStart(code) {\n if (code === null) {\n return done(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(\n {\n tokenize: htmlLineEnd,\n partial: true\n },\n htmlContinueStart,\n done\n )(code)\n }\n\n effects.enter('htmlFlowData')\n return continuation(code)\n }\n /** @type {Tokenizer} */\n\n function htmlLineEnd(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n /** @type {State} */\n\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n }\n /** @type {State} */\n\n function continuationCommentInside(code) {\n if (code === 45) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationRawEndTag(code) {\n if (code === 62 && htmlRawNames.includes(buffer.toLowerCase())) {\n effects.consume(code)\n return continuationClose\n }\n\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n buffer += String.fromCharCode(code)\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationCharacterDataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n } // More dashes.\n\n if (code === 45 && kind === 2) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return done(code)\n }\n\n effects.consume(code)\n return continuationClose\n }\n /** @type {State} */\n\n function done(code) {\n effects.exit('htmlFlow')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeNextBlank(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.exit('htmlFlowData')\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n return effects.attempt(blankLine, ok, nok)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this\n /** @type {Construct} */\n\n const closingFenceConstruct = {\n tokenize: tokenizeClosingFence,\n partial: true\n }\n /** @type {Construct} */\n\n const nonLazyLine = {\n tokenize: tokenizeNonLazyLine,\n partial: true\n }\n const tail = this.events[this.events.length - 1]\n const initialPrefix =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n let sizeOpen = 0\n /** @type {NonNullable} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n marker = code\n return sequenceOpen(code)\n }\n /** @type {State} */\n\n function sequenceOpen(code) {\n if (code === marker) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n\n effects.exit('codeFencedFenceSequence')\n return sizeOpen < 3\n ? nok(code)\n : factorySpace(effects, infoOpen, 'whitespace')(code)\n }\n /** @type {State} */\n\n function infoOpen(code) {\n if (code === null || markdownLineEnding(code)) {\n return openAfter(code)\n }\n\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n /** @type {State} */\n\n function info(code) {\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, infoAfter, 'whitespace')(code)\n }\n\n if (code === 96 && code === marker) return nok(code)\n effects.consume(code)\n return info\n }\n /** @type {State} */\n\n function infoAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n return openAfter(code)\n }\n\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n /** @type {State} */\n\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceMeta')\n return openAfter(code)\n }\n\n if (code === 96 && code === marker) return nok(code)\n effects.consume(code)\n return meta\n }\n /** @type {State} */\n\n function openAfter(code) {\n effects.exit('codeFencedFence')\n return self.interrupt ? ok(code) : contentStart(code)\n }\n /** @type {State} */\n\n function contentStart(code) {\n if (code === null) {\n return after(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(\n nonLazyLine,\n effects.attempt(\n closingFenceConstruct,\n after,\n initialPrefix\n ? factorySpace(\n effects,\n contentStart,\n 'linePrefix',\n initialPrefix + 1\n )\n : contentStart\n ),\n after\n )(code)\n }\n\n effects.enter('codeFlowValue')\n return contentContinue(code)\n }\n /** @type {State} */\n\n function contentContinue(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return contentStart(code)\n }\n\n effects.consume(code)\n return contentContinue\n }\n /** @type {State} */\n\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n /** @type {Tokenizer} */\n\n function tokenizeNonLazyLine(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n /** @type {State} */\n\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n }\n /** @type {Tokenizer} */\n\n function tokenizeClosingFence(effects, ok, nok) {\n let size = 0\n return factorySpace(\n effects,\n closingSequenceStart,\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )\n /** @type {State} */\n\n function closingSequenceStart(code) {\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return closingSequence(code)\n }\n /** @type {State} */\n\n function closingSequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return closingSequence\n }\n\n if (size < sizeOpen) return nok(code)\n effects.exit('codeFencedFenceSequence')\n return factorySpace(effects, closingSequenceEnd, 'whitespace')(code)\n }\n /** @type {State} */\n\n function closingSequenceEnd(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n\n return nok(code)\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {\n asciiAlphanumeric,\n asciiDigit,\n asciiHexDigit\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this\n let size = 0\n /** @type {number} */\n\n let max\n /** @type {(code: Code) => code is number} */\n\n let test\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('characterReference')\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 35) {\n effects.enter('characterReferenceMarkerNumeric')\n effects.consume(code)\n effects.exit('characterReferenceMarkerNumeric')\n return numeric\n }\n\n effects.enter('characterReferenceValue')\n max = 31\n test = asciiAlphanumeric\n return value(code)\n }\n /** @type {State} */\n\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter('characterReferenceMarkerHexadecimal')\n effects.consume(code)\n effects.exit('characterReferenceMarkerHexadecimal')\n effects.enter('characterReferenceValue')\n max = 6\n test = asciiHexDigit\n return value\n }\n\n effects.enter('characterReferenceValue')\n max = 7\n test = asciiDigit\n return value(code)\n }\n /** @type {State} */\n\n function value(code) {\n /** @type {Token} */\n let token\n\n if (code === 59 && size) {\n token = effects.exit('characterReferenceValue')\n\n if (\n test === asciiAlphanumeric &&\n !decodeNamedCharacterReference(self.sliceSerialize(token))\n ) {\n return nok(code)\n }\n\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n effects.exit('characterReference')\n return ok\n }\n\n if (test(code) && size++ < max) {\n effects.consume(code)\n return value\n }\n\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {asciiPunctuation} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('characterEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n effects.exit('escapeMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue')\n effects.consume(code)\n effects.exit('characterEscapeValue')\n effects.exit('characterEscape')\n return ok\n }\n\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLineEnding(effects, ok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, ok, 'linePrefix')\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\n/** @type {Construct} */\n\nconst resourceConstruct = {\n tokenize: tokenizeResource\n}\n/** @type {Construct} */\n\nconst fullReferenceConstruct = {\n tokenize: tokenizeFullReference\n}\n/** @type {Construct} */\n\nconst collapsedReferenceConstruct = {\n tokenize: tokenizeCollapsedReference\n}\n/** @type {Resolver} */\n\nfunction resolveAllLabelEnd(events) {\n let index = -1\n /** @type {Token} */\n\n let token\n\n while (++index < events.length) {\n token = events[index][1]\n\n if (\n token.type === 'labelImage' ||\n token.type === 'labelLink' ||\n token.type === 'labelEnd'\n ) {\n // Remove the marker.\n events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n token.type = 'data'\n index++\n }\n }\n\n return events\n}\n/** @type {Resolver} */\n\nfunction resolveToLabelEnd(events, context) {\n let index = events.length\n let offset = 0\n /** @type {Token} */\n\n let token\n /** @type {number|undefined} */\n\n let open\n /** @type {number|undefined} */\n\n let close\n /** @type {Event[]} */\n\n let media // Find an opening.\n\n while (index--) {\n token = events[index][1]\n\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (\n token.type === 'link' ||\n (token.type === 'labelLink' && token._inactive)\n ) {\n break\n } // Mark other link openings as inactive, as we can’t have links in\n // links.\n\n if (events[index][0] === 'enter' && token.type === 'labelLink') {\n token._inactive = true\n }\n } else if (close) {\n if (\n events[index][0] === 'enter' &&\n (token.type === 'labelImage' || token.type === 'labelLink') &&\n !token._balanced\n ) {\n open = index\n\n if (token.type !== 'labelLink') {\n offset = 2\n break\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index\n }\n }\n\n const group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n const label = {\n type: 'label',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n }\n const text = {\n type: 'labelText',\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ] // Opening marker.\n\n media = push(media, events.slice(open + 1, open + offset + 3)) // Text open.\n\n media = push(media, [['enter', text, context]]) // Between.\n\n media = push(\n media,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n ) // Text close, marker close, label close.\n\n media = push(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ]) // Reference, resource, or so.\n\n media = push(media, events.slice(close + 1)) // Media close.\n\n media = push(media, [['exit', group, context]])\n splice(events, open, events.length, media)\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Token} */\n\n let labelStart\n /** @type {boolean} */\n\n let defined // Find an opening.\n\n while (index--) {\n if (\n (self.events[index][1].type === 'labelImage' ||\n self.events[index][1].type === 'labelLink') &&\n !self.events[index][1]._balanced\n ) {\n labelStart = self.events[index][1]\n break\n }\n }\n\n return start\n /** @type {State} */\n\n function start(code) {\n if (!labelStart) {\n return nok(code)\n } // It’s a balanced bracket, but contains a link.\n\n if (labelStart._inactive) return balanced(code)\n defined = self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n )\n effects.enter('labelEnd')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelEnd')\n return afterLabelEnd\n }\n /** @type {State} */\n\n function afterLabelEnd(code) {\n // Resource: `[asd](fgh)`.\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n ok,\n defined ? ok : balanced\n )(code)\n } // Collapsed (`[asd][]`) or full (`[asd][fgh]`) reference?\n\n if (code === 91) {\n return effects.attempt(\n fullReferenceConstruct,\n ok,\n defined\n ? effects.attempt(collapsedReferenceConstruct, ok, balanced)\n : balanced\n )(code)\n } // Shortcut reference: `[asd]`?\n\n return defined ? ok(code) : balanced(code)\n }\n /** @type {State} */\n\n function balanced(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeResource(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return factoryWhitespace(effects, open)\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 41) {\n return end(code)\n }\n\n return factoryDestination(\n effects,\n destinationAfter,\n nok,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 32\n )(code)\n }\n /** @type {State} */\n\n function destinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, between)(code)\n : end(code)\n }\n /** @type {State} */\n\n function between(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n factoryWhitespace(effects, end),\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n\n return end(code)\n }\n /** @type {State} */\n\n function end(code) {\n if (code === 41) {\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n effects.exit('resource')\n return ok\n }\n\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeFullReference(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n return factoryLabel.call(\n self,\n effects,\n afterLabel,\n nok,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n /** @type {State} */\n\n function afterLabel(code) {\n return self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n )\n ? ok(code)\n : nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCollapsedReference(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 93) {\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n effects.exit('reference')\n return ok\n }\n\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {labelEnd} from './label-end.js'\n/** @type {Construct} */\n\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('labelImage')\n effects.enter('labelImageMarker')\n effects.consume(code)\n effects.exit('labelImageMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 91) {\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelImage')\n return after\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n /* To do: remove in the future once we’ve switched from\n * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n * which doesn’t need this */\n\n /* Hidden footnotes hook */\n\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Point} Point\n */\nimport {push, splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n\nfunction resolveAllAttention(events, context) {\n let index = -1\n /** @type {number} */\n\n let open\n /** @type {Token} */\n\n let group\n /** @type {Token} */\n\n let text\n /** @type {Token} */\n\n let openingSequence\n /** @type {Token} */\n\n let closingSequence\n /** @type {number} */\n\n let use\n /** @type {Event[]} */\n\n let nextEvents\n /** @type {number} */\n\n let offset // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'attentionSequence' &&\n events[index][1]._close\n ) {\n open = index // Now walk back to find an opener.\n\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'attentionSequence' &&\n events[open][1]._open && // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n context.sliceSerialize(events[index][1]).charCodeAt(0)\n ) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if (\n (events[open][1]._close || events[index][1]._open) &&\n (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n !(\n (events[open][1].end.offset -\n events[open][1].start.offset +\n events[index][1].end.offset -\n events[index][1].start.offset) %\n 3\n )\n ) {\n continue\n } // Number of markers to use from the sequence.\n\n use =\n events[open][1].end.offset - events[open][1].start.offset > 1 &&\n events[index][1].end.offset - events[index][1].start.offset > 1\n ? 2\n : 1\n const start = Object.assign({}, events[open][1].end)\n const end = Object.assign({}, events[index][1].start)\n movePoint(start, -use)\n movePoint(end, use)\n openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start,\n end: Object.assign({}, events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: Object.assign({}, events[index][1].start),\n end\n }\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: Object.assign({}, openingSequence.start),\n end: Object.assign({}, closingSequence.end)\n }\n events[open][1].end = Object.assign({}, openingSequence.start)\n events[index][1].start = Object.assign({}, closingSequence.end)\n nextEvents = [] // If there are more markers in the opening, add them before.\n\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n } // Opening.\n\n nextEvents = push(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ]) // Between.\n\n nextEvents = push(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n ) // Closing.\n\n nextEvents = push(nextEvents, [\n ['exit', text, context],\n ['enter', closingSequence, context],\n ['exit', closingSequence, context],\n ['exit', group, context]\n ]) // If there are more markers in the closing, add them after.\n\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2\n nextEvents = push(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n\n splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - offset - 2\n break\n }\n }\n }\n } // Remove remaining sequences.\n\n index = -1\n\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data'\n }\n }\n\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null\n const previous = this.previous\n const before = classifyCharacter(previous)\n /** @type {NonNullable} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('attentionSequence')\n marker = code\n return sequence(code)\n }\n /** @type {State} */\n\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n return sequence\n }\n\n const token = effects.exit('attentionSequence')\n const after = classifyCharacter(code)\n const open =\n !after || (after === 2 && before) || attentionMarkers.includes(code)\n const close =\n !before || (before === 2 && after) || attentionMarkers.includes(previous)\n token._open = Boolean(marker === 42 ? open : open && (before || !close))\n token._close = Boolean(marker === 42 ? close : close && (after || !open))\n return ok(code)\n }\n}\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {void}\n */\n\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiAtext,\n asciiControl\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 1\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('autolink')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.enter('autolinkProtocol')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n\n return asciiAtext(code) ? emailAtext(code) : nok(code)\n }\n /** @type {State} */\n\n function schemeOrEmailAtext(code) {\n return code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)\n ? schemeInsideOrEmailAtext(code)\n : emailAtext(code)\n }\n /** @type {State} */\n\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n return urlInside\n }\n\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n\n return emailAtext(code)\n }\n /** @type {State} */\n\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n return end(code)\n }\n\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return urlInside\n }\n /** @type {State} */\n\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\n /** @type {State} */\n\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n\n if (code === 62) {\n // Exit, then change the type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n return end(code)\n }\n\n return emailValue(code)\n }\n /** @type {State} */\n\n function emailValue(code) {\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n effects.consume(code)\n return code === 45 ? emailValue : emailLabel\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function end(code) {\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this\n /** @type {NonNullable|undefined} */\n\n let marker\n /** @type {string} */\n\n let buffer\n /** @type {number} */\n\n let index\n /** @type {State} */\n\n let returnState\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpen\n }\n\n if (code === 91) {\n effects.consume(code)\n buffer = 'CDATA['\n index = 0\n return cdataOpen\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function commentOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentStart\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function commentStart(code) {\n if (code === null || code === 62) {\n return nok(code)\n }\n\n if (code === 45) {\n effects.consume(code)\n return commentStartDash\n }\n\n return comment(code)\n }\n /** @type {State} */\n\n function commentStartDash(code) {\n if (code === null || code === 62) {\n return nok(code)\n }\n\n return comment(code)\n }\n /** @type {State} */\n\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = comment\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return comment\n }\n /** @type {State} */\n\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return end\n }\n\n return comment(code)\n }\n /** @type {State} */\n\n function cdataOpen(code) {\n if (code === buffer.charCodeAt(index++)) {\n effects.consume(code)\n return index === buffer.length ? cdata : cdataOpen\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = cdata\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return cdata\n }\n /** @type {State} */\n\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n /** @type {State} */\n\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n /** @type {State} */\n\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n\n if (markdownLineEnding(code)) {\n returnState = declaration\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return declaration\n }\n /** @type {State} */\n\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = instruction\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return instruction\n }\n /** @type {State} */\n\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n /** @type {State} */\n\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagClose(code) {\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return tagCloseBetween(code)\n }\n /** @type {State} */\n\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n\n return end(code)\n }\n /** @type {State} */\n\n function tagOpen(code) {\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n\n return end(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeName(code) {\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n return tagOpenAttributeNameAfter(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n\n return tagOpenBetween(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueUnquoted\n }\n /** @type {State} */\n\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n return tagOpenAttributeValueQuotedAfter\n }\n\n if (code === null) {\n return nok(code)\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n /** @type {State} */\n\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 62 || code === 47 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n } // We can’t have blank lines in content, so no need to worry about empty\n // tokens.\n\n /** @type {State} */\n\n function atLineEnding(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(\n effects,\n afterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )\n }\n /** @type {State} */\n\n function afterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\n /** @type {State} */\n\n function end(code) {\n if (code === 62) {\n effects.consume(code)\n effects.exit('htmlTextData')\n effects.exit('htmlText')\n return ok\n }\n\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n}\n/** @type {Resolver} */\n\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4\n let headEnterIndex = 3\n /** @type {number} */\n\n let index\n /** @type {number|undefined} */\n\n let enter // If we start and end with an EOL or a space.\n\n if (\n (events[headEnterIndex][1].type === 'lineEnding' ||\n events[headEnterIndex][1].type === 'space') &&\n (events[tailExitIndex][1].type === 'lineEnding' ||\n events[tailExitIndex][1].type === 'space')\n ) {\n index = headEnterIndex // And we have data.\n\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[headEnterIndex][1].type = 'codeTextPadding'\n events[tailExitIndex][1].type = 'codeTextPadding'\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n } // Merge adjacent spaces and data.\n\n index = headEnterIndex - 1\n tailExitIndex++\n\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'codeTextData'\n\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n\n enter = undefined\n }\n }\n\n return events\n}\n/** @type {Previous} */\n\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return (\n code !== 96 ||\n this.events[this.events.length - 1][1].type === 'characterEscape'\n )\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this\n let sizeOpen = 0\n /** @type {number} */\n\n let size\n /** @type {Token} */\n\n let token\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return openingSequence(code)\n }\n /** @type {State} */\n\n function openingSequence(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return openingSequence\n }\n\n effects.exit('codeTextSequence')\n return gap(code)\n }\n /** @type {State} */\n\n function gap(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n } // Closing fence?\n // Could also be data.\n\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return closingSequence(code)\n } // Tabs don’t work, and virtual spaces don’t make sense.\n\n if (code === 32) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return gap\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return gap\n } // Data.\n\n effects.enter('codeTextData')\n return data(code)\n } // In code.\n\n /** @type {State} */\n\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 96 ||\n markdownLineEnding(code)\n ) {\n effects.exit('codeTextData')\n return gap(code)\n }\n\n effects.consume(code)\n return data\n } // Closing fence.\n\n /** @type {State} */\n\n function closingSequence(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return closingSequence\n } // Done!\n\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n } // More or less accents: mark as data.\n\n token.type = 'codeTextData'\n return data(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\nimport {\n attention,\n autolink,\n blockQuote,\n characterEscape,\n characterReference,\n codeFenced,\n codeIndented,\n codeText,\n definition,\n hardBreakEscape,\n headingAtx,\n htmlFlow,\n htmlText,\n labelEnd,\n labelStartImage,\n labelStartLink,\n lineEnding,\n list,\n setextUnderline,\n thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n/** @type {Extension['document']} */\n\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n}\n/** @type {Extension['contentInitial']} */\n\nexport const contentInitial = {\n [91]: definition\n}\n/** @type {Extension['flowInitial']} */\n\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n/** @type {Extension['flow']} */\n\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n}\n/** @type {Extension['string']} */\n\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n/** @type {Extension['text']} */\n\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n}\n/** @type {Extension['insideSpan']} */\n\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n/** @type {Extension['attentionMarkers']} */\n\nexport const attentionMarkers = {\n null: [42, 95]\n}\n/** @type {Extension['disable']} */\n\nexport const disable = {\n null: []\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {labelEnd} from './label-end.js'\n/** @type {Construct} */\n\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('labelLink')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelLink')\n return after\n }\n /** @type {State} */\n\n function after(code) {\n /* To do: remove in the future once we’ve switched from\n * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n * which doesn’t need this */\n\n /* Hidden footnotes hook. */\n\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (markdownLineEnding(code)) {\n effects.exit('escapeMarker')\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding} [encoding]\n * @param {boolean} [end=false]\n * @returns {Array}\n */\nconst search = /[\\0\\t\\n\\r]/g\n/**\n * @returns {Preprocessor}\n */\n\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean|undefined} */\n\n let start = true\n /** @type {boolean|undefined} */\n\n let atCarriageReturn\n return preprocessor\n /** @type {Preprocessor} */\n\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = []\n /** @type {RegExpMatchArray|null} */\n\n let match\n /** @type {number} */\n\n let next\n /** @type {number} */\n\n let startPosition\n /** @type {number} */\n\n let endPosition\n /** @type {Code} */\n\n let code // @ts-expect-error `Buffer` does allow an encoding.\n\n value = buffer + value.toString(encoding)\n startPosition = 0\n buffer = ''\n\n if (start) {\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n\n start = undefined\n }\n\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n\n while (column++ < next) chunks.push(-1)\n\n break\n }\n\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n\n startPosition = endPosition + 1\n }\n\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n\n return chunks\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist').Point} Point\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').Content} Content\n * @typedef {Root|Content} Node\n * @typedef {Extract} Parent\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').HTML} HTML\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n *\n * @typedef {UnistParent & {type: 'fragment', children: Array}} Fragment\n */\n\n/**\n * @typedef _CompileDataFields\n * @property {boolean|undefined} expectingFirstListItemValue\n * @property {boolean|undefined} flowCodeInside\n * @property {boolean|undefined} setextHeadingSlurpLineEnding\n * @property {boolean|undefined} atHardBreak\n * @property {'collapsed'|'full'} referenceType\n * @property {boolean|undefined} inReference\n * @property {'characterReferenceMarkerHexadecimal'|'characterReferenceMarkerNumeric'} characterReferenceType\n *\n * @typedef {Record & Partial<_CompileDataFields>} CompileData\n *\n * @typedef {(tree: Root) => Root|void} Transform\n * @typedef {(this: CompileContext, token: Token) => void} Handle\n * @typedef {Record} Handles\n * Token types mapping to handles\n * @typedef {Record|Array> & {canContainEols: Array, transforms: Array, enter: Handles, exit: Handles}} NormalizedExtension\n * @typedef {Partial} Extension\n * An mdast extension changes how markdown tokens are turned into mdast.\n *\n * @typedef {(this: Omit, left: Token|undefined, right: Token) => void} OnEnterError\n * @typedef {(this: Omit, left: Token, right: Token) => void} OnExitError\n *\n * @typedef CompileContext\n * mdast compiler context\n * @property {Array} stack\n * @property {Array<[Token, OnEnterError|undefined]>} tokenStack\n * @property {(key: string, value?: unknown) => void} setData\n * Set data into the key-value store.\n * @property {(key: K) => CompileData[K]} getData\n * Get data from the key-value store.\n * @property {(this: CompileContext) => void} buffer\n * Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n * Stop capturing and access the output data.\n * @property {(this: CompileContext, node: N, token: Token, onError?: OnEnterError) => N} enter\n * Enter a token.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => Node} exit\n * Exit a token.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n * Get the string value of a token.\n * @property {NormalizedExtension} config\n * Configuration.\n *\n * @typedef {{mdastExtensions?: Array>}} FromMarkdownOptions\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n */\nimport {toString} from 'mdast-util-to-string'\nimport {parse} from 'micromark/lib/parse.js'\nimport {preprocess} from 'micromark/lib/preprocess.js'\nimport {postprocess} from 'micromark/lib/postprocess.js'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nimport {decodeString} from 'micromark-util-decode-string'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {stringifyPosition} from 'unist-util-stringify-position'\nconst own = {}.hasOwnProperty\n/**\n * @param value Markdown to parse (`string` or `Buffer`).\n * @param [encoding] Character encoding to understand `value` as when it’s a `Buffer` (`string`, default: `'utf8'`).\n * @param [options] Configuration\n */\n\nexport const fromMarkdown =\n /**\n * @type {(\n * ((value: Value, encoding: Encoding, options?: Options) => Root) &\n * ((value: Value, options?: Options) => Root)\n * )}\n */\n\n /**\n * @param {Value} value\n * @param {Encoding} [encoding]\n * @param {Options} [options]\n * @returns {Root}\n */\n function (value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n\n return compiler(options)(\n postprocess(\n parse(options).document().write(preprocess()(value, encoding, true))\n )\n )\n }\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options} [options]\n */\n\nfunction compiler(options = {}) {\n /** @type {NormalizedExtension} */\n // @ts-expect-error: our base has all required fields, so the result will too.\n const config = configure(\n {\n transforms: [],\n canContainEols: [\n 'emphasis',\n 'fragment',\n 'heading',\n 'paragraph',\n 'strong'\n ],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n },\n options.mdastExtensions || []\n )\n /** @type {CompileData} */\n\n const data = {}\n return compile\n /**\n * @param {Array} events\n * @returns {Root}\n */\n\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n }\n /** @type {CompileContext['stack']} */\n\n const stack = [tree]\n /** @type {CompileContext['tokenStack']} */\n\n const tokenStack = []\n /** @type {Array} */\n\n const listStack = []\n /** @type {Omit} */\n\n const context = {\n stack,\n tokenStack,\n config,\n enter,\n exit,\n buffer,\n resume,\n setData,\n getData\n }\n let index = -1\n\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (\n events[index][1].type === 'listOrdered' ||\n events[index][1].type === 'listUnordered'\n ) {\n if (events[index][0] === 'enter') {\n listStack.push(index)\n } else {\n const tail = listStack.pop()\n index = prepareList(events, tail, index)\n }\n }\n }\n\n index = -1\n\n while (++index < events.length) {\n const handler = config[events[index][0]]\n\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n Object.assign(\n {\n sliceSerialize: events[index][2].sliceSerialize\n },\n context\n ),\n events[index][1]\n )\n }\n }\n\n if (tokenStack.length > 0) {\n const tail = tokenStack[tokenStack.length - 1]\n const handler = tail[1] || defaultOnError\n handler.call(context, undefined, tail[0])\n } // Figure out `root` position.\n\n tree.position = {\n start: point(\n events.length > 0\n ? events[0][1].start\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n ),\n end: point(\n events.length > 0\n ? events[events.length - 2][1].end\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n )\n }\n index = -1\n\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree\n }\n\n return tree\n }\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n\n function prepareList(events, start, length) {\n let index = start - 1\n let containerBalance = -1\n let listSpread = false\n /** @type {Token|undefined} */\n\n let listItem\n /** @type {number|undefined} */\n\n let lineIndex\n /** @type {number|undefined} */\n\n let firstBlankLineIndex\n /** @type {boolean|undefined} */\n\n let atMarker\n\n while (++index <= length) {\n const event = events[index]\n\n if (\n event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered' ||\n event[1].type === 'blockQuote'\n ) {\n if (event[0] === 'enter') {\n containerBalance++\n } else {\n containerBalance--\n }\n\n atMarker = undefined\n } else if (event[1].type === 'lineEndingBlank') {\n if (event[0] === 'enter') {\n if (\n listItem &&\n !atMarker &&\n !containerBalance &&\n !firstBlankLineIndex\n ) {\n firstBlankLineIndex = index\n }\n\n atMarker = undefined\n }\n } else if (\n event[1].type === 'linePrefix' ||\n event[1].type === 'listItemValue' ||\n event[1].type === 'listItemMarker' ||\n event[1].type === 'listItemPrefix' ||\n event[1].type === 'listItemPrefixWhitespace'\n ) {\n // Empty.\n } else {\n atMarker = undefined\n }\n\n if (\n (!containerBalance &&\n event[0] === 'enter' &&\n event[1].type === 'listItemPrefix') ||\n (containerBalance === -1 &&\n event[0] === 'exit' &&\n (event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered'))\n ) {\n if (listItem) {\n let tailIndex = index\n lineIndex = undefined\n\n while (tailIndex--) {\n const tailEvent = events[tailIndex]\n\n if (\n tailEvent[1].type === 'lineEnding' ||\n tailEvent[1].type === 'lineEndingBlank'\n ) {\n if (tailEvent[0] === 'exit') continue\n\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n listSpread = true\n }\n\n tailEvent[1].type = 'lineEnding'\n lineIndex = tailIndex\n } else if (\n tailEvent[1].type === 'linePrefix' ||\n tailEvent[1].type === 'blockQuotePrefix' ||\n tailEvent[1].type === 'blockQuotePrefixWhitespace' ||\n tailEvent[1].type === 'blockQuoteMarker' ||\n tailEvent[1].type === 'listItemIndent'\n ) {\n // Empty\n } else {\n break\n }\n }\n\n if (\n firstBlankLineIndex &&\n (!lineIndex || firstBlankLineIndex < lineIndex)\n ) {\n // @ts-expect-error Patched.\n listItem._spread = true\n } // Fix position.\n\n listItem.end = Object.assign(\n {},\n lineIndex ? events[lineIndex][1].start : event[1].end\n )\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n index++\n length++\n } // Create a new list item.\n\n if (event[1].type === 'listItemPrefix') {\n listItem = {\n type: 'listItem',\n // @ts-expect-error Patched\n _spread: false,\n start: Object.assign({}, event[1].start)\n } // @ts-expect-error: `listItem` is most definitely defined, TS...\n\n events.splice(index, 0, ['enter', listItem, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n } // @ts-expect-error Patched.\n\n events[start][1]._spread = listSpread\n return length\n }\n /**\n * @type {CompileContext['setData']}\n * @param [value]\n */\n\n function setData(key, value) {\n data[key] = value\n }\n /**\n * @type {CompileContext['getData']}\n * @template {string} K\n * @param {K} key\n * @returns {CompileData[K]}\n */\n\n function getData(key) {\n return data[key]\n }\n /**\n * @param {Point} d\n * @returns {Point}\n */\n\n function point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n }\n }\n /**\n * @param {(token: Token) => Node} create\n * @param {Handle} [and]\n * @returns {Handle}\n */\n\n function opener(create, and) {\n return open\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n /** @type {CompileContext['buffer']} */\n\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n })\n }\n /**\n * @type {CompileContext['enter']}\n * @template {Node} N\n * @this {CompileContext}\n * @param {N} node\n * @param {Token} token\n * @param {OnEnterError} [errorHandler]\n * @returns {N}\n */\n\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1]\n // @ts-expect-error: Assume `Node` can exist as a child of `parent`.\n parent.children.push(node)\n this.stack.push(node)\n this.tokenStack.push([token, errorHandler]) // @ts-expect-error: `end` will be patched later.\n\n node.position = {\n start: point(token.start)\n }\n return node\n }\n /**\n * @param {Handle} [and]\n * @returns {Handle}\n */\n\n function closer(and) {\n return close\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n /**\n * @type {CompileContext['exit']}\n * @this {CompileContext}\n * @param {Token} token\n * @param {OnExitError} [onExitError]\n * @returns {Node}\n */\n\n function exit(token, onExitError) {\n const node = this.stack.pop()\n const open = this.tokenStack.pop()\n\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({\n start: token.start,\n end: token.end\n }) +\n '): it’s not open'\n )\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0])\n } else {\n const handler = open[1] || defaultOnError\n handler.call(this, token, open[0])\n }\n }\n\n node.position.end = point(token.end)\n return node\n }\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n\n function resume() {\n return toString(this.stack.pop())\n } //\n // Handlers.\n //\n\n /** @type {Handle} */\n\n function onenterlistordered() {\n setData('expectingFirstListItemValue', true)\n }\n /** @type {Handle} */\n\n function onenterlistitemvalue(token) {\n if (getData('expectingFirstListItemValue')) {\n const ancestor =\n /** @type {List} */\n this.stack[this.stack.length - 2]\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10)\n setData('expectingFirstListItemValue')\n }\n }\n /** @type {Handle} */\n\n function onexitcodefencedfenceinfo() {\n const data = this.resume()\n const node =\n /** @type {Code} */\n this.stack[this.stack.length - 1]\n node.lang = data\n }\n /** @type {Handle} */\n\n function onexitcodefencedfencemeta() {\n const data = this.resume()\n const node =\n /** @type {Code} */\n this.stack[this.stack.length - 1]\n node.meta = data\n }\n /** @type {Handle} */\n\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (getData('flowCodeInside')) return\n this.buffer()\n setData('flowCodeInside', true)\n }\n /** @type {Handle} */\n\n function onexitcodefenced() {\n const data = this.resume()\n const node =\n /** @type {Code} */\n this.stack[this.stack.length - 1]\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n setData('flowCodeInside')\n }\n /** @type {Handle} */\n\n function onexitcodeindented() {\n const data = this.resume()\n const node =\n /** @type {Code} */\n this.stack[this.stack.length - 1]\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n }\n /** @type {Handle} */\n\n function onexitdefinitionlabelstring(token) {\n // Discard label, use the source content instead.\n const label = this.resume()\n const node =\n /** @type {Definition} */\n this.stack[this.stack.length - 1]\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n /** @type {Handle} */\n\n function onexitdefinitiontitlestring() {\n const data = this.resume()\n const node =\n /** @type {Definition} */\n this.stack[this.stack.length - 1]\n node.title = data\n }\n /** @type {Handle} */\n\n function onexitdefinitiondestinationstring() {\n const data = this.resume()\n const node =\n /** @type {Definition} */\n this.stack[this.stack.length - 1]\n node.url = data\n }\n /** @type {Handle} */\n\n function onexitatxheadingsequence(token) {\n const node =\n /** @type {Heading} */\n this.stack[this.stack.length - 1]\n\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length\n node.depth = depth\n }\n }\n /** @type {Handle} */\n\n function onexitsetextheadingtext() {\n setData('setextHeadingSlurpLineEnding', true)\n }\n /** @type {Handle} */\n\n function onexitsetextheadinglinesequence(token) {\n const node =\n /** @type {Heading} */\n this.stack[this.stack.length - 1]\n node.depth = this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n }\n /** @type {Handle} */\n\n function onexitsetextheading() {\n setData('setextHeadingSlurpLineEnding')\n }\n /** @type {Handle} */\n\n function onenterdata(token) {\n const parent =\n /** @type {Parent} */\n this.stack[this.stack.length - 1]\n /** @type {Node} */\n\n let tail = parent.children[parent.children.length - 1]\n\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text() // @ts-expect-error: we’ll add `end` later.\n\n tail.position = {\n start: point(token.start)\n } // @ts-expect-error: Assume `parent` accepts `text`.\n\n parent.children.push(tail)\n }\n\n this.stack.push(tail)\n }\n /** @type {Handle} */\n\n function onexitdata(token) {\n const tail = this.stack.pop()\n tail.value += this.sliceSerialize(token)\n tail.position.end = point(token.end)\n }\n /** @type {Handle} */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1]\n\n // If we’re at a hard break, include the line ending in there.\n if (getData('atHardBreak')) {\n const tail = context.children[context.children.length - 1]\n tail.position.end = point(token.end)\n setData('atHardBreak')\n return\n }\n\n if (\n !getData('setextHeadingSlurpLineEnding') &&\n config.canContainEols.includes(context.type)\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n /** @type {Handle} */\n\n function onexithardbreak() {\n setData('atHardBreak', true)\n }\n /** @type {Handle} */\n\n function onexithtmlflow() {\n const data = this.resume()\n const node =\n /** @type {HTML} */\n this.stack[this.stack.length - 1]\n node.value = data\n }\n /** @type {Handle} */\n\n function onexithtmltext() {\n const data = this.resume()\n const node =\n /** @type {HTML} */\n this.stack[this.stack.length - 1]\n node.value = data\n }\n /** @type {Handle} */\n\n function onexitcodetext() {\n const data = this.resume()\n const node =\n /** @type {InlineCode} */\n this.stack[this.stack.length - 1]\n node.value = data\n }\n /** @type {Handle} */\n\n function onexitlink() {\n const context =\n /** @type {Link & {identifier: string, label: string}} */\n this.stack[this.stack.length - 1] // To do: clean.\n\n if (getData('inReference')) {\n context.type += 'Reference' // @ts-expect-error: mutate.\n\n context.referenceType = getData('referenceType') || 'shortcut' // @ts-expect-error: mutate.\n\n delete context.url\n delete context.title\n } else {\n // @ts-expect-error: mutate.\n delete context.identifier // @ts-expect-error: mutate.\n\n delete context.label\n }\n\n setData('referenceType')\n }\n /** @type {Handle} */\n\n function onexitimage() {\n const context =\n /** @type {Image & {identifier: string, label: string}} */\n this.stack[this.stack.length - 1] // To do: clean.\n\n if (getData('inReference')) {\n context.type += 'Reference' // @ts-expect-error: mutate.\n\n context.referenceType = getData('referenceType') || 'shortcut' // @ts-expect-error: mutate.\n\n delete context.url\n delete context.title\n } else {\n // @ts-expect-error: mutate.\n delete context.identifier // @ts-expect-error: mutate.\n\n delete context.label\n }\n\n setData('referenceType')\n }\n /** @type {Handle} */\n\n function onexitlabeltext(token) {\n const ancestor =\n /** @type {(Link|Image) & {identifier: string, label: string}} */\n this.stack[this.stack.length - 2]\n const string = this.sliceSerialize(token)\n ancestor.label = decodeString(string)\n ancestor.identifier = normalizeIdentifier(string).toLowerCase()\n }\n /** @type {Handle} */\n\n function onexitlabel() {\n const fragment =\n /** @type {Fragment} */\n this.stack[this.stack.length - 1]\n const value = this.resume()\n const node =\n /** @type {(Link|Image) & {identifier: string, label: string}} */\n this.stack[this.stack.length - 1] // Assume a reference.\n\n setData('inReference', true)\n\n if (node.type === 'link') {\n // @ts-expect-error: Assume static phrasing content.\n node.children = fragment.children\n } else {\n node.alt = value\n }\n }\n /** @type {Handle} */\n\n function onexitresourcedestinationstring() {\n const data = this.resume()\n const node =\n /** @type {Link|Image} */\n this.stack[this.stack.length - 1]\n node.url = data\n }\n /** @type {Handle} */\n\n function onexitresourcetitlestring() {\n const data = this.resume()\n const node =\n /** @type {Link|Image} */\n this.stack[this.stack.length - 1]\n node.title = data\n }\n /** @type {Handle} */\n\n function onexitresource() {\n setData('inReference')\n }\n /** @type {Handle} */\n\n function onenterreference() {\n setData('referenceType', 'collapsed')\n }\n /** @type {Handle} */\n\n function onexitreferencestring(token) {\n const label = this.resume()\n const node =\n /** @type {LinkReference|ImageReference} */\n this.stack[this.stack.length - 1]\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n setData('referenceType', 'full')\n }\n /** @type {Handle} */\n\n function onexitcharacterreferencemarker(token) {\n setData('characterReferenceType', token.type)\n }\n /** @type {Handle} */\n\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token)\n const type = getData('characterReferenceType')\n /** @type {string} */\n\n let value\n\n if (type) {\n value = decodeNumericCharacterReference(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n setData('characterReferenceType')\n } else {\n // @ts-expect-error `decodeNamedCharacterReference` can return false for\n // invalid named character references, but everything we’ve tokenized is\n // valid.\n value = decodeNamedCharacterReference(data)\n }\n\n const tail = this.stack.pop()\n tail.value += value\n tail.position.end = point(token.end)\n }\n /** @type {Handle} */\n\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n const node =\n /** @type {Link} */\n this.stack[this.stack.length - 1]\n node.url = this.sliceSerialize(token)\n }\n /** @type {Handle} */\n\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n const node =\n /** @type {Link} */\n this.stack[this.stack.length - 1]\n node.url = 'mailto:' + this.sliceSerialize(token)\n } //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n }\n }\n /** @returns {Code} */\n\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n }\n }\n /** @returns {InlineCode} */\n\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n }\n }\n /** @returns {Definition} */\n\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n /** @returns {Emphasis} */\n\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n }\n }\n /** @returns {Heading} */\n\n function heading() {\n // @ts-expect-error `depth` will be set later.\n return {\n type: 'heading',\n depth: undefined,\n children: []\n }\n }\n /** @returns {Break} */\n\n function hardBreak() {\n return {\n type: 'break'\n }\n }\n /** @returns {HTML} */\n\n function html() {\n return {\n type: 'html',\n value: ''\n }\n }\n /** @returns {Image} */\n\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n }\n }\n /** @returns {Link} */\n\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n }\n }\n /**\n * @param {Token} token\n * @returns {List}\n */\n\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n // @ts-expect-error Patched.\n spread: token._spread,\n children: []\n }\n }\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n\n function listItem(token) {\n return {\n type: 'listItem',\n // @ts-expect-error Patched.\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n /** @returns {Paragraph} */\n\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n }\n }\n /** @returns {Strong} */\n\n function strong() {\n return {\n type: 'strong',\n children: []\n }\n }\n /** @returns {Text} */\n\n function text() {\n return {\n type: 'text',\n value: ''\n }\n }\n /** @returns {ThematicBreak} */\n\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n }\n }\n}\n/**\n * @param {Extension} combined\n * @param {Array>} extensions\n * @returns {Extension}\n */\n\nfunction configure(combined, extensions) {\n let index = -1\n\n while (++index < extensions.length) {\n const value = extensions[index]\n\n if (Array.isArray(value)) {\n configure(combined, value)\n } else {\n extension(combined, value)\n }\n }\n\n return combined\n}\n/**\n * @param {Extension} combined\n * @param {Extension} extension\n * @returns {void}\n */\n\nfunction extension(combined, extension) {\n /** @type {string} */\n let key\n\n for (key in extension) {\n if (own.call(extension, key)) {\n const list = key === 'canContainEols' || key === 'transforms'\n const maybe = own.call(combined, key) ? combined[key] : undefined\n /* c8 ignore next */\n\n const left = maybe || (combined[key] = list ? [] : {})\n const right = extension[key]\n\n if (right) {\n if (list) {\n // @ts-expect-error: `left` is an array.\n combined[key] = [...left, ...right]\n } else {\n Object.assign(left, right)\n }\n }\n }\n }\n}\n/** @type {OnEnterError} */\n\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error(\n 'Cannot close `' +\n left.type +\n '` (' +\n stringifyPosition({\n start: left.start,\n end: left.end\n }) +\n '): a different token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is open'\n )\n } else {\n throw new Error(\n 'Cannot close document, a token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is still open'\n )\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\nimport {subtokenize} from 'micromark-util-subtokenize'\n/**\n * @param {Array} events\n * @returns {Array}\n */\n\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').Create} Create\n */\nimport {combineExtensions} from 'micromark-util-combine-extensions'\nimport {content} from './initialize/content.js'\nimport {document} from './initialize/document.js'\nimport {flow} from './initialize/flow.js'\nimport {text, string} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n/**\n * @param {ParseOptions} [options]\n * @returns {ParseContext}\n */\n\nexport function parse(options = {}) {\n /** @type {FullNormalizedExtension} */\n // @ts-expect-error `defaultConstructs` is full, so the result will be too.\n const constructs = combineExtensions(\n // @ts-expect-error Same as above.\n [defaultConstructs].concat(options.extensions || [])\n )\n /** @type {ParseContext} */\n\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n }\n return parser\n /**\n * @param {InitialConstruct} initial\n */\n\n function create(initial) {\n return creator\n /** @type {Create} */\n\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n","import remarkParse from './lib/index.js'\n\nexport default remarkParse\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/** @type {import('unified').Plugin<[Options?] | void[], string, Root>} */\nexport default function remarkParse(options) {\n /** @type {import('unified').ParserFunction} */\n const parser = (doc) => {\n // Assume options.\n const settings = /** @type {Options} */ (this.data('settings'))\n\n return fromMarkdown(\n doc,\n Object.assign({}, settings, options, {\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: this.data('micromarkExtensions') || [],\n mdastExtensions: this.data('fromMarkdownExtensions') || []\n })\n )\n }\n\n Object.assign(this, {Parser: parser})\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist').Literal} Literal\n * @typedef {Object.} Props\n * @typedef {Array.|string} ChildrenOrValue\n *\n * @typedef {(, C extends Node[]>(type: T, props: P, children: C) => {type: T, children: C} & P)} BuildParentWithProps\n * @typedef {(>(type: T, props: P, value: string) => {type: T, value: string} & P)} BuildLiteralWithProps\n * @typedef {(>(type: T, props: P) => {type: T} & P)} BuildVoidWithProps\n * @typedef {((type: T, children: C) => {type: T, children: C})} BuildParent\n * @typedef {((type: T, value: string) => {type: T, value: string})} BuildLiteral\n * @typedef {((type: T) => {type: T})} BuildVoid\n */\n\nexport var u = /**\n * @type {BuildVoid & BuildVoidWithProps & BuildLiteral & BuildLiteralWithProps & BuildParent & BuildParentWithProps}\n */ (\n /**\n * @param {string} type Type of node\n * @param {Props|ChildrenOrValue} [props] Additional properties for node (or `children` or `value`)\n * @param {ChildrenOrValue} [value] `children` or `value` of node\n * @returns {Node}\n */\n function (type, props, value) {\n /** @type {Node} */\n var node = {type: String(type)}\n\n if (\n (value === undefined || value === null) &&\n (typeof props === 'string' || Array.isArray(props))\n ) {\n value = props\n } else {\n Object.assign(node, props)\n }\n\n if (Array.isArray(value)) {\n node.children = value\n } else if (value !== undefined && value !== null) {\n node.value = String(value)\n }\n\n return node\n }\n)\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n * @typedef {import('./complex-types.js').Visitor} Visitor\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\n/**\n * Visit children of tree which pass test.\n *\n * @param tree\n * Tree to walk\n * @param [test]\n * `unist-util-is`-compatible test\n * @param visitor\n * Function called for nodes that pass `test`.\n * @param reverse\n * Traverse in reverse preorder (NRL) instead of preorder (NLR) (default).\n */\nexport const visit =\n /**\n * @type {(\n * ((tree: Tree, test: Check, visitor: import('./complex-types.js').BuildVisitor, reverse?: boolean) => void) &\n * ((tree: Tree, visitor: import('./complex-types.js').BuildVisitor, reverse?: boolean) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {import('./complex-types.js').Visitor} visitor\n * @param {boolean} [reverse]\n */\n function (tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n visitor = test\n test = null\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {Node} node\n * @param {Array} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n return visitor(\n node,\n parent ? parent.children.indexOf(node) : null,\n parent\n )\n }\n }\n )\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n","/**\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Get the starting point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointStart = point('start')\n\n/**\n * Get the ending point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointEnd = point('end')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {NodeLike | Node | null | undefined} [node]\n * Node.\n * @returns {Position}\n * Position.\n */\nexport function position(node) {\n return {start: pointStart(node), end: pointEnd(node)}\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'start' | 'end'} type\n * Side.\n * @returns\n * Getter.\n */\nfunction point(type) {\n return point\n\n /**\n * Get the point info of `node` at a bound side.\n *\n * @param {NodeLike | Node | null | undefined} [node]\n * @returns {Point}\n */\n function point(node) {\n const point = (node && node.position && node.position[type]) || {}\n\n // To do: next major: don’t return points when invalid.\n return {\n // @ts-expect-error: in practice, null is allowed.\n line: point.line || null,\n // @ts-expect-error: in practice, null is allowed.\n column: point.column || null,\n // @ts-expect-error: in practice, null is allowed.\n offset: point.offset > -1 ? point.offset : null\n }\n }\n}\n","/**\n * @typedef {import('mdast').Root|import('mdast').Content} Node\n * @typedef {import('mdast').Definition} Definition\n */\n\nimport {visit} from 'unist-util-visit'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Find definitions in `node`.\n * Uses CommonMark precedence, which means that earlier definitions are\n * preferred over duplicate later definitions.\n *\n * @param {Node} node\n */\nexport function definitions(node) {\n /** @type {Record} */\n const cache = Object.create(null)\n\n if (!node || !node.type) {\n throw new Error('mdast-util-definitions expected node')\n }\n\n visit(node, 'definition', (definition) => {\n const id = clean(definition.identifier)\n if (id && !own.call(cache, id)) {\n cache[id] = definition\n }\n })\n\n return definition\n\n /**\n * Get a node from the bound definition cache.\n *\n * @param {string} identifier\n * @returns {Definition|null}\n */\n function definition(identifier) {\n const id = clean(identifier)\n return id && own.call(cache, id) ? cache[id] : null\n }\n}\n\n/**\n * @param {string} [value]\n * @returns {string}\n */\nfunction clean(value) {\n return String(value || '').toUpperCase()\n}\n","/**\n * @typedef {import('mdast').Root|import('mdast').Parent['children'][number]} MdastNode\n * @typedef {import('./index.js').H} H\n * @typedef {import('./index.js').Handler} Handler\n * @typedef {import('./index.js').Content} Content\n */\n\nimport {u} from 'unist-builder'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Transform an unknown node.\n * @type {Handler}\n * @param {MdastNode} node\n */\nfunction unknown(h, node) {\n const data = node.data || {}\n\n if (\n 'value' in node &&\n !(\n own.call(data, 'hName') ||\n own.call(data, 'hProperties') ||\n own.call(data, 'hChildren')\n )\n ) {\n return h.augment(node, u('text', node.value))\n }\n\n return h(node, 'div', all(h, node))\n}\n\n/**\n * @type {Handler}\n * @param {MdastNode} node\n */\nexport function one(h, node, parent) {\n const type = node && node.type\n /** @type {Handler} */\n let fn\n\n // Fail on non-nodes.\n if (!type) {\n throw new Error('Expected node, got `' + node + '`')\n }\n\n if (own.call(h.handlers, type)) {\n fn = h.handlers[type]\n } else if (h.passThrough && h.passThrough.includes(type)) {\n fn = returnNode\n } else {\n fn = h.unknownHandler\n }\n\n return (typeof fn === 'function' ? fn : unknown)(h, node, parent)\n}\n\n/**\n * @type {Handler}\n * @param {MdastNode} node\n */\nfunction returnNode(h, node) {\n // @ts-expect-error: Pass through custom node.\n return 'children' in node ? {...node, children: all(h, node)} : node\n}\n\n/**\n * @param {H} h\n * @param {MdastNode} parent\n */\nexport function all(h, parent) {\n /** @type {Array} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n\n while (++index < nodes.length) {\n const result = one(h, nodes[index], parent)\n\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = result.value.replace(/^\\s+/, '')\n }\n\n if (!Array.isArray(result) && result.type === 'element') {\n const head = result.children[0]\n\n if (head && head.type === 'text') {\n head.value = head.value.replace(/^\\s+/, '')\n }\n }\n }\n\n if (Array.isArray(result)) {\n values.push(...result)\n } else {\n values.push(result)\n }\n }\n }\n }\n\n return values\n}\n","import {asciiAlphanumeric} from 'micromark-util-character'\nimport {encode} from 'micromark-util-encode'\n\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri` below).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * Then, a regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`,\n * or `/^https?$/i` for `img[src]`.\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string|undefined} url\n * @param {RegExp} [protocol]\n * @returns {string}\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''))\n\n if (!protocol) {\n return value\n }\n\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n\n if (\n // If there is no protocol, it’s relative.\n colon < 0 || // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) || // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))\n ) {\n return value\n }\n\n return ''\n}\n/**\n * Normalize a URL (such as used in definitions).\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * @returns {string}\n */\n\nexport function normalizeUri(value) {\n /** @type {Array} */\n const result = []\n let index = -1\n let start = 0\n let skip = 0\n\n while (++index < value.length) {\n const code = value.charCodeAt(index)\n /** @type {string} */\n\n let replace = '' // A correct percent encoded value.\n\n if (\n code === 37 &&\n asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n asciiAlphanumeric(value.charCodeAt(index + 2))\n ) {\n skip = 2\n } // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code)\n }\n } // Astral.\n else if (code > 55295 && code < 57344) {\n const next = value.charCodeAt(index + 1) // A correct surrogate pair.\n\n if (code < 56320 && next > 56319 && next < 57344) {\n replace = String.fromCharCode(code, next)\n skip = 1\n } // Lone surrogate.\n else {\n replace = '\\uFFFD'\n }\n } // Unicode.\n else {\n replace = String.fromCharCode(code)\n }\n\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace))\n start = index + skip + 1\n replace = ''\n }\n\n if (skip) {\n index += skip\n skip = 0\n }\n }\n\n return result.join('') + value.slice(start)\n}\n","/**\n * @typedef {import('./index.js').Content} Content\n */\n\nimport {u} from 'unist-builder'\n\n/**\n * Wrap `nodes` with line feeds between each entry.\n * Optionally adds line feeds at the start and end.\n *\n * @param {Array} nodes\n * @param {boolean} [loose=false]\n * @returns {Array}\n */\nexport function wrap(nodes, loose) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push(u('text', '\\n'))\n }\n\n while (++index < nodes.length) {\n if (index) result.push(u('text', '\\n'))\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push(u('text', '\\n'))\n }\n\n return result\n}\n","/**\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {u} from 'unist-builder'\n\n/**\n * @type {Handler}\n * @param {FootnoteReference} node\n */\nexport function footnoteReference(h, node) {\n const id = String(node.identifier)\n const safeId = normalizeUri(id.toLowerCase())\n const index = h.footnoteOrder.indexOf(id)\n /** @type {number} */\n let counter\n\n if (index === -1) {\n h.footnoteOrder.push(id)\n h.footnoteCounts[id] = 1\n counter = h.footnoteOrder.length\n } else {\n h.footnoteCounts[id]++\n counter = index + 1\n }\n\n const reuseCounter = h.footnoteCounts[id]\n\n return h(node, 'sup', [\n h(\n node.position,\n 'a',\n {\n href: '#' + h.clobberPrefix + 'fn-' + safeId,\n id:\n h.clobberPrefix +\n 'fnref-' +\n safeId +\n (reuseCounter > 1 ? '-' + reuseCounter : ''),\n dataFootnoteRef: true,\n ariaDescribedBy: 'footnote-label'\n },\n [u('text', String(counter))]\n )\n ])\n}\n","/**\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('./index.js').Handler} Handler\n * @typedef {import('./index.js').Content} Content\n */\n\nimport {u} from 'unist-builder'\nimport {all} from './traverse.js'\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @type {Handler}\n * @param {ImageReference|LinkReference} node\n * @returns {Content|Array}\n */\nexport function revert(h, node) {\n const subtype = node.referenceType\n let suffix = ']'\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return u('text', '![' + node.alt + suffix)\n }\n\n const contents = all(h, node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift(u('text', '['))\n }\n\n const tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push(u('text', suffix))\n }\n\n return contents\n}\n","/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').List} List\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Element} Element\n * @typedef {import('../index.js').Handler} Handler\n * @typedef {import('../index.js').Content} Content\n */\n\nimport {u} from 'unist-builder'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {ListItem} node\n * @param {List} parent\n */\nexport function listItem(h, node, parent) {\n const result = all(h, node)\n const loose = parent ? listLoose(parent) : listItemLoose(node)\n /** @type {Properties} */\n const props = {}\n /** @type {Array} */\n const wrapped = []\n\n if (typeof node.checked === 'boolean') {\n /** @type {Element} */\n let paragraph\n\n if (\n result[0] &&\n result[0].type === 'element' &&\n result[0].tagName === 'p'\n ) {\n paragraph = result[0]\n } else {\n paragraph = h(null, 'p', [])\n result.unshift(paragraph)\n }\n\n if (paragraph.children.length > 0) {\n paragraph.children.unshift(u('text', ' '))\n }\n\n paragraph.children.unshift(\n h(null, 'input', {\n type: 'checkbox',\n checked: node.checked,\n disabled: true\n })\n )\n\n // According to github-markdown-css, this class hides bullet.\n // See: .\n props.className = ['task-list-item']\n }\n\n let index = -1\n\n while (++index < result.length) {\n const child = result[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (\n loose ||\n index !== 0 ||\n child.type !== 'element' ||\n child.tagName !== 'p'\n ) {\n wrapped.push(u('text', '\\n'))\n }\n\n if (child.type === 'element' && child.tagName === 'p' && !loose) {\n wrapped.push(...child.children)\n } else {\n wrapped.push(child)\n }\n }\n\n const tail = result[result.length - 1]\n\n // Add a final eol.\n if (tail && (loose || !('tagName' in tail) || tail.tagName !== 'p')) {\n wrapped.push(u('text', '\\n'))\n }\n\n return h(node, 'li', props, wrapped)\n}\n\n/**\n * @param {List} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n let loose = node.spread\n const children = node.children\n let index = -1\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index])\n }\n\n return Boolean(loose)\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n const spread = node.spread\n\n return spread === undefined || spread === null\n ? node.children.length > 1\n : spread\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Trimmed value.\n */\nexport function trimLines(value) {\n const source = String(value)\n const search = /\\r?\\n|\\r/g\n let match = search.exec(source)\n let last = 0\n /** @type {Array} */\n const lines = []\n\n while (match) {\n lines.push(\n trimLine(source.slice(last, match.index), last > 0, true),\n match[0]\n )\n\n last = match.index + match[0].length\n match = search.exec(source)\n }\n\n lines.push(trimLine(source.slice(last), last > 0, false))\n\n return lines.join('')\n}\n\n/**\n * @param {string} value\n * Line to trim.\n * @param {boolean} start\n * Whether to trim the start of the line.\n * @param {boolean} end\n * Whether to trim the end of the line.\n * @returns {string}\n * Trimmed line.\n */\nfunction trimLine(value, start, end) {\n let startIndex = 0\n let endIndex = value.length\n\n if (start) {\n let code = value.codePointAt(startIndex)\n\n while (code === tab || code === space) {\n startIndex++\n code = value.codePointAt(startIndex)\n }\n }\n\n if (end) {\n let code = value.codePointAt(endIndex - 1)\n\n while (code === tab || code === space) {\n endIndex--\n code = value.codePointAt(endIndex - 1)\n }\n }\n\n return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {footnote} from './footnote.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\nexport const handlers = {\n blockquote,\n break: hardBreak,\n code,\n delete: strikethrough,\n emphasis,\n footnoteReference,\n footnote,\n heading,\n html,\n imageReference,\n image,\n inlineCode,\n linkReference,\n link,\n listItem,\n list,\n paragraph,\n root,\n strong,\n table,\n text,\n thematicBreak,\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n return null\n}\n","/**\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {wrap} from '../wrap.js'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Blockquote} node\n */\nexport function blockquote(h, node) {\n return h(node, 'blockquote', wrap(all(h, node), true))\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {u} from 'unist-builder'\n\n/**\n * @type {Handler}\n * @param {Break} node\n * @returns {Array}\n */\nexport function hardBreak(h, node) {\n return [h(node, 'br'), u('text', '\\n')]\n}\n","/**\n * @typedef {import('mdast').Code} Code\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {u} from 'unist-builder'\n\n/**\n * @type {Handler}\n * @param {Code} node\n */\nexport function code(h, node) {\n const value = node.value ? node.value + '\\n' : ''\n // To do: next major, use `node.lang` w/o regex, the splitting’s been going\n // on for years in remark now.\n const lang = node.lang && node.lang.match(/^[^ \\t]+(?=[ \\t]|$)/)\n /** @type {Properties} */\n const props = {}\n\n if (lang) {\n props.className = ['language-' + lang]\n }\n\n const code = h(node, 'code', props, [u('text', value)])\n\n if (node.meta) {\n code.data = {meta: node.meta}\n }\n\n return h(node.position, 'pre', [code])\n}\n","/**\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Delete} node\n */\nexport function strikethrough(h, node) {\n return h(node, 'del', all(h, node))\n}\n","/**\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Emphasis} node\n */\nexport function emphasis(h, node) {\n return h(node, 'em', all(h, node))\n}\n","/**\n * @typedef {import('mdast').Footnote} Footnote\n * @typedef {import('../index.js').Handler} Handler\n *\n * @todo\n * `footnote` (or “inline note”) are a pandoc footnotes feature (`^[a note]`)\n * that does not exist in GFM.\n * We still have support for it, so that things remain working with\n * `micromark-extension-footnote` and `mdast-util-footnote`, but in the future\n * we might be able to remove it?\n */\n\nimport {footnoteReference} from './footnote-reference.js'\n\n/**\n * @type {Handler}\n * @param {Footnote} node\n */\nexport function footnote(h, node) {\n const footnoteById = h.footnoteById\n let no = 1\n\n while (no in footnoteById) no++\n\n const identifier = String(no)\n\n footnoteById[identifier] = {\n type: 'footnoteDefinition',\n identifier,\n children: [{type: 'paragraph', children: node.children}],\n position: node.position\n }\n\n return footnoteReference(h, {\n type: 'footnoteReference',\n identifier,\n position: node.position\n })\n}\n","/**\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Heading} node\n */\nexport function heading(h, node) {\n return h(node, 'h' + node.depth, all(h, node))\n}\n","/**\n * @typedef {import('mdast').HTML} HTML\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {u} from 'unist-builder'\n\n/**\n * Return either a `raw` node in dangerous mode, otherwise nothing.\n *\n * @type {Handler}\n * @param {HTML} node\n */\nexport function html(h, node) {\n return h.dangerous ? h.augment(node, u('raw', node.value)) : null\n}\n","/**\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * @type {Handler}\n * @param {ImageReference} node\n */\nexport function imageReference(h, node) {\n const def = h.definition(node.identifier)\n\n if (!def) {\n return revert(h, node)\n }\n\n /** @type {Properties} */\n const props = {src: normalizeUri(def.url || ''), alt: node.alt}\n\n if (def.title !== null && def.title !== undefined) {\n props.title = def.title\n }\n\n return h(node, 'img', props)\n}\n","/**\n * @typedef {import('mdast').Image} Image\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * @type {Handler}\n * @param {Image} node\n */\nexport function image(h, node) {\n /** @type {Properties} */\n const props = {src: normalizeUri(node.url), alt: node.alt}\n\n if (node.title !== null && node.title !== undefined) {\n props.title = node.title\n }\n\n return h(node, 'img', props)\n}\n","/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {u} from 'unist-builder'\n\n/**\n * @type {Handler}\n * @param {InlineCode} node\n */\nexport function inlineCode(h, node) {\n return h(node, 'code', [u('text', node.value.replace(/\\r?\\n|\\r/g, ' '))])\n}\n","/**\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {LinkReference} node\n */\nexport function linkReference(h, node) {\n const def = h.definition(node.identifier)\n\n if (!def) {\n return revert(h, node)\n }\n\n /** @type {Properties} */\n const props = {href: normalizeUri(def.url || '')}\n\n if (def.title !== null && def.title !== undefined) {\n props.title = def.title\n }\n\n return h(node, 'a', props, all(h, node))\n}\n","/**\n * @typedef {import('mdast').Link} Link\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Link} node\n */\nexport function link(h, node) {\n /** @type {Properties} */\n const props = {href: normalizeUri(node.url)}\n\n if (node.title !== null && node.title !== undefined) {\n props.title = node.title\n }\n\n return h(node, 'a', props, all(h, node))\n}\n","/**\n * @typedef {import('mdast').List} List\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {wrap} from '../wrap.js'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {List} node\n * @returns {Element}\n */\nexport function list(h, node) {\n /** @type {Properties} */\n const props = {}\n const name = node.ordered ? 'ol' : 'ul'\n const items = all(h, node)\n let index = -1\n\n if (typeof node.start === 'number' && node.start !== 1) {\n props.start = node.start\n }\n\n // Like GitHub, add a class for custom styling.\n while (++index < items.length) {\n const item = items[index]\n\n if (\n item.type === 'element' &&\n item.tagName === 'li' &&\n item.properties &&\n Array.isArray(item.properties.className) &&\n item.properties.className.includes('task-list-item')\n ) {\n props.className = ['contains-task-list']\n break\n }\n }\n\n return h(node, name, props, wrap(items, true))\n}\n","/**\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Paragraph} node\n */\nexport function paragraph(h, node) {\n return h(node, 'p', all(h, node))\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {u} from 'unist-builder'\nimport {all} from '../traverse.js'\nimport {wrap} from '../wrap.js'\n\n/**\n * @type {Handler}\n * @param {Root} node\n */\nexport function root(h, node) {\n // @ts-expect-error `root`s are also fine.\n return h.augment(node, u('root', wrap(all(h, node))))\n}\n","/**\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Strong} node\n */\nexport function strong(h, node) {\n return h(node, 'strong', all(h, node))\n}\n","/**\n * @typedef {import('mdast').Table} Table\n * @typedef {import('hast').Element} Element\n * @typedef {import('../index.js').Handler} Handler\n * @typedef {import('../index.js').Content} Content\n */\n\nimport {pointStart, pointEnd} from 'unist-util-position'\nimport {wrap} from '../wrap.js'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Table} node\n */\nexport function table(h, node) {\n const rows = node.children\n let index = -1\n const align = node.align || []\n /** @type {Array} */\n const result = []\n\n while (++index < rows.length) {\n const row = rows[index].children\n const name = index === 0 ? 'th' : 'td'\n /** @type {Array} */\n const out = []\n let cellIndex = -1\n const length = node.align ? align.length : row.length\n\n while (++cellIndex < length) {\n const cell = row[cellIndex]\n out.push(\n h(cell, name, {align: align[cellIndex]}, cell ? all(h, cell) : [])\n )\n }\n\n result[index] = h(rows[index], 'tr', wrap(out, true))\n }\n\n return h(\n node,\n 'table',\n wrap(\n [h(result[0].position, 'thead', wrap([result[0]], true))].concat(\n result[1]\n ? h(\n {\n start: pointStart(result[1]),\n end: pointEnd(result[result.length - 1])\n },\n 'tbody',\n wrap(result.slice(1), true)\n )\n : []\n ),\n true\n )\n )\n}\n","/**\n * @typedef {import('mdast').Text} Text\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {trimLines} from 'trim-lines'\nimport {u} from 'unist-builder'\n\n/**\n * @type {Handler}\n * @param {Text} node\n */\nexport function text(h, node) {\n return h.augment(node, u('text', trimLines(String(node.value))))\n}\n","/**\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('hast').Element} Element\n * @typedef {import('../index.js').Handler} Handler\n */\n\n/**\n * @type {Handler}\n * @param {ThematicBreak} [node]\n * @returns {Element}\n */\nexport function thematicBreak(h, node) {\n return h(node, 'hr')\n}\n","/**\n * @typedef {import('mdast').Root|import('mdast').Parent['children'][number]} MdastNode\n * @typedef {import('hast').Root|import('hast').Parent['children'][number]} HastNode\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').FootnoteDefinition} FootnoteDefinition\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} Content\n * @typedef {import('unist-util-position').PositionLike} PositionLike\n *\n * @typedef EmbeddedHastFields\n * @property {string} [hName]\n * Defines the tag name of an element.\n * @property {Properties} [hProperties]\n * Defines the properties of an element.\n * @property {Array} [hChildren]\n * Defines the (hast) children of an element.\n *\n * @typedef {Record & EmbeddedHastFields} Data\n * unist data with embedded hast fields.\n *\n * @typedef {MdastNode & {data?: Data}} NodeWithData\n * unist node with embedded hast data.\n *\n * @callback Handler\n * Handle a node.\n * @param {H} h\n * Handle context.\n * @param {any} node\n * mdast node to handle.\n * @param {Parent|null} parent\n * Parent of `node`.\n * @returns {Content|Array|null|undefined}\n * hast node.\n *\n * @callback HFunctionProps\n * @param {MdastNode|PositionLike|null|undefined} node\n * mdast node or unist position.\n * @param {string} tagName\n * HTML tag name.\n * @param {Properties} props\n * Properties.\n * @param {Array?} [children]\n * hast content.\n * @returns {Element}\n * Compiled element.\n *\n * @callback HFunctionNoProps\n * @param {MdastNode|PositionLike|null|undefined} node\n * mdast node or unist position.\n * @param {string} tagName\n * HTML tag name.\n * @param {Array?} [children]\n * hast content\n * @returns {Element}\n * Compiled element.\n *\n * @typedef HFields\n * @property {boolean} dangerous\n * Whether HTML is allowed.\n * @property {string} clobberPrefix\n * Prefix to use to prevent DOM clobbering.\n * @property {string} footnoteLabel\n * Label to use to introduce the footnote section.\n * @property {string} footnoteLabelTagName\n * HTML used for the footnote label.\n * @property {Properties} footnoteLabelProperties\n * Properties on the HTML tag used for the footnote label.\n * @property {string} footnoteBackLabel\n * Label to use to go back to a footnote call from the footnote section.\n * @property {(identifier: string) => Definition|null} definition\n * Definition cache.\n * @property {Record} footnoteById\n * Footnote cache.\n * @property {Array} footnoteOrder\n * Order in which footnotes occur.\n * @property {Record} footnoteCounts\n * Counts the same footnote was used.\n * @property {Handlers} handlers\n * Applied handlers.\n * @property {Handler} unknownHandler\n * Handler for any none not in `passThrough` or otherwise handled.\n * @property {(left: NodeWithData|PositionLike|null|undefined, right: Content) => Content} augment\n * Like `h` but lower-level and usable on non-elements.\n * @property {Array} passThrough\n * List of node types to pass through untouched (except for their children).\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean} [allowDangerousHtml=false]\n * Whether to allow `html` nodes and inject them as `raw` HTML.\n * @property {string} [clobberPrefix='user-content-']\n * Prefix to use before the `id` attribute to prevent it from *clobbering*.\n * attributes.\n * DOM clobbering is this:\n *\n * ```html\n *

    \n * \n * ```\n *\n * Elements by their ID are made available in browsers on the `window` object.\n * Using a prefix prevents this from being a problem.\n * @property {string} [footnoteLabel='Footnotes']\n * Label to use for the footnotes section.\n * Affects screen reader users.\n * Change it if you’re authoring in a different language.\n * @property {string} [footnoteLabelTagName='h2']\n * HTML tag to use for the footnote label.\n * Can be changed to match your document structure and play well with your choice of css.\n * @property {Properties} [footnoteLabelProperties={className: ['sr-only']}]\n * Properties to use on the footnote label.\n * A 'sr-only' class is added by default to hide this from sighted users.\n * Change it to make the label visible, or add classes for other purposes.\n * @property {string} [footnoteBackLabel='Back to content']\n * Label to use from backreferences back to their footnote call.\n * Affects screen reader users.\n * Change it if you’re authoring in a different language.\n * @property {Handlers} [handlers]\n * Object mapping mdast nodes to functions handling them\n * @property {Array} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast\n * @property {Handler} [unknownHandler]\n * Handler for all unknown nodes.\n *\n * @typedef {Record} Handlers\n * Map of node types to handlers\n * @typedef {HFunctionProps & HFunctionNoProps & HFields} H\n * Handle context\n */\n\nimport {u} from 'unist-builder'\nimport {visit} from 'unist-util-visit'\nimport {pointStart, pointEnd} from 'unist-util-position'\nimport {generated} from 'unist-util-generated'\nimport {definitions} from 'mdast-util-definitions'\nimport {one} from './traverse.js'\nimport {footer} from './footer.js'\nimport {handlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Turn mdast into hast.\n *\n * @param {MdastNode} tree\n * mdast node.\n * @param {Options} [options]\n * Configuration (optional).\n * @returns {H}\n * `h` function.\n */\nfunction factory(tree, options) {\n const settings = options || {}\n const dangerous = settings.allowDangerousHtml || false\n /** @type {Record} */\n const footnoteById = {}\n\n h.dangerous = dangerous\n h.clobberPrefix =\n settings.clobberPrefix === undefined || settings.clobberPrefix === null\n ? 'user-content-'\n : settings.clobberPrefix\n h.footnoteLabel = settings.footnoteLabel || 'Footnotes'\n h.footnoteLabelTagName = settings.footnoteLabelTagName || 'h2'\n h.footnoteLabelProperties = settings.footnoteLabelProperties || {\n className: ['sr-only']\n }\n h.footnoteBackLabel = settings.footnoteBackLabel || 'Back to content'\n h.definition = definitions(tree)\n h.footnoteById = footnoteById\n /** @type {Array} */\n h.footnoteOrder = []\n /** @type {Record} */\n h.footnoteCounts = {}\n h.augment = augment\n h.handlers = {...handlers, ...settings.handlers}\n h.unknownHandler = settings.unknownHandler\n h.passThrough = settings.passThrough\n\n visit(tree, 'footnoteDefinition', (definition) => {\n const id = String(definition.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: .\n if (!own.call(footnoteById, id)) {\n footnoteById[id] = definition\n }\n })\n\n // @ts-expect-error Hush, it’s fine!\n return h\n\n /**\n * Finalise the created `right`, a hast node, from `left`, an mdast node.\n *\n * @param {(NodeWithData|PositionLike)?} left\n * @param {Content} right\n * @returns {Content}\n */\n function augment(left, right) {\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (left && 'data' in left && left.data) {\n /** @type {Data} */\n const data = left.data\n\n if (data.hName) {\n if (right.type !== 'element') {\n right = {\n type: 'element',\n tagName: '',\n properties: {},\n children: []\n }\n }\n\n right.tagName = data.hName\n }\n\n if (right.type === 'element' && data.hProperties) {\n right.properties = {...right.properties, ...data.hProperties}\n }\n\n if ('children' in right && right.children && data.hChildren) {\n right.children = data.hChildren\n }\n }\n\n if (left) {\n const ctx = 'type' in left ? left : {position: left}\n\n if (!generated(ctx)) {\n // @ts-expect-error: fine.\n right.position = {start: pointStart(ctx), end: pointEnd(ctx)}\n }\n }\n\n return right\n }\n\n /**\n * Create an element for `node`.\n *\n * @type {HFunctionProps}\n */\n function h(node, tagName, props, children) {\n if (Array.isArray(props)) {\n children = props\n props = {}\n }\n\n // @ts-expect-error augmenting an element yields an element.\n return augment(node, {\n type: 'element',\n tagName,\n properties: props || {},\n children: children || []\n })\n }\n}\n\n/**\n * Transform `tree` (an mdast node) to a hast node.\n *\n * @param {MdastNode} tree mdast node\n * @param {Options} [options] Configuration\n * @returns {HastNode|null|undefined} hast node\n */\nexport function toHast(tree, options) {\n const h = factory(tree, options)\n const node = one(h, tree, null)\n const foot = footer(h)\n\n if (foot) {\n // @ts-expect-error If there’s a footer, there were definitions, meaning block\n // content.\n // So assume `node` is a parent node.\n node.children.push(u('text', '\\n'), foot)\n }\n\n return Array.isArray(node) ? {type: 'root', children: node} : node\n}\n\nexport {handlers as defaultHandlers} from './handlers/index.js'\n","/**\n * @typedef {Object} PointLike\n * @property {number} [line]\n * @property {number} [column]\n * @property {number} [offset]\n *\n * @typedef {Object} PositionLike\n * @property {PointLike} [start]\n * @property {PointLike} [end]\n *\n * @typedef {Object} NodeLike\n * @property {PositionLike} [position]\n */\n\n/**\n * Check if `node` is *generated*.\n *\n * @param {NodeLike} [node]\n * @returns {boolean}\n */\nexport function generated(node) {\n return (\n !node ||\n !node.position ||\n !node.position.start ||\n !node.position.start.line ||\n !node.position.start.column ||\n !node.position.end ||\n !node.position.end.line ||\n !node.position.end.column\n )\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('./index.js').H} H\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {u} from 'unist-builder'\nimport {all} from './traverse.js'\nimport {wrap} from './wrap.js'\n\n/**\n * @param {H} h\n * @returns {Element|null}\n */\nexport function footer(h) {\n let index = -1\n /** @type {Array} */\n const listItems = []\n\n while (++index < h.footnoteOrder.length) {\n const def = h.footnoteById[h.footnoteOrder[index].toUpperCase()]\n\n if (!def) {\n continue\n }\n\n const content = all(h, def)\n const id = String(def.identifier)\n const safeId = normalizeUri(id.toLowerCase())\n let referenceIndex = 0\n /** @type {Array} */\n const backReferences = []\n\n while (++referenceIndex <= h.footnoteCounts[id]) {\n /** @type {Element} */\n const backReference = {\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n h.clobberPrefix +\n 'fnref-' +\n safeId +\n (referenceIndex > 1 ? '-' + referenceIndex : ''),\n dataFootnoteBackref: true,\n className: ['data-footnote-backref'],\n ariaLabel: h.footnoteBackLabel\n },\n children: [{type: 'text', value: '↩'}]\n }\n\n if (referenceIndex > 1) {\n backReference.children.push({\n type: 'element',\n tagName: 'sup',\n children: [{type: 'text', value: String(referenceIndex)}]\n })\n }\n\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n backReferences.push(backReference)\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: h.clobberPrefix + 'fn-' + safeId},\n children: wrap(content, true)\n }\n\n if (def.position) {\n listItem.position = def.position\n }\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return null\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: h.footnoteLabelTagName,\n properties: {\n ...JSON.parse(JSON.stringify(h.footnoteLabelProperties)),\n id: 'footnote-label'\n },\n children: [u('text', h.footnoteLabel)]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} Options\n * @typedef {import('unified').Processor} Processor\n *\n * @typedef {import('mdast-util-to-hast')} DoNotTouchAsThisImportIncludesRawInTree\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n// Note: the `` overload doesn’t seem to work :'(\n\n/**\n * Plugin that turns markdown into HTML to support rehype.\n *\n * * If a destination processor is given, that processor runs with a new HTML\n * (hast) tree (bridge-mode).\n * As the given processor runs with a hast tree, and rehype plugins support\n * hast, that means rehype plugins can be used with the given processor.\n * The hast tree is discarded in the end.\n * It’s highly unlikely that you want to do this.\n * * The common case is to not pass a destination processor, in which case the\n * current processor continues running with a new HTML (hast) tree\n * (mutate-mode).\n * As the current processor continues with a hast tree, and rehype plugins\n * support hast, that means rehype plugins can be used after\n * `remark-rehype`.\n * It’s likely that this is what you want to do.\n *\n * @param destination\n * Optional unified processor.\n * @param options\n * Options passed to `mdast-util-to-hast`.\n */\nconst remarkRehype =\n /** @type {(import('unified').Plugin<[Processor, Options?]|[null|undefined, Options?]|[Options]|[], MdastRoot>)} */\n (\n function (destination, options) {\n return destination && 'run' in destination\n ? bridge(destination, options)\n : mutate(destination || options)\n }\n )\n\nexport default remarkRehype\n\n/**\n * Bridge-mode.\n * Runs the destination with the new hast tree.\n *\n * @type {import('unified').Plugin<[Processor, Options?], MdastRoot>}\n */\nfunction bridge(destination, options) {\n return (node, file, next) => {\n destination.run(toHast(node, options), file, (error) => {\n next(error)\n })\n }\n}\n\n/**\n * Mutate-mode.\n * Further plugins run on the hast tree.\n *\n * @type {import('unified').Plugin<[Options?]|void[], MdastRoot, HastRoot>}\n */\nfunction mutate(options) {\n // @ts-expect-error: assume a corresponding node is returned by `toHast`.\n return (node) => toHast(node, options)\n}\n","/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record} Properties\n * @typedef {Record} Normal\n */\n\nexport class Schema {\n /**\n * @constructor\n * @param {Properties} property\n * @param {Normal} normal\n * @param {string} [space]\n */\n constructor(property, normal, space) {\n this.property = property\n this.normal = normal\n if (space) {\n this.space = space\n }\n }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n let index = -1\n\n while (++index < definitions.length) {\n Object.assign(property, definitions[index].property)\n Object.assign(normal, definitions[index].normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * @param {string} value\n * @returns {string}\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","export class Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n */\n constructor(property, attribute) {\n /** @type {string} */\n this.property = property\n /** @type {string} */\n this.attribute = attribute\n }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","import {Info} from './info.js'\nimport * as types from './types.js'\n\n/** @type {Array} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n * @param {number|null} [mask]\n * @param {string} [space]\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n if (value) {\n // @ts-expect-error: assume `value` matches the expected value of `key`.\n values[key] = value\n }\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array} [mustUseProperty]\n */\n\nimport {normalize} from '../normalize.js'\nimport {Schema} from './schema.js'\nimport {DefinedInfo} from './defined-info.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n /** @type {string} */\n let prop\n\n for (prop in definition.properties) {\n if (own.call(definition.properties, prop)) {\n const value = definition.properties[prop]\n const info = new DefinedInfo(\n prop,\n definition.transform(definition.attributes || {}, prop),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(prop)\n ) {\n info.mustUseProperty = true\n }\n\n property[prop] = info\n\n normal[normalize(prop)] = prop\n normal[normalize(info.attribute)] = prop\n }\n }\n\n return new Schema(property, normal, definition.space)\n}\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n space: 'xlink',\n transform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase()\n },\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n space: 'xml',\n transform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase()\n },\n properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n","/**\n * @param {Record} attributes\n * @param {string} attribute\n * @returns {string}\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n space: 'xmlns',\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n transform: caseInsensitiveTransform,\n properties: {xmlns: null, xmlnsXLink: null}\n})\n","import {booleanish, number, spaceSeparated} from './util/types.js'\nimport {create} from './util/create.js'\n\nexport const aria = create({\n transform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n },\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n","import {\n boolean,\n overloadedBoolean,\n booleanish,\n number,\n spaceSeparated,\n commaSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const html = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n capture: boolean,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforePrint: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // ``. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // ``. List of URIs to archives\n axis: null, // `` and ``. Use `scope` on ``\n background: null, // ``. Use CSS `background-image` instead\n bgColor: null, // `` and table elements. Use CSS `background-color` instead\n border: number, // ``. Use CSS `border-width` instead,\n borderColor: null, // `
    `. Use CSS `border-color` instead,\n bottomMargin: number, // ``\n cellPadding: null, // `
    `\n cellSpacing: null, // `
    `\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // ``\n clear: null, // `
    `. Use CSS `clear` instead\n code: null, // ``\n codeBase: null, // ``\n codeType: null, // ``\n color: null, // `` and `
    `. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // ``\n event: null, // `